Skip to content

chore(deps)!: upgrade to React Native 0.88 and Expo SDK 58 - #5167

Merged
Doberjohn merged 5 commits into
mainfrom
chore/upgrade-rn-expo
Nov 5, 2026
Merged

Doberjohn merged 5 commits into
mainfrom
chore/upgrade-rn-expo

Conversation

@lukewalczak

@lukewalczak lukewalczak commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Motivation

Upgrades the example app to Expo SDK 58 / React Native 0.88.1 and migrates src/ to the RN 0.88 types. Refs now use React.ComponentRef<typeof View>, so the public ref types change.

Related issue

Closes #5166

Screenshots / Videos

iOS Android

Test plan

Run yarn example ios and yarn example android, then open a few examples.

@Doberjohn

Copy link
Copy Markdown
Collaborator

I swapped #4996's place with this PR in the merge order which is essentially what D1 asks for in #5150. A few things before review:

  1. It changes public types (the component refs), so it's breaking under our rules: please retitle it chore(deps)!: upgrade to React Native 0.88 and Expo SDK 58, add a short refs entry to docs/6.x/docs/guides/migration.md (what changed and how app code types a ref now), and suggest a one-sentence BREAKING CHANGE: footer for the squash.
  2. It also fixes fix(types)!: component ref types break on React Native 0.87 and later #5166, so please add Closes #5166 to the description.
  3. Build docs and Build package fail on 38b8e8c.
  4. Is your older branch chore/update-rn-in-example an earlier attempt at this? If so, can we delete it?

@lukewalczak lukewalczak changed the title chore: upgrade example app to the latest rn and expo chore(deps)!: upgrade to React Native 0.88 and Expo SDK 58 Nov 4, 2026
@lukewalczak

Copy link
Copy Markdown
Member Author

I swapped #4996's place with this PR in the merge order which is essentially what D1 asks for in #5150. A few things before review:

  1. It changes public types (the component refs), so it's breaking under our rules: please retitle it chore(deps)!: upgrade to React Native 0.88 and Expo SDK 58, add a short refs entry to docs/6.x/docs/guides/migration.md (what changed and how app code types a ref now), and suggest a one-sentence BREAKING CHANGE: footer for the squash.
  2. It also fixes fix(types)!: component ref types break on React Native 0.87 and later #5166, so please add Closes #5166 to the description.
  3. Build docs and Build package fail on 38b8e8c.
  4. Is your older branch chore/update-rn-in-example an earlier attempt at this? If so, can we delete it?

Thanks for the review!

  1. Retitled to chore(deps)!: upgrade to React Native 0.88 and Expo SDK 58 and added a Refs section to the 6.x migration guide in 2741658. It explains what changed and shows how to type a ref now (React.ComponentRef<typeof View>).

    1. Added Closes #5166. This PR fixes the ref types it reports: TextInputHandles, the TextInput render prop, and refs on Button, Card, Chip, Surface, and others. The react-native-strict-api condition no longer exists on RN 0.88, because the generated types are now the default, so the existing Typecheck job already covers them. To keep RN < 0.87 covered as well, I added a Typecheck step that runs against the legacy types (--customConditions react-native-legacy-deep-imports).
  2. Fixed in 5a00671, and CI is green there:

  3. No, chore/update-rn-in-example was a one-commit patch bump of the example to RN 0.77.2 from May 2025. It's long outdated, so I've deleted it.

Comment thread package.json Resolved

@Doberjohn Doberjohn left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall it looks really solid, great job! I se only 1 blocker (TS stops catching style issues). The rest of the stuff are not really introduced by this PR, they are older but it's a great opportunity to scoop them up now that your diff has touched them.

For the squash commit, could you write the one-line BREAKING CHANGE: footer? Our changelog tool ignores the ! in the title, so it only picks up the break from that line.

Comment thread src/components/Surface.tsx Resolved
Comment thread src/components/Snackbar.tsx Resolved
Comment thread src/components/Banner.tsx Resolved
Comment thread src/components/Button/Button.tsx Resolved
Comment thread src/components/Card/CardCover.tsx Resolved
- keep SurfaceStyle keys by omitting per AnimatedStyle union member
- type Banner, Snackbar and Button touchable refs as React.Ref
- document Card.Cover image style props in the migration guide
- drop root react-native-web and point docs aliases at its cjs paths
@Doberjohn Doberjohn added this to the 6.0.0 milestone Nov 5, 2026
@Doberjohn
Doberjohn merged commit c719a08 into main Nov 5, 2026
13 checks passed
@Doberjohn
Doberjohn deleted the chore/upgrade-rn-expo branch November 5, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(types)!: component ref types break on React Native 0.87 and later

2 participants