Why we chose React Native to build the Omnia native mobile app

Why we chose React Native to build the Omnia native mobile app

TL;DR

  • React Native leverages our existing React modeling
  • Extends the same APIs and services infrastructure
  • React Native developer ecosystem has matured and stabilized
  • Allows our team to stay small, full-stack, and function across clients

We have been writing software for Omnia since August of 2018 with the strategy of having Omnia's initial product being a web app.  There are many reasons why web-first was a clear choice, but the simple summary is that we could develop, iterate and deploy fastest and most frequently through a web app.  A native mobile app would have its place in our product portfolio, but not until we had honed in on product-market fit through the web.  In addition to being able to develop faster for the web, the Omnia brand was completely new and the web and SEO provided many more avenues of getting the word out about Omnia.

Up until November 2021, our engineering team had been me and one very talented full-stack engineer who is also a frontend expert.  We architected and built out the platform choosing React for the web app and Ruby on Rails for the API.  There's more nuance to the stack, but at its core, Omnia's app is a React app that uses APIs.

In October of 2021, we were fortunate to add a very talented and unusually technical Head of Product in Mark Prondzinski.  With Mark at the helm of product, we quickly green-lit the development and design of our native mobile app.  While Mark got busy getting the app mapped out and designed from a UX perspective, I had to decide which approach we would take in building out the native app.

A native mobile app was always in the cards for Omnia, the only question was timing.  We had achieved enough product-market fit to have the confidence to expand into native mobile.  But we still had miles to go on the web and needed to keep iterating on that product in parallel to the app.  To do native mobile right we needed to be on iOS and Android which would mean two additional code bases and two very different engineering disciplines.  That would mean at least tripling our engineering headcount and forking into two new platforms of development that would largely be on their own islands.

One of the biggest mistakes a startup can make is believing in silver bullets when it comes to anything related to technology.  The belief that by merely selecting the right shiny object the rest of the business and product development will magically fall into place.  Native app development has a history of failed frameworks that promise a 2-for-1, cross-platform development.  Build once and compile an app binary magically out to iOS and Android.  PhoneGap and Xamarin come to mind.  No serious consumer-facing app can be developed using a cross-platform framework like that in the long run.  But it's impossible in today's developer environment to not come across modern native app frameworks that offer some of the same promises that the 2-for-1, cross-platform frameworks used to promise.  React Native and Flutter are two of the most popular in 2022.

Another big mistake startups can make is trying to act bigger than they are.  Following the lead of large engineering organizations is never a good idea for a small startup, especially a startup that doesn't aspire to ever have a huge engineering headcount.  My vision for Omnia's engineering team has always been to stay lean and mean.  We'd be Navy Seals vs a million-man army.  But when you're considering how to build native mobile apps in a modern way, you almost always come across very thorough and insightful articles from the big guys.  In the case of React Native, you have two sides of the coin: Airbnb seeming to move away from React Native ("Sunsetting React Native") and Shopify seemingly going all-in on React Native ("React Native is the Future of Mobile at Shopify").

So if I just said that two of the biggest mistakes a young company can make are 1) falling for a silver bullet and 2) choosing a solution because it worked for a much larger organization, then why the hell did Omnia decide to use React Native as the framework for building out their native mobile app to launch in May of 2022?

Let me explain our thinking, why React Native is right for us and why we believe we are set up for success.

Leverage What Is Working

We have three years of web development and deployment under our belts using the React framework.  We've absorbed a lot of bumps and learnings along the way. We have also found a lot of very successful strategies within the React framework. Extending React to React Native allows us to keep a single mental model when it comes to building out clients.  There is no context switching with Javascript as a single language and there will continue to be opportunities to share code as it makes sense.

APIs Can Keep Doing What They're Doing

Because the API consumption patterns are the same on the web and native mobile app, the process of scaling and optimizing the APIs has already begun as we have grown our business and usage on the web app has skyrocketed.  Adding on the native app traffic will allow us to continue using similar scaling patterns and strategies.

In addition, as we write more ML against our data set to further refine personalization, existing APIs can be enriched and new APIs can be stood up and made available to both the React Native app and the React web app.  The shapes and methods of the APIs can remain consistent between the two.

Mature & Stable Developer Ecosystem

React Native in 2022 has a developer ecosystem that has matured enough to support and outline a clear path for building an app.  Even Airbnb who in 2018 rattled everyone's cages by announcing they were reinvesting all of their efforts back into native, today maintains several open-source contributions for React Native.

In addition, commonly-used developer tools have broadened their support to include React Native.  For instance, a build pipeline can easily be stood up using CircleCIGitHub ActionsExpo EAS.  Only a few years ago, setting up this type of workflow was extremely challenging.  Now there is enough participation from developers building out React Native apps that there are multiple options for quickly standing up CI/CD pipelines to get up and running.

Team Member Agility

Keeping Omnia's engineering organization small lets us quickly adjust our focus to concentrate on whatever needs to be done.  Agility is an overused term, but it truly is one of the most important traits of my team members.  We want to always stay fluid and cross-functional.  Omnia engineers have the ability to legitimately contribute across the stack and platforms.  Full-stack development is also an overused term, but we genuinely walk that walk here at Omnia.  Our team members have the autonomy to work on the feature and problem that needs the most attention.  React Native isn't a silver bullet that magically makes features cross-platform, but it does provide engineers at Omnia the ability to maximize their efficiency and have free reign across platforms.


Come Work With Us

The launch of v1 of the app is just the start.  We are hiring.  We are looking to add a React Native engineer to our team.  This is an opportunity to own mobile engineering and join a fast-moving and exciting team and company.

Is UX and design more your thing?  We are also looking for a Lead Product Designer.