4 ms·
I have tried hybrid/cross-platfrom development route many times. It's not as rosy as it seems on paper. In terms of maturity there only 3-4 options out there an
by pritambarhate 10y ago
I have tried hybrid/cross-platfrom development route many times. It's not as rosy as it seems on paper. In terms of maturity there only 3-4 options out there and each of them have their own set of problems and gotchas.
Out the 3-4 mainstream ones, I am quite familiar with
Cordova / PhoneGap
Xamarin
The main problem that I see, is the lack of ecosystem support for both of these. For example, you want to use latest features of a third party SDK, you find out that they only have native libraries available. Then it falls on your plate to create the JS or C# wrappers for these native libraries. This calls for a specialist who has experience in writing these wrappers. There are not that many people who have experience with this. So it also ends up being expensive.
Another problem is that the "idea" / "visionary" people don't understand the limitations of the cross platform development. They keep coming up with user experience demands which don't really fit well in the cross platform sense. When you the programmer tell them that it's very time consuming to do it in the chosen technology, they refuse to understand and argue a lot citing examples from other popular apps. Most of these popular apps are from companies who are very well funded and have access to extraordinary programming talent. They undertake creation of custom components/frameworks as part of their app development. This is really not possible for small agencies / small startups.
In the end the cross platform approach always ends up making up some compromises. If the senior management of the product understands the compromises and is wiling to live with it only then it works out. Still from time to time, there are discussions about whether "right" technology was chosen when you find a limitation of the chosen approach which makes a new "groundbreaking" feature very expensive to implement.