Skip to content

feat: add Expo SDK 57 support#49

Merged
jkasprzyk17 merged 3 commits into
gmi-software:mainfrom
MrAdex77:feat/expo-sdk-57-support
Jul 17, 2026
Merged

feat: add Expo SDK 57 support#49
jkasprzyk17 merged 3 commits into
gmi-software:mainfrom
MrAdex77:feat/expo-sdk-57-support

Conversation

@MrAdex77

@MrAdex77 MrAdex77 commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Closes #38

Summary

Upgrades the example app to Expo SDK 57 (React Native 0.86, React 19.2) and validates the library, config plugin, and docs against it. RN 0.86 has no user-facing breaking changes from 0.85, so this is dependency alignment plus verification — no library source changes were required.

  • chore(example): expo ~57.0.6, react-native 0.86.0, expo-status-bar, babel-preset-expo, reanimated 4.5 + worklets 0.10 per the SDK 57 recommended set; react stays 19.2.3, nitro stays on the 0.35 line (already RN 0.86 compatible)
  • chore(deps): @expo/config-plugins devDependency to ~57.0.0 so the plugin typechecks and unit-tests against the SDK 57 prebuild toolchain; react-native devDependency to 0.86.0
  • docs: supported range stated as SDK 56+ (verified through SDK 57) with matching RN versions in expo-setup prerequisites, README requirements, and the architecture table

Breaking change

None. Published peerDependencies are unchanged — the existing ranges (react-native >=0.78.0, react-native-nitro-modules >=0.35.0) already cover RN 0.86, so current consumers are unaffected.

Test plan

  • bun run nitrogen, bun run lint, bun run typecheck, bun run build, library tests — all green
  • npx expo-doctor in example/ — passes (one pre-existing false positive, see Notes)
  • expo prebuild --clean output diffed against an SDK 56 baseline: plugin-injected surface identical — com.google.android.geo.API_KEY meta-data, ACCESS_FINE_LOCATION/ACCESS_COARSE_LOCATION, GoogleMapsIosApiKey, NSLocationWhenInUseUsageDescription; only manifest delta is the SDK 57 template adding assetsPaths to configChanges
  • Example app development build runs on the latest iOS simulator (Xcode 26.6)
  • Example app development build runs on a Pixel 9a emulator (Android 16)

Notes

  • newArchEnabled was removed from example/app.json because the SDK 57 config schema rejects the property (the New Architecture is the only option now); the New Architecture itself is unaffected
  • expo-doctor reports one pre-existing false positive ("app.json file ... app.config.js is not using the values from it") — the heuristic cannot see the require('./app.json') spread in app.config.js; npx expo config --json resolves all app.json values correctly, so the config structure was left as-is
  • Bare RN 0.86 template moves the Android toolchain to compileSdk/targetSdk 36, Kotlin 2.1.20; the library compiles against the app-provided rootProject.ext values, so its gradle.properties fallbacks are intentionally untouched (they were aligned with the nitro-modules prefab in fix(android): align SDK versions with nitro-modules prefab #41)
  • Nitro 0.36 exists but is not required for RN 0.86; staying on 0.35.x keeps this PR scoped to SDK support
  • Building the example for iOS on SDK 57 requires macOS 26 and Xcode 26.6 — earlier Xcode 26.x fails compiling expo-modules-jsi@57.0.3 (expo-modules-jsi: abs(milliseconds) fails to compile with Swift 6 (Xcode 26) expo/expo#47843)

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The example app is upgraded to Expo SDK 57 and React Native 0.86. Setup documentation now covers SDK 56+ through SDK 57, updated React Native prerequisites, and Nitro Modules. README and architecture references are updated accordingly.

Changes

Expo SDK 57 support

Layer / File(s) Summary
Example app SDK and dependency upgrade
example/package.json, package/package.json, example/app.json
Example dependencies and development dependencies are upgraded for Expo SDK 57 and React Native 0.86, and newArchEnabled is removed from the Expo configuration.
Expo setup prerequisites and verification
docs/expo-setup.md, README.md
Documentation specifies SDK 56+ support verified through SDK 57, development-build requirements, React Native prerequisites, Nitro Modules, and SDK-to-RN mappings.
Architecture version reference
docs/architecture.md
The example app technology choice is updated from Expo SDK 56 to SDK 57.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: jkasprzyk17, piotr-graczyk-dev

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR upgrades the example to SDK 57, updates docs and deps, and preserves the plugin behavior expected by #38.
Out of Scope Changes check ✅ Passed No unrelated changes stand out; the edits are all tied to the SDK 57 support work.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Security Check ✅ Passed No medium/high vulnerability found: the PR only updates docs and Expo/RN dependency alignment, with no new attacker-controlled sink or auth boundary change.
Title check ✅ Passed The title is concise, uses a feat prefix, and clearly matches the Expo SDK 57 support update.
Description check ✅ Passed The description directly describes the Expo SDK 57 upgrade, dependency alignment, and docs updates in this change.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@package/package.json`:
- Line 84: Move `@expo/config-plugins` from devDependencies to dependencies in
package/package.json so the published plugin has it available at runtime for
imports from package/plugin/src/index.ts and related plugin code.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 728c6d3d-5ede-47cf-9f57-f094de8a05be

📥 Commits

Reviewing files that changed from the base of the PR and between bf4184c and dbae23f.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • README.md
  • docs/architecture.md
  • docs/expo-setup.md
  • example/app.json
  • example/package.json
  • package/package.json
💤 Files with no reviewable changes (1)
  • example/app.json

Comment thread package/package.json
@jkasprzyk17

Copy link
Copy Markdown
Contributor

Nice work 🫶 LGTM

SDK 57 / RN 0.86 upgrade looks clean, peer ranges already cover it, and the docs updates match. The CodeRabbit note about moving @expo/config-plugins into dependencies is a false positive (Expo plugins shouldn't ship that as a runtime dep).

Good job on the verification notes too (prebuild diff, device/emulator checks, Xcode caveat).

@jkasprzyk17
jkasprzyk17 merged commit 6906966 into gmi-software:main Jul 17, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Expo SDK 57 support

2 participants