Repository navigation
Expo SDK 57: runs in today's Expo Go, Clerk Core 3, no request loop - #3
Merged
Merged
Conversation
- Expo SDK 57, React Native 0.86 (New Architecture), React 19.2, Expo Router 57, Reanimated 4 + worklets, bottom-sheet 5, Clerk 2.20 (useSSO), Stripe 0.64 - Replace react-native-swiper (ViewPropTypes) with a FlatList pager and react-native-modal (BackHandler.removeEventListener) with AppModal on RN's Modal: both crashed on RN 0.86 - Missing keys no longer crash: a "Setup needed" screen lists the missing EXPO_PUBLIC_* keys and, via the new public GET /(api)/health, the missing server settings (names only) (EG1-EG3) - Under `npx expo start` an empty EXPO_PUBLIC_API_ORIGIN uses the dev server, so Expo Go reaches the API routes; release builds stay fail-closed (EG4) - Payment without a Stripe key shows a disabled button instead of crashing; the Payment Sheet return URL comes from Linking.createURL (EG5, EG6) - One GestureHandlerRootView at the root; bottom-sheet 5 dynamic sizing off - Without a Places key, From/To offer seven popular Zagreb places (W11) - expo-router 57: dismissTo where navigate would now push a duplicate - Notification triggers typed (DATE); notification handler uses banner/list - Tooling: `expo lint .`, TypeScript 6 types, RNTL 13, Node 24 in CI - README "Run it on your iPhone" section, plan r7, re-rendered README images npm run check: 73/73 suites, 2872/2872 tests; iOS/Android/web exports pass; expo-doctor 21/21; npm run mutants: R01-R11 killed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…loop
- @clerk/clerk-expo 2.20 (deprecated; its import logged a yellow toast on
every Expo Go launch) -> @clerk/expo 4.7.2; sign-in and sign-up keep the
Core 2 API through @clerk/expo/legacy; a lint rule bans the old package
in imports, require(), jest.mock() and import() (EG8)
- Two independent reviews ran the real clerk-js 5.128 and 6.35 builds and
found 7 behaviour changes, each fixed with tests that failed first:
- Clerk unreachable at launch: "Can't connect" + Retry, not a blank screen
- offline sign-out still resets the trip, cancels reminders, navigates
- the session-token wait counts towards the 10 s load timeout (was ~2.7 min)
- a completed sign-in/sign-up/Google sign-in whose activation fails is
retried, and sign-up never asks for the spent code again
- network failures read as one plain line, not Clerk's endpoint URL
- react and react-dom pinned to one version (@clerk/react 6 loads ReactDOM)
- useFetch: @clerk/expo's useAuth returns a new getToken on every render,
which re-created fetchData after every answer: a request loop for the
drivers and the ride history once signed in. getToken now lives in a ref;
refetch keeps its identity, so the focus refetch (H6) works again (EG9)
- Tabs imported from expo-router/js-tabs (the old import is deprecated)
- Plan r7.1/r7.2: EG8, EG9, R31, §9 CI text (the r6.2 workflow ran green)
npm run check: 74/74 suites, 2929/2929 tests, coverage 100 / 99.66;
iOS/Android/web exports pass; expo-doctor 21/21; mutants R01-R11 killed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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
react-native-swiperbecame a FlatList pager, andreact-native-modalbecameAppModalon React Native's own Modal.EXPO_PUBLIC_*keys and, through the new publicGET /(api)/health, the missing server settings (names only). Payment without a Stripe key shows a disabled button, and without a Places key the From and To fields offer seven popular Zagreb places.npx expo startwithoutEXPO_PUBLIC_API_ORIGIN. Release builds stay fail-closed.@clerk/expo4.7.2) replaces the deprecated@clerk/clerk-expo, so the deprecation toast is gone. Two reviews ran the real clerk-js 5.128 and 6.35 builds and found 7 behaviour changes. Each is fixed with tests that failed first:useFetchkeptuseAuth().getToken, which is a new function on every render, in its dependencies. Once a user signed in, the drivers and the ride history were refetched after every answer. The focus refetch works again as a result.expo lint ., TypeScript 6, RNTL 13, Node 24 in CI (.nvmrc), and a new iOS bundle export step in CI.Test plan
npm run check: tsc, lint, 74 suites / 2,929 tests, coverage 100% lines / 99.66% branchesnpm run mutants: R01–R11 all killednpx expo export -p ios,-p android,-p webnpx expo-doctor21/21 ·npx expo install --check.env.localserves the SDK 57 manifest and bundle;/(api)/healthnames the four missing settings🤖 Generated with Claude Code