Skip to content

chore: 🤖 bump spacecraft to Expo SDK 58 - #286

Merged
flexbox merged 2 commits into
mainfrom
chore/expo-sdk-58
Oct 27, 2026
Merged

flexbox merged 2 commits into
mainfrom
chore/expo-sdk-58

Conversation

@flexbox

@flexbox flexbox commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Upgrade hackathon/spacecraft from Expo SDK 56 to SDK 58 (expo ^58, react-native 0.88.0, React 19.3.0 — also bumped in overrides/resolutions)
  • Bump all expo-* modules and native libs to their SDK 58 versions: react-native-reanimated 4.7.1, react-native-worklets 0.13.0, react-native-screens ~4.30, react-native-safe-area-context ~5.10.1, react-native-web ^0.21.4
  • Bump react-native-gesture-handler 2.31 → ~3.3 (major jump; only consumed through react-navigation and the Jest setup, so swipe/back gestures are worth a device check)
  • Dev tooling: Jest ~30.5, jest-expo ~58, eslint-config-expo ~58, @types/*, @react-native-community/datetimepicker 9.2.1 and slider 5.2.1
  • Add @react-native/[email protected] as a devDependency — without it the old 0.85.3 copy was resolved and broke 3 of 4 test suites
  • app.config.ts: register the config plugins expo install now expects (expo-image, expo-status-bar, @react-native-community/datetimepicker)
  • jest.setup.js: mock react-native-worklets, and stub setCSSEventHandler, which Reanimated 4.7.1 calls on init and which throws under Jest (no upstream fix released yet — the stub can be removed once one ships)

Testing

  • bun run test: 4/4 suites, 4/4 tests pass
  • tsc: no type errors (pre-existing baseUrl deprecation warning for TypeScript 6 remains)
  • npx expo export -p ios: bundle builds (5.7 MB hbc)
  • expo-doctor: 18/20 — the 2 failures predate this change (a stray untracked yarn.lock beside bun.lock, and missing React Native Directory metadata for @dev-plugins/react-navigation / @react-native-vector-icons/*)
  • bun run lint: fails with 16 errors / 21 warnings, all pre-existing style rules (color literals, prop-types, any) in untouched src/ files; both files changed here lint clean
  • Simulator run: Not run — ios/ and android/ are generated at build time, so the next expo run:ios / run:android or EAS build is the first on-device verification

- upgrade expo 58, react-native 0.88, react 19.3 and related libs
- move to jest 30 / jest-expo 58 with @react-native/jest-preset
- register expo-image, expo-status-bar and datetimepicker config plugins
- replace .eslintrc.js with flat eslint.config.js (eslint 9, typescript-eslint 8, perfectionist 5)
- upgrade Storybook to v10 and convert .storybook config files to TypeScript
- move splash config to the expo-splash-screen plugin
- bump react-navigation, react-query, vector-icons and testing-library deps
- apply new lint/import-order rules across components, screens and navigation
@flexbox
flexbox merged commit 9e757d2 into main Oct 27, 2026
1 check failed
@flexbox
flexbox deleted the chore/expo-sdk-58 branch October 27, 2026 20:15
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.

1 participant