Blog Insights
Choosing the Right Technology to Build Your App
Once your organization decides it needs an app, the next step is to determine what technology to use. While it may seem obvious that you need to develop one app for iOS and one for Android, there are a few other options to consider. You can build a progressive web app (commonly referred to as a PWA), a hybrid app, a native compiled app, or a native app. While they may look similar on the surface, there are significant differences between them.
When deciding what route to take, you should first consider what features are critical to making your app a success. While many features are available across the spectrum of technologies, some require building your app in a specific way. For example, if you are making an app that is highly graphics-intensive, building your app using a native programming language of each operating system is the way to go. But, if you are creating a lightweight app and your number one goal is getting it in the hands of users quickly and with the least effort, a Progressive Web App (PWA) may be the best choice.
So, what are the differences between each method? Let’s consider the following three options.
Progressive Web Apps (PWAs)
PWAs are websites that can behave like apps. They are built using HTML, CSS, and JavaScript, just like any other website, but have added features such as push notifications, offline capabilities, and the ability for a user to install your app on their device. PWAs don’t require specialized knowledge, so they are the least expensive to build. And, because they are websites, you can take full advantage of everything the web offers, such as SEO and high discoverability. For many applications, this may be the perfect solution. However, there are many limitations to consider before building a PWA.
The limitations of PWAs are most noticeable on iOS devices, which most likely at least half of your audience uses. On iOS, you cannot use the “Add to Homescreen” feature from Chrome, send push notifications, use more than 50Mb of storage, use background sync, or access Siri, Touch ID, or Face ID. And while this may be ok for many applications, the inability to use Touch or Face ID is a deal breaker for apps requiring security and ease of use. You can expect Apple to provide much better support for PWAs soon (including push notification support in 2023), but, for the moment, it’s still not a fully mature technology on iOS.
Hybrid and native compiled apps
Hybrid and native compiled apps deliver the best of both worlds for many use cases. Both options allow you to build your application using web technologies and take advantage of many of the features available to native apps, but not PWAs. For the most part, this means that the barrier to entry is much lower. With an understanding of native app principles and APIs, web developers can build apps that can be submitted to all major app stores and used on all major operating systems. The primary difference between hybrid and native compiled apps are that hybrid apps are essentially web apps wrapped in a native shell and native compiled apps are built with web technologies but compiled into native apps. Popular hybrid frameworks include Ionic (for mobile apps), Electron (for desktop apps), and Cordova (for mobile and Windows apps). Popular native compiled frameworks include React Native and Flutter (for mobile and desktop apps).
Hybrid and native compiled frameworks allow web developers to create mobile and desktop apps that can be—in many cases—indistinguishable from native apps. However, they still take extra effort to build and test (getting simulators set up for your testing team can be especially daunting). While PWAs are written once and used everywhere immediately, hybrid and native compiled apps require additional steps for each operating system to which they are deployed. Hybrid apps are a good option if you have a website version of your app and want to use much of the same codebase. However, apps created with some hybrid frameworks can have performance issues, and there are still gaps in native API support. The codebase for native compiled apps is only partially reusable for the web, and it may not be the best option for the most advanced applications. But, for most purposes, native compiled apps generally have the same benefits as apps built in native programming languages.
Native apps
Native apps will deliver the best performance because they are built using programming languages native to each device’s operating system, such as Objective-C and Swift (iOS) or Java and Kotlin (Android). Native apps make it easy to use device features, such as: touch and face ID; device sensors; the device camera and file system; native payment systems; watchOS, Wear OS, CarPlay, and Android Auto; ARKit and ARCore; and many other device-specific capabilities. Native apps also have direct access to the UI components, widgets, shortcuts, and other features that make an app intuitive and familiar. In short, native apps will typically be your best choice for graphics-intensive applications, apps that use many device features, and apps where security is critical.
The most significant drawbacks of building a native app are increased time and cost. Because you must build the app in a native programming language for each operating system, you will most likely have to create one version for iPhone, one for Android, or more if you are building desktop or web versions of your application. Creating versions for multiple platforms typically requires a separate developer—or team of developers—with specialized knowledge for each, causing native apps to be more expensive and time-consuming. These specialized developers or teams must also update and maintain native apps.
How to choose which framework is right for you
In addition to deciding what features are essential to making your app a success, you should also consider the effort required by your audience to discover and acquire your app. Audiences will typically only download an app if they believe they will use it frequently because it delivers the functionality they need and does it better than other apps on the market. Apps take time to download, and users are often cautious about downloading anything that will take up precious storage space. And with millions of apps available and dozens of apps cluttering users’ devices, your audience needs a good incentive to download yet one more app. Therefore, even some of the biggest brands use PWAs for at least part of their mobile ecosystem.
If you are sure you need an app with at least a native wrapper (making it downloadable from each of the major app stores), you must weigh the pros and cons of each solution. A hybrid or native compiled app will fit the bill for most use cases. In our experience, native compiled apps are in the sweet spot of being lower-cost while delivering the look and feel, performance, and functionality of a native app. If you are unsure which route to take or are looking for someone to build your PWA, hybrid, native compiled, or native app, drop us a line!