Why You (Don’t) Need a Native App
Tags: javascript, android, ios, reactnative
Published: 2021-11-30 07:13:57

You have a bonkers business idea. You want to optimise the workflow of your company. You want to sell and impress. Sounds like you were thinking of building a mobile application. You get started with some ideas, made a few sketches and interviewed some potential users. One thing was immediately noticeable, no one uses the same device.

---

There are two very different, yet very similar operating systems (OS) for popular smartphones: [**Android by Google** (71.08% market share as of October 2021) and **iOS by Apple** (28.23% market share as of October 2021)](https://gs.statcounter.com/os-market-share/mobile/worldwide). Both allow you to browse the internet, make calls, take photos and install apps. Yet, writing an app for Android or writing one for iOS requires a very different set of skills and much more time, *or does it*?

# Native and Cross-Platform apps

Difficult words, a lot of tech-talk, nerds being nerds. Let's talk pros, cons and differences for you and your users.

{% twitter 1161763916839436293 %}

## Native

The most basic form of mobile application development, writing a native app. This means you are writing an app for an operating system using a programming language that the OS natively understands. iOS uses **Objective-C**, or more recently **Swift**. Android started with **Java** and is also shifting to the more modern **Kotlin** language.

### Why go native?

- **Speed 🏎**

If you really want to squeeze every last bit of performance out of your app, native is the way to go. We're talking the smallest form of time here, but some apps do really profit from bringing content to the user that tiny bit faster.

- **Stability 💪**

Since the programming languages are the same as the OS's, fewer bugs will arise caused by, for example, fundamental changes in OS updates.

- **That one gimmicky feature 🆕**

Writing a native app allows you to use every capability of the operating system on release day. Cross-platform frameworks are catching up well though! So don't let this be the deciding factor.

### Why native sucks

- **Ka-ching, money 💰**

Creating software costs money and creating two pieces of software costs more (basic maths here). If you want your native app to be available in both the Google Play Store and the Apple App Store, you will need to build an app for both OS's. This means, two development teams, both with their knowledge on how to create an app for their favourite platform. I can hear you coming, "But I have found one hell of a coder who is an expert in both iOS and Android". That person will still need a lot more time to build two apps instead of one.

## Cross-Platform

It's in the name; **cross-platform app development allows you to write one app and run it on multiple platforms** (usually Android and iOS, but some are throwing in desktop operating systems as well).

There are quite a few cross-platform solutions around. The most popular frameworks to date are Flutter, Ionic and React Native. Whether your application needs to use one framework over the other is a whole other debate.

Cross-platform does **not** mean you can only use features that are available on all platforms. Most frameworks integrate very well into the native part of the OS. Want to use Face ID? Sure thing. You'd like to preview some data in a home screen widget? We gotcha!

Cross-platform development is not a new thing that only small companies use. Apps from companies like Facebook, Tesla and Microsoft use cross-platform technologies.

### Benefits for choosing cross-platform over native

- **Time ⏰**

If you want to ship fast, go cross-platform. Not only do you need to make just one app, development itself will usually also go quite a lot faster. Some cross-platform frameworks were inspired by web development. React Native, for example, uses a modified version of the React framework for Javascript. Web developers can learn can start working on mobile application development in a matter of days, or even hours.

- **Money 💰**

You need a lot less resources for building only one app. With smaller development teams, the time needed for developing one app will be reduced and the complexity will be lower. Win, win, win.

- **Consistency between platforms 📲**

Since you're not maintaining multiple codebases, what you get on your Android phone is what your friend will get on his iPhone. If you want, you can eliminatie visual differences and make your apps identical on every OS. Whether you should do this everywhere is highly questionable.

### Where cross platform drops the ball

- **UX and UI design 🎨**

Since you are creating an app for both iOS and Android, the "native feel" might get lost in the process. A talented designer and a detail oriented development team go a long way in creating a better user experience. Yet, it is not as convenient and easy as creating a native app.

- **Poor native features integration and customisation 😕**

Some native features need quite a lot of work and research to get them to work nicely with a cross-platform app. You might also need some patience when you want to use that one, recently released feature for the latest and greatest OS. Since the developers for your app and sometimes even the developers behind the cross-platform frameworks require some extra development time.

---

# Conclusion

Unless you can not live without that one latest OS-specific feature, or you can save lives with that tiny amount more responsiveness and speed, you can probably benefit from choosing a cross-platform app.

Cross-platform apps have come a long way since the beginning. They are now faster and more stable, whilst also becoming easier to write and maintain. Even without taking the costs into account, cross-platform apps do bring forward a lot of advantages.

---

Enjoyed this article? [Consider donating me a beer or coffee](https://www.buymeacoffee.com/jakoblierman)!

[![](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k9hurgp3t2umu6indox1.png)](https://www.buymeacoffee.com/jakoblierman)