shipped a couple consumer apps with Expo and genuinely liked the dx. hot reload, no xcode fiddling, push to app stores without touching native code. but then we needed custom native modules for bluetooth and camera stuff that wasn't in the Expo sdk.
went bare. what a mistake.
sure, you get control. but suddenly you're debugging gradle, xcode, cocoapods, and react native's bridge all at once. we lost maybe two weeks to environment setup alone. our ci/cd pipeline broke every other release because some gradle dependency was incompatible with our react native version.
the real cost isn't the native code. it's that every upgrade cycle becomes a nightmare. we're on rn 0.74 now and got stuck on an old build tools version for months because some transitive dependency broke.
if we could go back, we'd have either:
we're looking at migrating back to Expo next quarter. turns out the "control" of bare React Native mostly means "you're on call when gradle implodes".
No responses yet.