Your boss comes in your office. You’ve been hearing murmurs about a mobile app project.
Boss: “Hey <YOUR_NAME>, I’m sure you’ve heard about the mobile app”
You: ”Yeah….”
Boss: “Well good news! We’ve decided we’re going to use a Cross Platform Technology! We’re going to save so much time!”
Does this sound familiar to you?
Why is it that business types are so interested in building Cross Platforms apps? Well, they probably believe that by going with cross-platform they are going to see some cost savings. It’s rare to find a business that doesn’t want to support Android and iOS, so doing both in one shot is going to save a little time (which, of course, is money). They probably don’t expect the saving to be 2x, but certainly they expect some savings.
Of course, you might say, there are always other considerations.
Performance
This is the argument that every fan of native apps is going to immediately reach for. “Cross Platform apps are slow”. “You’ll never get good performance”. “Native code is always faster than anything else”.
That being said, if you’re making a game, it probably won’t work in cross-platform. Generally speaking you won’t want to use something JavaScript-y or that cross-complies for a game.
However, I would go so far as to say if you are building anything other than a game, performance is not really going to be an issue you’ll run into. As Josh Morony says, “[Frameworks] are fast, but your code might not be.”
Background activity
If you’re making something that needs a significant amount of logic to run when the user is not using the app, you usually have to write some native code. This is especially true for hybrid solutions like Ionic, which run in a web environment. However in other Pseudo-Native Frameworks, this is less of an issue since it all compiles down to native anyway.
And finally… ### Existing knowledge Why learn a new language if you can avoid it?
Of course I’m not opposed to learning new skills. If you’re dead-set on learning something new or that a new framework is exactly what you need, go for it!
However, If you or someone else who is available in your organization knows native Android and native iOS, why have someone learn an entirely different thing outside of your existing knowledge base? The same goes for any other language.
The bottom line is that the function of software in business is to solve a problem. When solving problems there is very rarely a ‘best’ way to do it, just different ways to do it with different advantages and disadvantages. And for businesses, the advantages you want are the advantages that make you more money. And for non-business organizations, replace ‘money’ with ‘time’.
If you’re still not sold on the idea, try asking whoever is making the decision how they came to their conclusion, or how the decision they’re proposing saves your organization money/time.