Skip to content

Phone app: move to Expo SDK 58 (React Native 0.88, React 19.3) - #11

Merged
EmotiveImpact merged 1 commit into
mainfrom
claude/expo-sdk-upgrade-hnf58a
Oct 17, 2026
Merged

EmotiveImpact merged 1 commit into
mainfrom
claude/expo-sdk-upgrade-hnf58a

Conversation

@EmotiveImpact

Copy link
Copy Markdown
Owner

Requested by Edem · project thread

Before: the phone app ran on Expo SDK 54 (React Native 0.81, React 19.1), with SDK 54 pins and patches left over from the old hosted runtime.

After: the phone app runs on Expo SDK 58, the newest stable SDK (React Native 0.88, React 19.3, Skia 2.14, Reanimated 4.7, Gesture Handler 3.3, expo-router 58). Screens look the same; this opens the door to SDK 58's native UI (Expo UI, liquid glass) in later work.

This only changes the SDK and its dependencies, plus the code the new versions require. It doesn't restyle anything.

How

  • expo install expo@^58 then expo install --fix; Jest 30 for jest-expo 58 (excluded from Expo's Jest 29 check).
  • expo-router 58 ships its own React Navigation, so useIsFocused and NavigationContext now come from expo-router, and the pinned @react-navigation/* packages and overrides are gone.
  • Skia paths are immutable in 2.14: built with Skia.PathBuilder (4 files). public/canvaskit.wasm refreshed to match, or Skia fails on the web.
  • React Native 0.88 drops StyleSheet.absoluteFillObject (it would silently be undefined): replaced with absoluteFill.
  • expo-contacts 58 throws on its old top-level calls: the friends screen and web polyfill use expo-contacts/legacy.
  • Dropped the old runtime's patches for expo-router, react-native, @expo/cli, metro-runtime, netinfo and store-review. The expo-router one switched off deep links in iOS builds.
  • Removed expo-av (gone since SDK 55) and react-native-screen-transitions, neither imported anywhere.
  • One React (19.3.0) pinned across the workspace so expo-router's own dependencies and the web apps share it. newArchEnabled leaves app.json (the New Architecture is the only one now).

Checked

  • expo export --platform all: iOS, Android and web bundle; Supabase-mode web build too.
  • tsc --noEmit clean, 133 of 133 Jest tests pass, Expo Doctor 19 of 19.
  • expo prebuild generates both native projects.
  • 13 key screens compared before and after on the web build: identical apart from looping animations.
  • Website, member app and HQ still typecheck, test, lint and build.
  • Not checked here: a real device build. That needs the first EAS build.

Generated by Claude Code

- Expo 54 to 58 and every Expo module with it, via expo install --fix.
  Skia 2.14, Reanimated 4.7, Worklets 0.13, Gesture Handler 3.3,
  Screens 4.30, expo-router 58, Jest 30 for jest-expo 58.
- expo-router 58 carries its own copy of React Navigation, so the three
  screens that read navigation state import it from expo-router, and the
  pinned @react-navigation packages are gone.
- Skia paths are now immutable: build them with Skia.PathBuilder.
- React Native 0.88 drops StyleSheet.absoluteFillObject; use absoluteFill.
- expo-contacts 58 throws on its old top-level calls; use expo-contacts/legacy.
- Refresh public/canvaskit.wasm to match Skia 2.14 on the web.
- Drop SDK 54 pins and the old runtime's patches (expo-router, react-native,
  @expo/cli, metro-runtime, netinfo, store-review). The expo-router one
  turned off deep links in iOS builds.
- Remove expo-av (gone since SDK 55) and react-native-screen-transitions,
  neither of which the app imports.
- Pin one React (19.3.0) across the workspace so expo-router's own
  dependencies and the web apps share it.
- newArchEnabled leaves app.json: the New Architecture is the only one now.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vsz3ViuKVy6sXx32E1JZtG
@EmotiveImpact EmotiveImpact self-assigned this Oct 16, 2026
@vercel

vercel Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
outhere-site Ready Ready Preview Oct 16, 2026 10:55pm UTC

@EmotiveImpact
EmotiveImpact marked this pull request as ready for review October 16, 2026 22:59
@EmotiveImpact
EmotiveImpact merged commit 174e232 into main Oct 17, 2026
8 checks passed

This branch was successfully deployed

1 active deployment
Preview — 71d2af75 Deployed Oct 16, 2026 by vercel[bot]
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.

2 participants