Friday, March 27, 2015

On React Native and other 3rd Party Mobile Frameworks

A couple days ago, Facebook released their React Native library to what seems like large fan-fare.  There have been many of these frameworks released over the years, Three20, RubyMotion, etc.  The main purpose they seem to serve is to lower the bar for developers to get into mobile.  That's a great thing, there's a fairly high learning curve to beginning Android or iOS.

If you are going to maintain a production application for any meaningful length of time, I've found using these to be a major hindrance.  In the last five years, mobile has evolved considerably.  Android and iOS have had multiple design overhauls.  Through this, the SDK components have remained relatively stable though.   UITableView and ListView have changed very little since the first OS versions and are still the cornerstone of most interfaces.  NSURLConnection and HttpURLConnection have continued to be consistent and reliable.  Apple and Google have maintained compatibility of most API's while also improving the performance and functionality.

On the other hand, nearly every 3rd party library I've worked with has broken compatibility with earlier versions.  It's great to be able to get up and running fast, but it's huge hinderance to maintain.  Long migration guides are a pain.  Sometimes libraries get completely deprecated.  Even with a careful integration of dependencies, it's very difficult to remove a library that your app relies heavily on.

If you're looking to get started with mobile or build a hobby app, these tools are great to get you up in running.  If you want to support something long-term, stick with the SDK as much as possible.