Pros & Cons of a Unified Tech Stack in Mobile

July 17, 2018

React Native helps app developers create a unified tech stack, but the framework has both positives and drawbacks.

The emergence of mobile technologies has fundamentally transformed the tech industry and generated additional touch points with consumers who need to be served on demand.

Those benefits, however, came at a great cost for developers.

Deploying a mobile app that works across all devices is a much more complex initiative than building a standard website because the tech stack (all the technologies used in the project) is much more fragmented.

This challenge makes building great mobile apps difficult for developers.

The Consequences of Tech Fragmentation

One of the biggest struggles in mobile development is tech stack fragmentation. Every mobile platform (iOS, Android, Windows) has its own tech ecosystem and preferred technologies.

Some of the consequences of tech stack fragmentation include:

  • Expensive and complicated development
  • Difficult communication
  • Problems with large teams

Expensive and Complicated Development

Developing mobile apps for a widespread audience often meant running three to four separate projects for iOS, Android, the mobile app backend, and even Windows.

This caused mobile app projects to be very expensive initiatives compared to websites or apps for just one platform.

Developers struggled to avoid potential project failures because the work was done in separate silos, or different management systems for different platforms. Communication issues often led to project failure.

Difficult Communication

iOS, Android, and backend projects are typically separate development silos. Developers could try to talk to each other and collectively solve problems, but they wouldn’t speak the “same language” because their native coding languages were different (such as Kotlin for Android, Swift for iOS, Ruby for backend).

This multiplied potential blockers and slowed down the deployment process. It also took away the ability for developers to code together to solve platform problems in real-time.

Problems With Large Teams

From a team management standpoint, running a separate project for a separate platform meant bigger teams and more dispersed communication, which often resulted in too much time spent on aligning how to build stuff instead of actually building it.

Bigger teams also meant more management problems, such as developers of one platform complaining that the other is lagging behind.

Finally, bigger teams meant higher development costs.

Overcoming Tech Stack Fragmentation With React Native

There were multiple attempts in the industry to alleviate tech fragmentation pain. It started with “hybrid” development platforms, such as PhoneGap, that were selling the promise of using HTML5 code once and deploying it to all platforms.

This effectively meant creating a website-like structure inside the mobile app that looked like mobile web with some interface adjustments so that it pretended to look like a mobile app.

This obviously could not result in optimal performance for elements like screen-loading time and could not produce an appealing user interface – all bad for user experience.

This period of limbo lasted until 2015 when Facebook created React Native as a mobile development extension to its web framework, React.js. The platform could no longer stand having to maintain separate codebases for individual platforms and wanted native-like performance under cross-platform development conditions.

Apps created in React Native can have great UI and native-like smoothness.

React Native example

The “magic” behind React Native is that it uses JavaScript code as a programming base and through Virtual DOM transfers it into chunks of code recognized as native by iOS, Android, and Windows platforms. Virtual DOM basically does “behind the scenes” work to deploy JavaScript code to function as native code.

Now, React Native is one of the most promising native-like cross-platform solutions used by both startups and big players such as Facebook, Airbnb, Skype, Spotify, Uber Eats, and Instagram.

Uber Eats React Native app

Creators of apps like Uber Eats use React Native to create a successful cross-platform app.

The Benefits of React Native

What are the strategic takeaways when considering React Native as a reliable mobile app development platform?

React Native uses JavaScript as major programming language. Developers may also use JavaScript to build backends and web front-ends using the core React web framework.

JavaScript can therefore be a unified tech stack for all platforms, thus allowing the formation of a truly cross-functional team, the “JS Family.” Such teams speak the same coding language and can help each other in real time – platform silos are almost eliminated.

The “JS Family” team is typically smaller than native mobile teams, which minimizes unnecessary communication and increases collective focus and shared understanding. This typically shortens the production cycle and makes that process more meaningful at a significantly lower development cost.

Drawbacks of React Native

There are some things to watch out for in order to establish a successful “JS Family” in mobile:

  • A JavaScript unified tech stack may sound like a low-entry barrier to be able to develop mobile apps. However, without a deep understanding of the specifics of iOS, Android, and backend platforms, you will never be able to build outstanding mobile experiences.
  • You cannot put JS web developers onto a React Native project with the hope that they will somehow “get it.” Web-first development companies may require significant time to learn the best practices of building mobile apps despite their strong React.js or JS knowledge.
  • Being able to write some code in React Native is one thing, but knowing what to write to be successful is a separate skill.

React Native also represents an “abstract layer” on top of the native framework, which causes issues like not always being up-to-date with Google and Apple updates.

Sometimes there are also React-specific challenges that normally would not be present in native environments. One example of such a challenge is app navigation, which is governed by different rules in iOS and Android.

React Native sits “on top” of both iOS and Android, and thus it is difficult to create navigation that is functional on both platforms and uses as much native elements as possible.

Another challenge is the React Native platform itself – it still isn’t as mature as the native iOS and Android platforms, so the number of stable reusable components (libraries) is significantly lower and those that can be used are often not sufficiently supported by the developer community.

Using a Unified Tech Stack

Using a unified JS stack may be a promising tactic to transition native mobile companies and native mobile project teams into a fast-paced, efficient, and more cost-effective method of innovation for their products.

Transitioning the former “hardcore native” mobile experts into “JS Family” is effective for a lot of high-performing mobile apps these days like Uber Eats or Bloomberg.

The big question is: Will React Native JS work for your business when building a mobile app as well? It seems there is enough evidence in the market to at least try.


About the Author

Headshot of Peter MezykPeter Mezyk leads one of the world’s most forward-thinking and established mobile development firms, Nomtek. Listed by Clutch as one of the top 10 firms worldwide, Peter’s focus on business value and lean approach ensures that firms drive real scalability and profitability in their m-commerce businesses.

 

Compare Top Mobile App Development Companies

CHECK OUT THE LEADERS MATRIX

See how app developers compare in the industry to find the best fit for your business.

VIEW THE MATRIX >