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.
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,
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. Those who say it can’t be done shouldn’t interrupt those who are doing it.
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.