Repository navigation
Open
Labels
epic:toolingESLint, Prettier, TS config, scripts, CIESLint, Prettier, TS config, scripts, CIpriority:P1High priorityHigh prioritystatus:blockedStuck; comment says what is neededStuck; comment says what is neededtaskChore, refactor, or maintenance workChore, refactor, or maintenance work
Description
Expo SDK 58 was released on 2026-09-29 (expo 58.0.16, React Native 0.88.0, React 19.3.0). Under the Support Policy (changed on 2026-10-25), the starter targets the stable SDK that the store's Expo Go runs, with no set date for a new SDK.
The work happens on the branch sdk-58, with a draft PR so CI runs. It is merged only once the store's Expo Go runs SDK 58 (expoGoSdkVersion at https://api.expo.dev/v2/versions/latest); there is no deadline.
What a trial upgrade on 14033fb found (2026-10-19)
npx expo install expo@^58.0.0 --fixstops with ERESOLVE: expo-router 58 has an optional peer@testing-library/react-native >= 14. RNTL 14 needstest-rendererinstead ofreact-test-renderer, and Jest 30 / jest-expo 58.- With those, the install resolves,
expo install --checkand doctor (20/20) pass, and the web export and the iOS and Android bundles build. - RNTL 14's
render,renderHook,fireEventand expo-router'srenderRouterreturn promises: 155 of 708 tests fail, with 169 lint errors (no-floating-promises) and 128 type errors, all in about 23 test files and the helpers. - React Native's Strict TypeScript API (on by default since 0.87): 4 type errors in app code (
app/(tabs)/_layout.tsxcolors, LoginScreen'sTextInputref). web.outputis unset; SDK 58 changes its default. The trial still exported a single-page app, now split into route chunks.- The Android e2e workflow pins Expo Go 57.0.9; Expo Go 58.0.4 exists for simulators and emulators. The store Expo Go is still on SDK 57 ("within a few weeks" of the release, per Expo).
- expo-router 58 reworked its navigation core; the session guards (
Stack.Protected), the tabs and the route error boundaries need the full test suite and the e2e flows.
Acceptance criteria
- On
sdk-58, the dependencies are the versions SDK 58 expects:npx expo install --checkpasses, doctor passes, andpackage-lock.jsonis reproducible withnpm ci. Dependencies outside the SDK keep their versions unless the upgrade needs them. - Every test passes after migrating to RNTL 14 (async render APIs), with no test removed or weakened; the docs' test snippets are updated and
docs:checkpasses. - App code compiles under the Strict TypeScript API without casts that hide a real type problem.
web.outputis set explicitly, and the web export is still a single-page app that the hosting docs describe.- The e2e workflows use Expo Go 58 (pinned, SHA256 verified). E2E on the branch: Android Expo Go, Android native debug, iOS native debug: 7 flows plus dark each. iOS Expo Go locally with Expo Go 58.
- Docs updated: versions (Getting Started, the Supported table), the testing docs for async render, any changed behavior.
init-project --remove-demo --remove-recipesstill leaves a project that passes every gate. - All gates,
format:check,docs:checkand CI pass on the PR. A confirmation audit of the branch finds no HIGH or MEDIUM. - Merged once the store's Expo Go runs SDK 58, then released as a new tag.
Metadata
Metadata
Assignees
Labels
epic:toolingESLint, Prettier, TS config, scripts, CIESLint, Prettier, TS config, scripts, CIpriority:P1High priorityHigh prioritystatus:blockedStuck; comment says what is neededStuck; comment says what is neededtaskChore, refactor, or maintenance workChore, refactor, or maintenance work
Activity
fix(nav): keep one Home when the session guards send a user Home
docs: undeclared tabs, web redeploys with route-split JavaScript
fix(nav): return to the screen below when the session guards send a u…
docs: wording of the undeclared-tab and web redeploy notes
fix(nav): undo only the guards' replacement, not navigation to a tab
fix(nav): undo the guards' redirect only right after the session changed
test(nav): cover the session-change hook's conditions; drop a redunda…
docs(conventions): the guards return a user to the screen below; repl…
docs(conventions): go Home with dismissTo after signIn/signOut, and d…
fix(nav): clear the session flag when a guarded group leaves for the …
6 remaining items
koniz-dev commentedon Oct 20, 2026
Decisions (maintainer delegated them on 2026-10-20):
expoGoSdkVersionat https://api.expo.dev/v2/versions/latest starts with 58), or on 2026-10-27, whichever comes first. On 2026-10-20 it reports 57.0.0. If the deadline comes first, Getting Started and the release notes get a note: use a simulator, an emulator, or a development build until the store Expo Go supports SDK 58.A daily check runs in the current session until the merge.
chore(nav): point useNoExtraHome to the upstream report (expo/expo#51916
koniz-dev commentedon Oct 20, 2026
Upstream report: expo/expo#51916, with a minimal repository (https://github.com/koniz-dev/expo-router-protected-redirect-repro) verified on the iOS Simulator with Expo Go 58.0.4. The hook's comment points to it (sdk-58).
Track the Expo Router guarded-redirect workaround (expo/expo#51916)
koniz-dev commentedon Oct 21, 2026
2026-10-21 check: store Expo Go still 57.0.0, so no merge yet. Upstream expo/expo#51916: assigned, reproduced and diagnosed by Expo's bot on main (guarded screens redirect with replace; candidate fix pops instead). A community fix is open: expo/expo#51925 (pops to the screen below in a stack, as SDK 57 did), awaiting review. When a release contains it,
useNoExtraHomecan go.[-]Upgrade to Expo SDK 58 (React Native 0.88) by about 2026-10-27[/-][+]Upgrade to Expo SDK 58 (React Native 0.88) when the store Expo Go supports it[/+]koniz-dev commentedon Oct 25, 2026
Decision changed (maintainer, 2026-10-25): the Support Policy now follows the SDK that the store's Expo Go runs, instead of a fixed 4 weeks (maintainers afa00c5, e86a8f8). Merging before the store's Expo Go moves would break the QR-code path on a phone for every new project.
expoGoSdkVersion(https://api.expo.dev/v2/versions/latest) starting with 58; on 2026-10-25 it reports 57.0.0. The 2026-10-27 deadline is dropped.koniz-dev commentedon Oct 25, 2026
Updated the v1.1.16 release notes to the new policy (maintainer request, 2026-10-25): the SDK 58 known-limitation bullet and the maintenance-mode paragraph no longer promise 4 weeks / 2026-10-27; they say the starter moves within about 1 week of the store's Expo Go supporting the new SDK. Nothing else in the notes changed.
koniz-dev commentedon Oct 25, 2026
v1.1.17 shipped on 2026-10-25 as a security-only release (the zod fix, #142/#143) from
main. The SDK 58 upgrade onsdk-58(PR #135) becomes v1.1.18, merged and tagged within about 1 week of the store's Expo Go supporting SDK 58. PR #135 already includes the zod fix (e5c4243).docs(policy): drop the Expo SDK upgrade schedule; follow the store's …
koniz-dev commentedon Oct 25, 2026
Policy changed again on 2026-10-25 (maintainers b944f26): the starter promises only the stable SDK that the store's Expo Go runs, with no schedule or date for a new SDK. Upgrades start from an issue. This issue stays open and blocked until the store's Expo Go runs SDK 58; then PR #135 is merged and released. The "about 1 week" target and the 2026-11-24 decision point are dropped, and there is no scheduled check. The v1.1.16 and v1.1.17 release notes were edited to match.
docs(evidence): record the SDK policy without a schedule (#134, #143)
Merge main (README rewrite 1a3015a) into sdk-58