Choosing the right mobile technology approach for your project is extremely important. Should you go with native iOS or Android? A new cross-platform technology? A responsive web app? You don’t want to lose half of the potential audience by only building for one platform, but you have a limited budget. And you don’t want to invest in a technology that could disappear, or limits what your app can do, or, worse yet, has a very small pool of skilled developers who can help you.
While this is a complex decision, it’s not an impossible one. Each technology has strengths and weaknesses, and a good consultant can help you understand the tradeoffs to make the right choice for your project. I’ll explain the pros and cons of each approach, along with the types of mobile apps where it fits best.
Most Powerful/Expensive: Native Mobile (Android & iOS)
Native mobile apps are built for a specific platform, using platform-specific programming languages. For example, native Android apps are written in Java, and iOS (Apple) apps are written in Swift. (Since these two platforms make up roughly 98% of the US marketplace, they’re the ones we’ll consider today.)
Pros
Native apps can be optimized to the platform, so they’re great at processing large amounts of data. They run smoothly and quickly, which is essential for apps with heavily animated UIs. They also give designers the ability to create the best user experience by tailoring the user interactions to the platform’s standards.
Cons
Unless you want to ignore a large part of the market, you have to create two separate apps: one for iOS and another for Android. Expect this to double your initial development costs. This will also increase the cost of long-term maintenance and support. Add building and managing a companion web app for user signup and support, and you can see why this is a costly direction to take.
It also takes much longer to make changes and publish the apps for your users. This means the development cycle is much longer to get feedback and update for your mobile apps.
Best fit
- Complex apps where the user experience is key to success (e.g. games)
- Apps that require heavy data processing
If you know that you need native apps but are exploring the marketplace for your product, you will want to start with an iOS app first. Once you’ve found the market is receptive to you product, you can build the companion Android app to broaden your user base.
Least Powerful/Expensive: Responsive Web App
On the opposite end of the spectrum is the web app that works in a mobile phone browser. If a web app is built with responsive web design, its layout will adjust to fit the screen size of the user. It’s quite easy to create one website/app that works for desktop and mobile users.
Pros
This is the fastest way to get something new into the marketplace. The startup, maintenance, and support cost are much lower than a native approach. And there’s only one version of your app to manage and support. This means the cycle time for reacting to feedback and bugs is very fast. Often, you can publish changes multiple times a day.
Cons
All computation will be done on the web server, not within the phone itself, so performance will be much slower than it is with a native app. And because users are using a browser, the user experience won’t match what users are expecting of a mobile app. In addition, a responsive web app won’t be able to consistently access some of the phone’s hardware features, such as the camera or geolocation data.
Best fit
- Tight budgets
- Relatively simple interactions
- Apps where the majority of data processing can be done on the server, not on the phone/tablet itself
If you’re thinking of starting a business around a mobile app but not sure if there is a market for it, this is a great first step to test your idea. Its low cost and quick feedback will let you test your product before making a significant investment.
The Middle Ground: Cross-Platform
Cross-platform mobile apps are written in one common software which gets converted into one kind of software for the iOS device and another for the Android device. They combine the performance and experience found in a native mobile app with the affordability of a web mobile app.
This approach continues to evolve and could become the preferred direction for mobile app development in the future.
There are two recent big players in this space:
- Xamarin is an established cross-platform tool, written in a Microsoft language (such as C#) using Microsoft tools. When it’s time for the app to run on a specific platform, a compiler creates either a native app or something very close to it (e.g. integrated .NET application and runtime). Because of the separation allowed in this approach, Xamarin can create mobile apps beyond just iOS and Android platforms.
- React Native is a newer approach, developed at Facebook to use the best of native mobile and responsive web approaches. By combining the speed of JavaScript with a new way of rendering web pages, it provides an experience that is flexible and close to a native mobile app.
Pros
This method creates only one code base, eliminating the complexity of living with two in native development. As a result, your development costs will be much lower. For relatively simple mobile apps (e.g. business apps showing charts and having forms), the resulting app performance is near that of native mobile apps. The user experience is also close to that of a native app. And it’s possible to access all the features of the mobile device (camera, GPS, etc.).
Each tool has particular advantages:
- Because it’s built in .NET, Xamarin is a good fit for large organizations that already use Microsoft tools as a standard and have in-house C# or .NET developers.
- React Native uses JavaScript (one of the fastest and most widely-used programming languages), which means it’s easier to find developers with the appropriate skills. And because it’s based on JavaScript, developers don’t have to compile the code before testing it so they can work faster and more efficiently.
Cons
Mobile apps with lots of UI code will be platform-specific, so rich, complex UI development is pointless. To get around this, you can develop native components, but once you start down this path, you begin to lose the benefit of having one code base to manage.
Each tool also has particular disadvantages:
- Much like native development, Xamarin requires developers to compile all code changes before testing them, which is time-consuming.
- The community for React Native is new, the tool is still evolving, and some documentation is lacking.
Best fit
Cross-platform apps offer a great middle ground between native and responsive—in terms of user experience, processing power, and price. That makes them suitable for:
- Apps that need to manage data and provide a good, but uncomplicated, user experience
- Minimal Viable Products (MVP) and simple prototypes to test out ideas for new products
- Apps that need to integrate with enterprise systems or will be used for B2B needs (Xamarin)
React Native is a newer technology, so we’re assessing where it fits best. We believe it has a very strong future; recently, we implemented it on a mobile app that required faster UI speed than Xamarin could provide, and we had great success.
Choosing a Technology Approach
There are a myriad of ways you can approach a technology project. Start your strategy with knowing your market, your performance requirements, and your budget.
With each new advance in technology, the mobile platform will continue to evolve. And nobody knows what the tool landscape will look like in a few years. So build for the solution you need today, not one you feel you might need in the future.
When you’re ready to talk to an expert, Atomic is there. Our unique budgeting process and strong technology breadth can help you establish a smart mobile tech strategy and take the first step toward creating a successful product.
good to know that
Nice blog! You merely marked the tradeoff between which mobile technologies one should use to start their mobile project along with their pros and cons. The Middle Ground – Cross Platform apps are quite a good idea for working on mobile projects. It’s a combination of two apps, first is, the native app that combines its performance and experience and the other is a web app that is affordable. Moreover, as it is close to a native app, one can easily access all the features like camera, GPS, and much more quickly yet economically.