Building React Native Apps with Expo: What the Managed Workflow Actually Buys You

TIL that starting a React Native app in Expo's managed workflow paid off immediately for camera/location access, but I still had to understand what 'ejecting' would cost before I needed it.

2 min read

Sabin Shrestha

Full-Stack Developer — Next.js, React & React Native

The Problem #

The Archery Garage app needed camera access, live location tracking via Mapbox, and push-style updates, which in a bare React Native project each mean configuring native modules and platform-specific permissions by hand — real work before you write a single screen.

Context #

This was a solo project with no dedicated mobile-native experience to lean on, and a real deadline for the App Store/Play Store submission.

What I Tried #

Started in Expo's managed workflow specifically to avoid touching native iOS/Android project files directly, using expo-camera and expo-location instead of hand-linking native modules.

What Went Wrong #

Not a failure exactly, but a real constraint I hit later: a Mapbox SDK feature I wanted required a native module Expo's managed workflow didn't support at the time, which meant a decision point — find a managed-compatible alternative, or eject to the bare workflow and take on native build maintenance myself.

The Solution #

Used react-native-maps with a managed-compatible tile provider instead of the specific Mapbox SDK feature, staying in the managed workflow rather than ejecting. The feature gap was real, but not worth trading away Expo's build/update tooling for.

import * as Location from "expo-location";
 
const { status } = await Location.requestForegroundPermissionsAsync();
if (status === "granted") {
  const location = await Location.getCurrentPositionAsync({});
}

Why It Works #

Expo's managed workflow trades some native flexibility for not having to own Xcode/Android Studio build configuration, permission entitlements, and native module linking yourself. For a solo developer on a deadline, that trade is usually worth it — the question is knowing in advance which features would force you out of it.

Lessons Learned #

"Should I use Expo managed or bare?" isn't a one-time decision to make from a tutorial's recommendation — it's a trade-off that should be re-evaluated against your actual feature list, because the cost of ejecting later is real and worth avoiding if a managed-compatible alternative exists.

What I Would Do Differently #

I'd check Expo's supported-modules list against my full feature list before starting, instead of discovering a gap mid-build and having to find a workaround under time pressure.

Expo managed vs. bare workflow, native module linking, EAS Build.