Facebook recently announced React Native, a framework for developing native apps the React way. If you don’t know about React and are into application development, then I don’t know where you’ve been for the past two years.

I don’t have access to React Native and I’m not an iOS developer, but I think I get the picture. React Native promises to bring the flexibility that we’ve had in web development to native environments without concession.

I’ve read a lot about how it’s going to change mobile apps forever. Though I think React Native is appealing, it’s probably not because of the “Native” part.

Some developers argue that web elements can’t match native ones in performance and style, and that’s why React Native is a big thing. They cite Facebook Paper as a reference for a UX/UI that can’t be made in HTML5 for 2 reasons:

  • Native components,
  • Performances.

Facebook Paper is an extremely well designed app, but it’s a freaking app: text labels, animations, images. That’s it. Yes, it’s hard work, but I can’t see what’s really hard to make in HTML5, especially in a React world. And regarding performances, well, you’ve read LinkedIn’s point of view about it (they’ve gone native since then but they confirmed it wasn’t about performances). There may be differences but you’re probably fine. I seriously can’t see why Facebook Paper wouldn’t run in a browser. Actually, it can.

The other major idea behind React Native is “learn once, write anywhere”, in contrast with “write once, run anywhere”. This approach has been thought to work around the idiomatic differences between platforms without erasing them. Tab bars have different roles on iOS and Android for instance. That would explain why web views may sound like a terrible workaround when integrating in a platform. But hey, isn’t Facebook Paper a perfect example of a great app that has no platform-specific patterns? I strongly feel that when there are two implementations of a UI pattern, one of them is absolutely better. Again, I don’t say it’s easy, but there’s a correct approach to “write once, run anywhere” that could happen if UI platform authors worked together, and it’s ok to do it with the best and most popular UI platform that ever existed.

So, back where we started. No, the “Native” aspect is not what makes React Native matter. It’s because it makes the view an actual function of the model, something most UI framework have promised forever but failed to deliver. From that, you can start rethinking your control flow. See this React Canvas idea and wait for a React WebGL in 3, 2, 1…

The authors of React have always considered the Virtual DOM an implementation detail, and we're only starting to understand what it meant.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store