React Native Cold Start is Slower Than People Expect

Cold start for a stock RN app on an older Android can easily exceed 3 seconds. Where the time goes and which parts are actually worth fixing.

Problems/React Native Cold Start is Slower Than People Expect

Pain Point

React Native Cold Start is Slower Than People Expect

React Native cold start on older Android is 3+ seconds by default. Where the time goes and the handful of fixes that matter.

The honest baseline

A stock React Native app on a mid-range Android from three years ago will take somewhere between 2.5 and 4 seconds to reach the first interactive screen. On a modern iPhone, more like 0.8 to 1.5 seconds. New Architecture narrows the gap, not eliminates it.

For apps that sit in the background and get opened frequently (fitness, booking), this is noticeable. For apps opened once a session (ecommerce browse), it matters less.

Where the time actually goes

In a profile of an app I shipped:

  • Native process + JS engine bootstrap: ~600 ms on older Android.
  • JS bundle parse: ~400 ms.
  • First-screen data fetch: ~500–800 ms depending on network.
  • Font + image preload: ~200 ms.
  • App-level store hydration (persistent state): ~150 ms.

That adds up before your first pixel hits the screen.

The fixes that are actually worth doing

  • Hermes + bytecode cache (already the Expo default on new projects). If you are still on JavaScriptCore, switch. Free 20-30% off cold start.
  • Lazy feature modules: Do not import your Stripe or Maps SDKs at the top of App.tsx. Lazy require them on the screen that needs them.
  • Skeleton UI, not spinner: Render a skeleton for your first screen while the data fetch happens. Perceived cold start drops even if measured cold start does not change.
  • Defer non-critical work: Analytics init, crash reporting, feature flag fetch — move all of it to InteractionManager.runAfterInteractions.

The fixes that are not worth doing (yet)

  • Handwritten TurboModules for your own business logic. Unless you know exactly which bridge call is the bottleneck, you will spend days for no user-visible gain.
  • Ripping out React Navigation for a custom router. The time savings are small and you lose a lot of muscle memory.

Numbers I saw after the actually-worth-doing fixes

  • Before: 3.4 s cold start on a Pixel 5.
  • After Hermes + lazy modules + skeleton: 1.8 s perceived, 2.2 s measured.

Not magic. Just a focused hour per fix.

What the boilerplate does for you

AI App Factory starts with Hermes on, lazy module wiring in place, skeleton screens for the first view, and deferred analytics init. You start at ~2 seconds on older Android instead of 3.5 seconds.

See pricing

Skip this problem entirely.

AI App Factory handles the boring infrastructure so you can build the product.

AI App FactoryProblemsReact Native Cold Start is Slower Than People Expect