If you’ve ever looked to have a mobile app built, you’ve probably come across websites (like our own) that mention building “cross platform” apps. If you’re looking to publish your app on Apple’s App Store, and the Google Play Store, this might sound pretty straightforward: they build apps for iOS and Android!
But let’s dig into what “cross platform” can mean…
Okay. Because this is what I know best, I’m going to start in the context of éphémère creative first. Many of our clients are early stage startups, and small organizations. That usually means they need things built quickly and on a pretty tight budget. That being the case, our “cross platform” workflow involves tools like React Native. That gives us the ability to write code once, and generate both Android and iOS apps with that code. So when a developer says they can build “cross platform” applications, they might not be building iOS and Android apps from scratch.
Ok. Great. More efficient! What does that mean for me?
There are a variety of tools that allow you “code once, deploy everywhere” (or at least deploy to 2+ platforms). They each come with advantages and disadvantages over using the native development languages associated with each platform. Here is a very broad overview of a few popular tools (though there are many more than I don’t have the time to cover here):
PhoneGap / Cordova / Ionic
First off, Cordova is the core technology that backs these three. Essentially, what it does is run code in a browser window and gives the developer tools to connect to some of the native systems, like notifications, sensors, and more. Because they run the same kind of code that runs in the browser, they have the advantage that developers can reuse code that was written for a web app. For example, if you already have a “single page app,” you can reuse much of the same code with few, if any, changes. However, performance is rarely as good as apps written with native code, particularly if there are any animations or complex media. Check them out here: PhoneGap, Cordova, Ionic
React Native is currently our favourite tool to build cross platform applications (though we’ll happily use other tools, depending on what the project requires and what we’ve been testing internally). The main reason we currently prefer React Native is because we can reuse some of the code we use in web applications, and only rewrite the (generally smaller) parts that generate the user interface. The advantage of React Native over tools like Cordova, PhoneGap, and Ionic is that it generates native user interfaces, which means the user experience is generally much better. The advantage over tools like Xamarin is that you can reuse a lot of web code if you were building a web app with the web version of React. The main disadvantage of React Native is that there are some limits to certain kinds of animations you can make nice and smooth.
Should I have each app built separately, then?
That really depends on your needs. For a lot of apps, these kinds of tools will be more than enough. If you’re building a game, there are game-specific tools, like Unity or Unreal. If you need a more complex application that might need a lot of animations, then it might make more sense, though using Xamarin would probably work well for you too in that case. Of course, you’ll also likely need a significantly larger budget.
If you’re on a budget, or if you don’t need an app with lots of animations, these tools should be more than enough! If you need help, please shoot us a message!