When we’re in discussions with a client about developing a new mobile app, it’s usually not long before the question comes up: “What technologies do you want to use for this app?” Some clients may have already selected the technology they prefer, and normally that settles the question — we use what they want to use. But when the client doesn’t have a strong point of view on this, they normally ask for our recommendations.
Sometimes I get a chance to talk with other mobile development shops, and I’ve found that some of them consider the choice of technologies to be a religious matter. Some say they WILL NEVER use a cross-platform development tool. EVER!” Cross-platform mobile development tools (e.g., PhoneGap, Xamarin) allow developers to create an app and, with minor modifications, release it for various mobile platforms, such as iOS and Android. So what is this baggage that cross-platform tools are being asked to carry around? Why are these purists so fixed in their positions against these tools? We’ve found that there are many projects where cross-platform tools are an appropriate choice. Although there are some cons, as well.
PROS of CROSS-PLATFORM TOOLS
Reduced Development Cost (and Time) — Cross-platform tools let the developers reuse much of their code for various mobile platforms, so assuming you want an app that works on both iOS and Android (and possibly Windows Phone) then there’s less development work to do using a cross platform tool, as opposed to native tools. Using cross platform tools, we find we can typically save 70% of the development work on a second mobile platform, having developed the first one in a cross platform tool (although your mileage can vary, depending the app).
CONS of CROSS-PLATFORM TOOLS
Not all Native Features are Accessible — Xamarin has a good record for “zero-day” support for new features from Apple and Google. But with other cross-platform tools there’s still some concern that Apple will announce some great new feature and your developers can’t access it for a while, until the tools vendor gets around to supporting the new feature.
Worse Performance & Size — Cross-platform tools might be slower than native tools because the tools generate code that may not be as efficient as the code a really good native developer might write. That said, we’ve had good experience with Xamarin’s performance. A related issue is the app size. Sometimes we find that a cross-platform app might end up larger than a well-written native app would have been. The cross-platform developer has less control of the code than a native developer, so you might need to accept this, or do some work to slim down the app.
One other issue we should discuss is the user experience for various platforms. You might think that by using a cross-platform tool, you can take an iPhone app and, in no time, generate an Android app. But when you consider what some experts say about the user experience approach to Android vs. iOS, you’ll see that they recommend putting the app controls in totally different locations on the screen (see this great article by Josh Clark): Android app navigation and controls at the top, and iPhone app navigation and controls at the bottom. If you expect to create a cross-platform iPhone app and just turn around and do a quick port to Android, you might find you’re not providing the optimal user experience. But perhaps the tools you select really aren’t the main issue here. It’s not the cross-platform tool that’s forcing you to do the “wrong” thing. You can create a bad user experience on any platform, with any tool!
OK, so given all of this, how should you choose the technology for your app? It depends on your business requirements. We feel that cross platform tools are a reasonable choice if:
- You’re cost sensitive and want the savings of cross-platform tools
- You definitely plan to release the app on multiple platforms, now or in the future
- You are developing an application that has “normal” business app functionality, which isn’t pushing the envelope of “bleeding edge” design, visual effects, and speed of performance.
Actually, we find that many apps meet these characteristics. Consider a typical business app. You want to get some data from a server, allow a user to view it on a mobile device, edit it, and save it back on the server. This is going to be really useful for your users, but in truth, you’re not really pushing the envelope of what’s possible, these days. And eventually, you’ll probably want the app to have both iOS and Android versions. So a cross-platform tool is probably a good choice for you.
Conversely, if you’re developing something that is really performance intensive and which, therefore, requires the maximum of developer control, you should consider native development. It’s going to cost you a lot more to develop — almost double, probably — but if your application really demands this then you have no choice.
Meanwhile, if you’re creating a game and need “bleeding edge” graphics for it, you can still use a cross-platform tool — Unity. Unity is a tool that’s great for game development, and you can publish the game to multiple platforms: iOS, Windows, Web, Android, etc. Each platform requires a little extra work for development and QA, but really, it’s pretty reasonable.
So in summary, at CayugaSoft, we don’t agree with some in the industry, who say that you need to use native tools, and nothing else. We feel it’s worth taking the time to think about your application and think about which tools are best, and select one that offers the best mix of capabilities and cost for you.