SDK 55 Breaking Changes¶
React Native 0.83, React 19.2. Full changelog: https://expo.dev/changelog/sdk-55
Removed APIs & Config Fields¶
notification field removed from app.json¶
Specifying a notification entry in app.json will throw an error during prebuild. Migrate to the expo-notifications config plugin:
{
"expo": {
"plugins": [
[
"expo-notifications",
{
"icon": "./assets/notification-icon.png",
"color": "#ffffff"
}
]
]
}
}
newArchEnabled config option removed¶
Legacy Architecture is no longer available. Remove the field from app.json entirely.
edgeToEdgeEnabled removed from app.json¶
Edge-to-edge is mandatory on Android 16+. The config option no longer has any effect.
experiments.reactCanary flag removed¶
React 19 is the baseline. The flag is no longer necessary.
EXPO_USE_FAST_RESOLVER removed¶
The fast resolver is the only resolver implementation. No env variable needed.
expo-av removed from Expo Go¶
expo-av no longer receives patches. Migrate to expo-audio and expo-video.
Renames & API Changes¶
| Old | New |
|---|---|
expo-blur experimentalBlurMethod |
blurMethod |
expo-router headless tabs reset prop |
resetOnFocus |
expo-video allowsFullscreen prop |
fullscreenOptions.enable |
expo-router ExpoRequest/ExpoResponse |
Standard Request/Response |
expo-video bitrate track field |
averageBitrate and peakBitrate |
Removed Deprecated APIs¶
expo-clipboard:contentproperty removed from event listeners — usegetStringAsync()expo-cellular: carrier-related constants removed (iOS methods returnnull)expo-notifications: push notifications in Expo Go on Android now throws (was warning)
Deprecations (will be removed later)¶
removeSubscriptionfunctions from several modules → usesubscription.remove()insteadexpo-video-thumbnails→ usegenerateThumbnailsAsyncfromexpo-video(removal in SDK 56)expo-navigation-bar: most methods deprecated and no-op (edge-to-edge mandatory). Use config plugin.expo-status-bar:backgroundColor,translucent,networkActivityIndicatorVisibledeprecated. Use config plugin.androidNavigationBarapp.json config deprecated → useexpo-navigation-barconfig pluginandroidStatusBar.backgroundColor/androidStatusBar.translucentdeprecated → useexpo-status-barconfig plugin
CLI & EAS Changes¶
eas update requires --environment flag¶
This flag is now mandatory. Update CI scripts:
# Before
eas update --branch production --message "Fix bug"
# After
eas update --branch production --message "Fix bug" --environment production
App config evaluation changed¶
app.config.ts files are now transpiled with your project's TypeScript installation, not a separate internal tool. Test your dynamic config after upgrading.
Native Tabs Import Changes¶
Icon, Label, Badge, VectorIcon are now static properties on NativeTabs.Trigger. See ./native-tabs.md reference.
Autolinking Changes¶
expo.experiments.autolinkingModuleResolution is now enabled by default in monorepos. If having dependency issues, verify with:
Tool Requirements¶
- Xcode 26 required (EAS Build defaults to 26.2)
- Node.js: ^20.19.4, ^22.13.0, ^24.3.0, or ^25.0.0
- iOS minimum stays 15.1 (bump to 16.4 planned for SDK 56)
Migration Checklist¶
- [ ] Remove
newArchEnabledfrom app.json - [ ] Remove
edgeToEdgeEnabledfrom app.json - [ ] Remove
notificationfrom app.json, use config plugin - [ ] Remove
experiments.reactCanaryfrom app.json - [ ] Migrate
expo-avtoexpo-audio/expo-video - [ ] Rename
experimentalBlurMethod→blurMethodin expo-blur usage - [ ] Rename headless tabs
reset→resetOnFocus - [ ] Replace
ExpoRequest/ExpoResponsewith standardRequest/Response - [ ] Update
eas updatecommands with--environmentflag - [ ] Update Xcode to version 26
- [ ] Review
expo-navigation-barandexpo-status-barusage for deprecated APIs - [ ] Check native tabs imports (see native-tabs.md reference)
- [ ] Review
expo.install.excludeand patches for outdated workarounds