So you want to use React Native to power mobile apps...

So you want to use React Native to power mobile apps...

I have answered this question for various clients. I have experience building applications in multiple stacks and so I can compare and contrast a few of them in their current states.

I have a lot of requests for React Native development. It is in high demand and is quite popular in the current market. It is work I willingly do for clients that have already chosen this road. However, when asked for my opinion on their technical direction I recommend against using it.

If you are looking for an efficient method of using one code base to hit multiple platforms. A goal I find to make a lot of business sense. I recommend a straight HTML5 approach to mobile apps. I advise this route for about 80% of my clients as it serves their needs best. It checks a lot of important boxes that meet their business cases and does so for less impact to their bottom line. It's not a 'hip' solution, there are few, if any, major or popular companies promoting HTML5 standard for mobile. And ever since Facebook famously abandoned it in favor of native development back in 2012 it seems to have slowly declined among the 'hip' developer's mind share. All while it has quietly improved, phones have gotten a lot faster, and it has consistently had solid support for a long time.

Why not a hybrid platform like React Native?

The biggest glaring issues are the platform maturity and developer experience. React Native has some beginnings of excellent tooling and clearly there has been a significant amount of effort behind it. It is, however, not "there" where platform bugs are far and few between and relatively minor with respect to the impact they exert on your application and the required upkeep hours. I've used professional grade development environments for over 2 decades. I know what good tooling feels like. React Native scores poorly. In contrast, HTML5 has excellent and mature tooling for development. Browsers have relatively good compatibility (especially compared to years past), and the inspection and plugins suites are excellent.

With all major frameworks, long term outlook and maintenance of the framework must be factored in it's use in major company infrastructure. Facebook is the prime mover behind React Native. Right now Facebook is embroiled in political controversies, struggling to recruit, and is having public leadership turmoil. I don't think Facebook is going to disappear, but the volatility is a concern. This is not an environment I really want to trust for important long term investments. It's true that React Native is an open sourced project, so it may well survive Facebook's turmoil or even abandonment. This environment still does not inspire confidence in me and I believe that it's chances are rather poor if Facebook ceases support for it.

Next we have the available labor pool. It is much easier to find HTML5 devs than React Native devs. Short term and long term staffing is clearly much easier on the HTML5 side of the fence and will be for the foreseeable future.

Metrics on React Native vs HTML5 fall in favor of HTML5. My experience with production applications are as follows on my hardware (Samsung S5 Active running the latest Android OS, it's older but serviceable).

Application cold start for two applications of similar complexity, React Native: 3 to 5s (varies), HTML5: 3s. I have a simple HTML5 app with no network requirements that loads up in 1.5s. Slight edge to HTML5 here, but pretty similar overall.

Application feel overall with similar complexity is so close that I can't really tell the difference. It's dominated by backend latency, request time, technical design and architecture decisions, not local render speed.

Bundle size for apps of similar complexity, React Native 27MB. HTML5 2.4MB. Really big difference here, and the biggest that will be visible to the end user. The minimum sizes of both approaches are about an order of magnitude different. When every byte counts on a mobile network, especially for updates, this really matters.

要查看或添加评论,请登录

Brandon Mansfield的更多文章

  • Offline web application design

    Offline web application design

    Offline functional applications require a different way of data management than traditional web design. The client must…

  • In need of the Software Architect

    In need of the Software Architect

    There are a myriad of potential pitfalls when selecting languages, frameworks, tools, and architectures for new…

  • Vue.js and Quasar

    Vue.js and Quasar

    Every good project starts with a suite of tools. Good tools make for quick, quality, and enjoyable work.

  • Feathersjs in web and mobile

    Feathersjs in web and mobile

    Feathers is a really excellent back end platform. It checks a lot of boxes for me and I would like to explain some of…

  • In Pursuit of Productivity: The Numbing Cycle

    In Pursuit of Productivity: The Numbing Cycle

    You stare at the computer screen. Knowing that you need to get that next card completed in the current sprint, but…

  • Development career development

    Development career development

    I'm sorry Mr Smith. We can see that you are a reliable employee, having worked at Acme Inc for 15 years.

  • Development Fads

    Development Fads

    I've been in professional development for about 17 years. If you add in classroom and hobby development that number…

  • Building performance on modern platforms

    Building performance on modern platforms

    Making programs fast has always been an interest of mine. Most of us have seen that system that a small breeze can…

  • My road to be a contractor and company owner over full time employment

    My road to be a contractor and company owner over full time employment

    I won't lie to you and say that being a contractor has been all roses for me. It hasn't! My reasons for making the move…

社区洞察

其他会员也浏览了