React Native is a relatively new and exciting technology. Designed by Facebook, but used outside their ranks, it is gaining traction from both web developers and traditional native app developers for its simplification of native development. Facebook describes it thus:

React Native lets you build mobile apps using only JavaScript. It uses the same design as React, letting you compose a rich mobile UI from declarative components

This is a lofty goal which React Native certainly achieves, but like most things it‘s not as simple as it sounds. As a result it ends up as a good solution to the wrong question.

So what is the right question?

How do you make a high quality and consistent mobile experience cross platform?

With more and more users using mobile devices, this is certainly an important question to ask. Gone are the days of desktop dominance; mobile users are now the primary internet consumer.

How does React Native answer this question?

How does React Native fail to answer this question?

React Native answers our question — for the most part. It enables you to create a high quality and consistent mobile experience, but, crucially, it falls down on the cross-platform part

It’s a good answer… to the wrong question. So, what question is it answering?

How do you make a high quality and consistent cross platform native app?

Why is this the wrong question? Because, in my view, building two native apps for different platforms (iOS/Android) is dead.

This is why React Native isn’t a good solution to mobile first development. It doesn’t think big enough!

React Native achieves abstraction of native apps; Progressive Web Apps try to abstract mobile development.

Progressive Web Apps

Progressive Web Apps as described by Google:

Progressive Web Apps are user experiences that have the reach of the web, and are:

This new level of quality allows Progressive Web Apps to earn a place on the user’s home screen.

Basically PWAs are websites that look and feel like a native app and can even be saved to your phone for offline use.

Mobile Development Evolution

Why Progressive Web Apps will win over React Native

React Native isn’t superseded yet, it can still do a lot of things the web cannot do, but the web is getting better and better.

Both Progressive Web Apps and React Native are still in their infancy, and they both have their problems. However I think PWAs will become dominant, as they initially have fewer problems than React Native.

React Native Problems

React Native suffers from the fact that you still need to build a website. ReactXP and React Native for Web try to solve this problem by adapting your React Native solution for use on the web, but this seems like doubling down on React Native (and all of its problems). Not only will you have to deal with React Native’s issues; you have web problems to fix as well. Why reinvent the wheel, React already exists and has a large community and support around it.

Progressive Web App Problems

Progressive Web App Examples

https://pwa.rocks/ has a lot of great examples of PWAs, including some large companies that have already adopted PWAs as the way forward. These include AliExpress, Twitter and Forbes. You can read more about each of these companies on the PWA showcase page. My favorite is Pokedex.org.

Gotta Catch ’Em All

The problems that React Native poses are harder than those of Progressive Web Apps. PWAs also have a significant amount of development behind them already as they aren’t a new technology, they are just a really good mobile app written in React or Angular. This means that all the great libraries that already exist can be leveraged to build your app; you won’t have to make a new dialog, just use the Material-UI one. Google provides plenty of resources to help you build your new web app to be a PWA, such as the Lighthouse tool and this checklist.

The Future

Right now, if you can make an iOS and Android app, React Native is a great solution — it halves the amount of work required. However if android/web is your main user base, PWAs are the way to go — and the tools to make them exist right now… Hopefully iOS won’t take too long to add proper support for PWAs, so that you can roll it out to them as well.

So what was that question again? The right one, not the wrong one:

How do you make a high quality and consistent mobile experience cross platform?

If you want to answer this question, with the best user/developer experience and the smallest cost, then my money is on Progressive Web Apps.

Further reading & Resources

Why “Progressive Web Apps vs. native” is the wrong question to ask_Updated April 2017_medium.com

SE-Radio Episode 300: Jonathan Stark on Mobile App Development_Nate Black interviews Jonathan Stark on Mobile App development. Topics include: platforms for mobile development…_www.se-radio.net

Lighthouse | Web | Google Developers_Learn how to set up Lighthouse to audit your web apps._developers.google.com

Native Apps are Doomed_From now on, I won’t be building any more native apps. All my apps going forward will be progressive web apps…_medium.com

The surprising tradeoff at the center of the question whether to build a Native or Web App_The choice to build a native app over a website is often made because apps “feel” so much nicer than web sites and that…_medium.com