Arvension
Arvension Technologies
← Back to Blog

React Native: One Year In — An Honest Review

We've been using React Native for a year on an enterprise app. Facebook's using it. Airbnb's using it. But there are costs nobody talks about.

AA

Abhi Asok

Founder & CEO, Arvension Technologies

8 min read

React Native v0.48 shipped in July. I've been running React Native in production for about a year now, and I have some uncomfortable truths about it.

The headline story is compelling. Write once, run everywhere. JavaScript on iOS and Android. Code sharing. Faster iteration. Smaller teams. Facebook, Airbnb, Walmart all using it. It sounds perfect.

I'm not saying it's perfect. But it's better than the hype suggested, and worse in different ways.

Where React Native Exceeds Expectations

For enterprise apps specifically, React Native punches above its weight.

Business logic. Networking. Most of what your app does—HTTP requests, data formatting, state management—that's all JavaScript. That logic exists once. Both iOS and Android run exactly the same code path. This eliminates an entire class of bugs that plague cross-platform development.

I worked on an inventory management app. We had one codebase. iOS and Android deployments. A bug in the inventory calculation? Fixed once, deployed to both platforms. A native app would require coordinating between two separate teams, two separate testing cycles, two separate releases.

The development experience is genuinely good. Hot reload. You change code, see it instantly. It beats the native iOS develop-build-deploy cycle by orders of magnitude. If you're building a fast-moving startup, React Native saves weeks.

And here's something people underestimate: hiring. We needed iOS and Android developers. Turns out, there's a much larger pool of React developers willing to learn React Native than experienced iOS developers willing to jump to a startup. Our team got built faster and cheaper than it would have with native apps.

Navigation was rough. Then React Navigation hit v1. Now it's excellent. Native-feeling navigation on both platforms from the same code.

The Real Costs (That I Didn't Anticipate)

But React Native is not free. The cost just doesn't show up where you expect.

Native modules. There's always something you need to do that React Native doesn't expose. Camera integration. Geolocation. Local notifications. Background sync. You need a native module. Either you write one, or you hope someone in the community did.

Writing a native module means maintaining Objective-C and Java/Kotlin code. Now you have three platforms to maintain: the JavaScript layer, the iOS native layer, and the Android native layer. Your "write once" story gets compromised.

For the inventory app, we needed offline storage. We built a React Native module that wrapped SQLite. That module? Took longer to build and maintain than we expected. iOS worked fine. Android had quirks with SQLite on certain devices. We ended up with platform-specific code that was basically as complex as building separate native apps.

Performance. React Native is fast. But benchmarks lie. The apps I've built run at 60fps on flagship devices. On midrange Android devices? Frame drops. The JavaScript bridge has latency. Animations are sometimes janky. For consumer apps where performance is marketing, this sucks.

For enterprise apps, users are more forgiving. But it's still a factor. If you're building something performance-critical—a photo editing app, a game—native is still better.

The learning curve is deceptive. If you know React and JavaScript, React Native seems easy. Until you hit the native layers. Then you need to understand iOS and Android fundamentals anyway. You're not avoiding the complexity. You're just delaying it.

And testing. Unit testing is fine. Integration testing is okay. End-to-end testing is painful because you're testing across a bridge between JavaScript and native code. The test tools are immature compared to native testing frameworks.

Would I Use It Again?

Yeah. But with eyes open.

For enterprise applications where performance isn't critical and your timeline is compressed, React Native is compelling. For consumer applications where performance and visual polish matter, I'd lean native.

The story that's winning isn't "write once, run everywhere." It's "use one language, share logic, build two native apps with better velocity." We're not truly writing once. We're writing JavaScript logic once and then writing iOS and Android UI once. That's different, and it's more honest.

Airbnb made news in early 2018 by scaling back React Native. There's going to be backlash. People are going to say React Native failed.

What actually happened: React Native is great for some problems and not great for others. Like every technology ever. The companies that figure that out early and make deliberate choices will be fine. The companies that bought the "write once, run everywhere" dream and didn't plan for the reality will struggle.

For the next year, I'm watching what happens with React Native's roadmap. Bridging performance. Native module ecosystem. Cross-platform testing. Those are the battlegrounds. Solve those, and React Native wins. Don't, and we cycle back to native development.

Related Articles