Upgrading Expo in a monorepo is an all-or-nothing operation because Expo SDK pins specific React Native and React versions, and shared packages force all apps to align. The post walks through lessons learned from multiple upgrade attempts (SDK 52 to 53/54), recommending the official Expo workflow using `npx expo install --latest` and `npx expo doctor` as the most effective approach. Key pitfalls covered include: version coupling across Expo, React Native, and React; using tilde (~) instead of caret (^) for reproducible native builds; dealing with poorly-maintained component libraries; fixing Firebase compilation errors via expo-build-properties config; and manually verifying NativeWind and other styling dependencies. The recommended strategy is to spike on separate branches with atomic commits, focus on getting mobile apps building first, and budget time for runtime issues that only appear after a successful build.

8m read timeFrom spin.atomicobject.com
Post cover image
Table of contents
ContextWhy Upgrading Expo Means Upgrading React and React NativeFollowing the Expo-proposed WorkflowUsing Expo’s Versioning ToolsVerifying by Building and RunningConsidering a ~ Instead of a ^Poorly-Supported Component LibrariesPrepare for Expo config UpdatesDouble-check Other DependenciesConclusion

Sort: