chore: upgrade to Expo SDK 56 - #161
Open
byCedric wants to merge 1 commit into
Open
Conversation
Upgrade the monorepo from Expo SDK 54 to 56 (expo ~56.0.9, React Native
0.85.3, React 19.2.3). Versions follow expo@56.0.9 bundledNativeModules.
- Bump versions across apps/example, packages/ui, packages/feature-home
and the root (incl. SDK 56's SDK-aligned majors, e.g. expo-router@~56.2.9)
- Migrate React Navigation to Expo Router (now independent in SDK 56) via the
sdk-56-expo-router-react-navigation-replace codemod; drop @react-navigation/*
- Add now-required peers: expo-constants, expo-font, expo-linking,
react-native-screens, react-native-safe-area-context, react-native-worklets
- Drop newArchEnabled and edgeToEdgeEnabled from app.json (mandatory in SDK 56)
- Upgrade TypeScript to 6.0.3 and adapt to its breaking changes:
- types now defaults to []; declare "types": ["jest"] in tsconfigs and
re-add @types/jest to the example app
- normalize useColorScheme() to 'light' | 'dark' (RN 0.85 ColorSchemeName
now includes 'unspecified')
- Extract<…, string> for the icon Record key (expo-symbols name is a union)
- Classify the new msgpackr-extract build script in pnpm-workspace.yaml so
pnpm install exits cleanly
Verified: expo-doctor 21/21, tsc clean (TS 6.0.3), turbo lint + test pass,
expo export builds iOS/Android/Web.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
🚀 Expo preview is ready!
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrades the monorepo from Expo SDK 54 → 56 (
expo ~56.0.9, React Native0.85.3, React19.2.3). All version pins followexpo@56.0.9'sbundledNativeModules.json. Changelog: https://expo.dev/changelog/sdk-56Changes
Version bumps across
apps/example,packages/ui,packages/feature-home, and the root — including SDK 56's new SDK-aligned major versions (e.g.expo-router@~56.2.9,expo-haptics@~56.0.3).Expo Router ↔ React Navigation independence. SDK 56 makes Expo Router independent of React Navigation (it re-exports themes/elements itself). Ran the official
sdk-56-expo-router-react-navigation-replacecodemod:app/_layout.tsxnow importsThemeProvider/DarkTheme/DefaultThemefromexpo-router/react-navigationcomponents/haptic-tab.tsximportsPlatformPressablefromexpo-router/react-navigationandBottomTabBarButtonPropsfromexpo-router/js-tabs@react-navigation/native,@react-navigation/bottom-tabs,@react-navigation/elementsNew required peer dependencies (flagged by
expo-doctor):expo-constants,expo-font,expo-linking,react-native-screens,react-native-safe-area-context,react-native-worklets(the last is hard-required by Reanimated 4).app.json: removednewArchEnabledandandroid.edgeToEdgeEnabled— both are now mandatory/default in SDK 56 and rejected by the config schema.TypeScript 5.9 → 6.0.3, with adaptations to its breaking changes:
typesnow defaults to[](TS 6.0 no longer auto-loads every@types/*). Declared"types": ["jest"]in all threetsconfig.jsonfiles and re-added@types/jestto the example app.ColorSchemeNameto include'unspecified'→ normalizeduseColorScheme()to'light' | 'dark'at the hook, fixing the theme-indexing call sites.expo-symbolsmadeSymbolViewProps['name']a union → usedExtract<…, string>for the icon mapping'sRecordkey.pnpm-workspace.yaml: classified the SDK 56-introducedmsgpackr-extractbuild script (allowBuilds: false, pure-JS fallback) sopnpm installexits cleanly under pnpm v11.Verification
expo-doctortsc --noEmit(all 3 projects, TS 6.0.3)turbo lintturbo testexpo export🤖 Generated with Claude Code