Skip to content

Upgrade to Expo SDK 58 (React Native 0.88) when the store Expo Go supports it #134

Open

Description

@koniz-dev

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 --fix stops with ERESOLVE: expo-router 58 has an optional peer @testing-library/react-native >= 14. RNTL 14 needs test-renderer instead of react-test-renderer, and Jest 30 / jest-expo 58.
  • With those, the install resolves, expo install --check and doctor (20/20) pass, and the web export and the iOS and Android bundles build.
  • RNTL 14's render, renderHook, fireEvent and expo-router's renderRouter return 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.tsx colors, LoginScreen's TextInput ref).
  • web.output is 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

  1. On sdk-58, the dependencies are the versions SDK 58 expects: npx expo install --check passes, doctor passes, and package-lock.json is reproducible with npm ci. Dependencies outside the SDK keep their versions unless the upgrade needs them.
  2. 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:check passes.
  3. App code compiles under the Strict TypeScript API without casts that hide a real type problem.
  4. web.output is set explicitly, and the web export is still a single-page app that the hosting docs describe.
  5. 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.
  6. Docs updated: versions (Getting Started, the Supported table), the testing docs for async render, any changed behavior. init-project --remove-demo --remove-recipes still leaves a project that passes every gate.
  7. All gates, format:check, docs:check and CI pass on the PR. A confirmation audit of the branch finds no HIGH or MEDIUM.
  8. Merged once the store's Expo Go runs SDK 58, then released as a new tag.

Activity

  1. added
    taskChore, refactor, or maintenance work
    epic:toolingESLint, Prettier, TS config, scripts, CI
    status:in-progressClaimed; assignee is actively working
    on Oct 19, 2026
  2. self-assigned this
    on Oct 19, 2026
  3. 6 remaining items

  4. removed their assignment
    on Oct 19, 2026
  5. koniz-dev commented on Oct 20, 2026

    @koniz-dev
    OwnerAuthor

    Decisions (maintainer delegated them on 2026-10-20):

    1. Merge PR Upgrade to Expo SDK 58 (React Native 0.88) #135 when the store Expo Go supports SDK 58 (expoGoSdkVersion at 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.
    2. Report the Stack.Protected redirect upstream (expo/expo), with a minimal repository; link to follow here.
    3. Release v1.1.17 after the merge, through the release gate as for Release v1.1.16: eighth deep audit fixes (#129-#132) #133.

    A daily check runs in the current session until the merge.

  6. koniz-dev commented on Oct 20, 2026

    @koniz-dev
    OwnerAuthor

    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).

  7. koniz-dev commented on Oct 21, 2026

    @koniz-dev
    OwnerAuthor

    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, useNoExtraHome can go.

  8. changed the title [-]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[/+] on Oct 25, 2026
  9. koniz-dev commented on Oct 25, 2026

    @koniz-dev
    OwnerAuthor

    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.

    • Merge PR Upgrade to Expo SDK 58 (React Native 0.88) #135 within about 1 week of 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.
    • If the store's Expo Go hasn't moved by 2026-11-24 (8 weeks after the release), the maintainer decides whether to merge with a docs note (simulator, emulator, or development build).
    • Release v1.1.17 after the merge, as before; its notes state the new policy.
  10. koniz-dev commented on Oct 25, 2026

    @koniz-dev
    OwnerAuthor

    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.

  11. koniz-dev commented on Oct 25, 2026

    @koniz-dev
    OwnerAuthor

    v1.1.17 shipped on 2026-10-25 as a security-only release (the zod fix, #142/#143) from main. The SDK 58 upgrade on sdk-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).

  12. koniz-dev commented on Oct 25, 2026

    @koniz-dev
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    epic:toolingESLint, Prettier, TS config, scripts, CIpriority:P1High prioritystatus:blockedStuck; comment says what is neededtaskChore, refactor, or maintenance work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions