refactor: drop support for expo 54#407
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR removes Expo SDK 54 support from the repo by deleting the ExpoApp54 example app and stripping all pre-55 Expo-specific code paths (templates, iOS Podfile/Xcode helpers, docs, and consumer build variants), leaving Expo SDK 55+ as the supported baseline.
Changes:
- Removed the
apps/ExpoApp54workspace and all related CI/local scripts, consumer app build flavors, and documentation. - Simplified the Expo config plugin implementation by dropping pre-55 handling (iOS patch script phase + Podfile hook logic; Android pre55 template path).
- Updated docs and changesets to reflect the new supported Expo SDK range.
Reviewed changes
Copilot reviewed 74 out of 85 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| yarn.lock | Drops Expo 54 and related transitive dependencies from the lockfile. |
| scripts/ci-local-expo54-ios-e2e.sh | Removes local CI helper for ExpoApp54 iOS Detox E2E. |
| packages/react-native-brownfield/src/expo-config-plugin/template/ios/patchExpoPre55.sh | Removes pre-55 iOS patch script template. |
| packages/react-native-brownfield/src/expo-config-plugin/template/android/ReactNativeHostManager.pre55.kt | Removes pre-55 Android host manager template. |
| packages/react-native-brownfield/src/expo-config-plugin/ios/xcodeHelpers.ts | Removes pre-55 Xcode build phase helpers for patching ExpoModulesProvider. |
| packages/react-native-brownfield/src/expo-config-plugin/ios/withBrownfieldIos.ts | Removes conditional pre-55 patch-phase injection; keeps 55+ flow. |
| packages/react-native-brownfield/src/expo-config-plugin/ios/podfileHelpers.ts | Removes pre-55 Podfile hook path; always injects 55+ swift define hook. |
| packages/react-native-brownfield/src/expo-config-plugin/ios/tests/xcodeHelpers.test.ts | Removes ExpoApp54-specific deployment-target test coverage. |
| packages/react-native-brownfield/src/expo-config-plugin/ios/tests/withFmtFix.test.ts | Updates test fixture target name from ExpoApp54 to ExpoApp55. |
| packages/react-native-brownfield/src/expo-config-plugin/expoUtils.ts | Removes isExpoPre55 from Expo info helper. |
| packages/react-native-brownfield/src/expo-config-plugin/android/withAndroidModuleFiles.ts | Drops pre-55 branching; always renders post-55 template. |
| packages/react-native-brownfield/src/expo-config-plugin/android/tests/withAndroidModuleFiles.test.ts | Updates helper usage after removing isExpoPre55 parameter. |
| packages/cli/src/brownfield/utils/supportsPrebuiltRNCore.ts | Retains Expo SDK gating logic (still requires Expo SDK >= 55). |
| packages/cli/src/brownfield/utils/tests/supportsPrebuiltRNCore.test.ts | Removes Expo-related mocks/tests (but now needs updated mocking for project detection). |
| package.json | Removes root script for local ExpoApp54 iOS E2E. |
| docs/docs/docs/guides/expo-updates/how-to.mdx | Removes SDK54 section and updates admonition formatting + SDK 55 section. |
| docs/docs/docs/guides/expo-updates/expo-54.mdx | Deletes the SDK54 manual setup guide. |
| docs/docs/docs/guides/expo-updates/_meta.json | Removes expo-54 entry from docs sidebar metadata. |
| docs/docs/docs/getting-started/examples.mdx | Removes references to ExpoApp54 and updates the examples list/notes. |
| CONTRIBUTING.md | Removes Expo 54 references from contributing/testing/build documentation. |
| apps/README.md | Removes ExpoApp54 references from apps overview. |
| apps/AppleApp/package.json | Removes iOS consumer build script for ExpoApp54. |
| apps/AppleApp/Brownfield Apple App.xcodeproj/xcshareddata/xcschemes/xcschememanagement.plist | Removes scheme management entry for Expo 54 scheme. |
| apps/AppleApp/Brownfield Apple App.xcodeproj/xcshareddata/xcschemes/Brownfield Apple App Expo 54.xcscheme | Deletes Expo 54 Xcode scheme. |
| apps/AppleApp/Brownfield Apple App.xcodeproj/project.pbxproj | Removes ExpoApp54 target and associated build phases/references. |
| apps/AndroidApp/package.json | Removes Android consumer build script for Expo 54 flavor. |
| apps/AndroidApp/gradle/libs.versions.toml | Removes Expo 54 brownfieldlib dependency coordinate. |
| apps/AndroidApp/app/src/expo54/java/com/callstack/brownfield/android/expo/ReactNativeHostManager.kt | Deletes Expo 54 variant typealias file. |
| apps/AndroidApp/app/src/expo54/java/com/callstack/brownfield/android/expo/ReactNativeConstants.kt | Deletes Expo 54 variant constants. |
| apps/AndroidApp/app/src/expo54/java/com/callstack/brownfield/android/expo/BrownfieldStore.kt | Deletes Expo 54 variant store typealias file. |
| apps/AndroidApp/app/build.gradle.kts | Removes expo54 product flavor and dependency wiring. |
| .github/actions/prepare-android/action.yml | Updates cache segmentation docs to remove Expo 54 mention. |
| .changeset/loose-papers-beam.md | Adds changeset entries bumping relevant packages for dropping Expo 54 support. |
| .changeset/config.json | Removes ExpoApp54 from ignored packages and updates ignore list entries. |
| apps/ExpoApp54/utils/expo-rn-updates.ts | Deletes ExpoApp54 utility (workspace removal). |
| apps/ExpoApp54/tsconfig.json | Deletes ExpoApp54 config (workspace removal). |
| apps/ExpoApp54/RNApp.tsx | Deletes ExpoApp54 RN entry component (workspace removal). |
| apps/ExpoApp54/README.md | Deletes ExpoApp54 readme (workspace removal). |
| apps/ExpoApp54/package.json | Deletes ExpoApp54 workspace manifest (workspace removal). |
| apps/ExpoApp54/jest.setup.js | Deletes ExpoApp54 Jest setup (workspace removal). |
| apps/ExpoApp54/jest.config.js | Deletes ExpoApp54 Jest config (workspace removal). |
| apps/ExpoApp54/hooks/use-theme-color.ts | Deletes ExpoApp54 hook (workspace removal). |
| apps/ExpoApp54/hooks/use-color-scheme.web.ts | Deletes ExpoApp54 hook (workspace removal). |
| apps/ExpoApp54/hooks/use-color-scheme.ts | Deletes ExpoApp54 hook (workspace removal). |
| apps/ExpoApp54/eslint.config.mjs | Deletes ExpoApp54 ESLint config (workspace removal). |
| apps/ExpoApp54/entry.tsx | Deletes ExpoApp54 entrypoint (workspace removal). |
| apps/ExpoApp54/e2e/jest.config.cjs | Deletes ExpoApp54 Detox Jest config (workspace removal). |
| apps/ExpoApp54/constants/theme.ts | Deletes ExpoApp54 theme constants (workspace removal). |
| apps/ExpoApp54/components/ui/icon-symbol.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/ui/icon-symbol.ios.tsx | Deletes ExpoApp54 iOS UI component (workspace removal). |
| apps/ExpoApp54/components/ui/collapsible.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/themed-view.tsx | Deletes ExpoApp54 themed component (workspace removal). |
| apps/ExpoApp54/components/themed-text.tsx | Deletes ExpoApp54 themed component (workspace removal). |
| apps/ExpoApp54/components/postMessage/MessageBubble.tsx | Deletes ExpoApp54 postMessage UI (workspace removal). |
| apps/ExpoApp54/components/postMessage/Message.ts | Deletes ExpoApp54 postMessage model (workspace removal). |
| apps/ExpoApp54/components/parallax-scroll-view.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/hello-wave.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/haptic-tab.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/external-link.tsx | Deletes ExpoApp54 UI component (workspace removal). |
| apps/ExpoApp54/components/counter/index.tsx | Deletes ExpoApp54 counter component (workspace removal). |
| apps/ExpoApp54/BrownfieldStore.brownie.ts | Deletes ExpoApp54 brownie store types (workspace removal). |
| apps/ExpoApp54/brownfield.navigation.ts | Deletes ExpoApp54 navigation spec (workspace removal). |
| apps/ExpoApp54/brownfield.config.json | Deletes ExpoApp54 brownfield config (workspace removal). |
| apps/ExpoApp54/app/modal.tsx | Deletes ExpoApp54 route (workspace removal). |
| apps/ExpoApp54/app/(tabs)/postMessage.tsx | Deletes ExpoApp54 tab route (workspace removal). |
| apps/ExpoApp54/app/(tabs)/index.tsx | Deletes ExpoApp54 tab route (workspace removal). |
| apps/ExpoApp54/app/(tabs)/explore.tsx | Deletes ExpoApp54 tab route (workspace removal). |
| apps/ExpoApp54/app/(tabs)/_layout.tsx | Deletes ExpoApp54 tabs layout (workspace removal). |
| apps/ExpoApp54/app/_layout.tsx | Deletes ExpoApp54 root layout (workspace removal). |
| apps/ExpoApp54/app.json | Deletes ExpoApp54 Expo config (workspace removal). |
| apps/ExpoApp54/.gitignore | Deletes ExpoApp54 gitignore (workspace removal). |
| apps/ExpoApp54/.detoxrc.cjs | Deletes ExpoApp54 Detox config (workspace removal). |
| apps/ExpoApp54/tests/brownfield.example.test.tsx | Deletes ExpoApp54 Jest suite (workspace removal). |
| apps/brownfield-example-shared-tests/e2e/createDetoxJestConfig.cjs | Updates shared tests docstring to remove ExpoApp54 mention. |
| apps/brownfield-example-shared-tests/detox-appleapp-variants.cjs | Updates comment to reflect current AppleApp variants list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
artus9033
requested changes
Jul 6, 2026
artus9033
left a comment
Collaborator
There was a problem hiding this comment.
LGTM after comments resolved - we need to address versioning.
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.
Summary
With this PR, we drop support for Expo SDK 54.
Test plan