chore(client): bump Expo SDK 56 → 57 (brings react-native 0.86) #304

Open
opened 2026-06-26 23:31:03 +00:00 by james · 0 comments
Owner

Context

We're on expo@56.0.12 (SDK 56), which pins react-native: 0.85.3 via bundledNativeModules.json — the version Expo's prebuilt native modules are built against. The whole @react-native/* family is locked at 0.85.3.

React Native 0.86 has shipped upstream (react-native@latest = 0.86.0), but Expo only ships RN 0.86 in SDK 57, which is currently preview-only (expo@next = 57.0.0-preview.0). RN cannot be bumped independently of the Expo SDK — the native module ABI/JS surface is version-locked.

Goal

Upgrade the universal client from Expo SDK 56 → 57, which brings react-native 0.86 (and the matched @react-native/* peers) along with it.

Surface to audit

  • apps/client/package.jsonexpo, react-native, every expo-* module, and React/React-DOM pins (Expo SDK bumps usually move these in lockstep; use expo install --fix).
  • Root package.jsonpnpm.overrides.react-native pin (→ 0.86.x) and any other overrides Expo's resolution now conflicts with.
  • The full Expo SDK 57 + RN 0.85→0.86 changelogs — New Architecture, autolinking, Android/iOS build config, and any removed/renamed APIs the client uses.
  • Native build configs regenerated by prebuild (Android compileSdk/Gradle, the with-release-signing plugin) — re-verify against the SDK 57 template.
  • All three build targets: PWA web export, Android APK/AAB, Tauri/Flatpak shell.

Blocks / subsumes

  • Subsumes #281 (bump RN 0.85.3 → 0.86.x + retire the foojay gradle patch). Once SDK 57 lands RN 0.86, #281's patch-retirement work folds into this bump — drop patches/@react-native__gradle-plugin@0.85.3.patch and its pnpm.patchedDependencies entry as part of this change (upstream RN 0.86 already carries the foojay 1.0.0 fix). See #281 for the patch details.
  • Pairs with #280 (PR-time Android Gradle validation) for verifying the new native build.

Hold until

Expo SDK 57 is stable (not 57.0.0-preview.x). Doing this on a preview SDK is experimental; revisit when expo@latest ≥ 57. Also mind ADR-0009's version-age quarantine on freshly-published packages.

Relates to #278, #280, #281.

## Context We're on `expo@56.0.12` (SDK 56), which pins `react-native: 0.85.3` via `bundledNativeModules.json` — the version Expo's prebuilt native modules are built against. The whole `@react-native/*` family is locked at 0.85.3. React Native 0.86 has shipped upstream (`react-native@latest` = 0.86.0), but Expo only ships RN 0.86 in **SDK 57**, which is currently **preview-only** (`expo@next` = `57.0.0-preview.0`). RN cannot be bumped independently of the Expo SDK — the native module ABI/JS surface is version-locked. ## Goal Upgrade the universal client from Expo SDK 56 → 57, which brings react-native 0.86 (and the matched `@react-native/*` peers) along with it. ## Surface to audit - `apps/client/package.json` — `expo`, `react-native`, every `expo-*` module, and React/React-DOM pins (Expo SDK bumps usually move these in lockstep; use `expo install --fix`). - Root `package.json` — `pnpm.overrides.react-native` pin (→ 0.86.x) and any other overrides Expo's resolution now conflicts with. - The full Expo SDK 57 + RN 0.85→0.86 changelogs — New Architecture, autolinking, Android/iOS build config, and any removed/renamed APIs the client uses. - Native build configs regenerated by prebuild (Android `compileSdk`/Gradle, the `with-release-signing` plugin) — re-verify against the SDK 57 template. - All three build targets: PWA web export, Android APK/AAB, Tauri/Flatpak shell. ## Blocks / subsumes - **Subsumes #281** (bump RN 0.85.3 → 0.86.x + retire the foojay gradle patch). Once SDK 57 lands RN 0.86, #281's patch-retirement work folds into this bump — drop `patches/@react-native__gradle-plugin@0.85.3.patch` and its `pnpm.patchedDependencies` entry as part of this change (upstream RN 0.86 already carries the foojay 1.0.0 fix). See #281 for the patch details. - Pairs with **#280** (PR-time Android Gradle validation) for verifying the new native build. ## Hold until Expo SDK 57 is **stable** (not `57.0.0-preview.x`). Doing this on a preview SDK is experimental; revisit when `expo@latest` ≥ 57. Also mind ADR-0009's version-age quarantine on freshly-published packages. Relates to #278, #280, #281.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
james/carol#304
No description provided.