Skip to content

Conversation

@fernandatoledo
Copy link
Collaborator

What does this do?

This PR upgrades the React Native template from Expo SDK 53 to Expo SDK 54, along with major dependency updates and necessary code migrations.

Key changes:

  • Expo SDK: Upgraded from ~53.0.23 to ~54.0.25
  • React Native: Upgraded from 0.79.5 to 0.81.5
  • React: Upgraded from 19.0.0 to 19.1.0
  • react-native-reanimated: Upgraded from ~3.17.5 to ~4.1.5 (major version)
  • react-native-mmkv: Upgraded from ~3.1.0 to ~4.0.1 (major version)
  • @shopify/flash-list: Upgraded from 1.7.6 to 2.0.2 (major version)

Code migrations:

  • Migrated MMKV API from new MMKV() to createMMKV() factory function
  • Updated storage methods: delete()remove(), added clearAll() for batch operations
  • Added type definitions for react-native-reanimated v4 compatibility with @gorhom/bottom-sheet
  • Added expo-build-properties plugin with iOS deployment target set to 16.0
  • Updated all Expo-related packages to their v54 compatible versions

Why did you do this?

This upgrade is necessary to:

  • Stay current with the latest Expo SDK features, performance improvements, and security updates
  • Take advantage of React Native 0.81.5 improvements and bug fixes
  • Maintain compatibility with the latest versions of critical dependencies
  • Ensure the template remains up-to-date for new projects

The migration addresses breaking changes in:

  • react-native-mmkv v4 which introduced a new factory-based API
  • react-native-reanimated v4 which required type definition updates for compatibility

Who/what does this impact?

Impact:

  • All new projects created from this template will use Expo SDK 54
  • Existing projects upgrading will need to follow the migration guide
  • Developers need to be aware of the MMKV API changes when working with storage
  • iOS builds now require minimum deployment target of 16.0

Breaking changes:

  • MMKV constructor replaced with createMMKV() factory function
  • Storage delete() method renamed to remove()
  • New clearAll() method available for batch operations

  • Tested on iOS
  • Tested on Android
  • Tested on a small device

I also had to update my Xcode to 16.3 in order to use expo 54


Notes:

  • This is a major version upgrade that may require additional testing
  • The react-native-reanimated type definitions were added to maintain compatibility with @gorhom/bottom-sheet
  • The iOS deployment target was explicitly set to 16.0 via expo-build-properties plugin
  • All dependency versions were updated to their latest compatible versions for Expo SDK 54

Screenshots / Previews

Screenshot_1766158836 image

@fernandatoledo fernandatoledo self-assigned this Dec 19, 2025
@fernandatoledo fernandatoledo requested a review from a team as a code owner December 19, 2025 15:41
@github-actions
Copy link

github-actions bot commented Dec 19, 2025

💯 Test Coverage

Lines Statements Branches Functions
Coverage: 9%
9.31% (64/687) 10.46% (29/277) 7.59% (18/237)

😎 Tests Results

Tests Skipped Failures Errors Time
26 0 💤 0 ❌ 0 🔥 28.164s ⏱️
👀 Tests Details • (9%)
File% Stmts% Branch% Funcs% LinesUncovered Line #s
All files9.3110.467.599.36 
components/providers0000 
   auth.tsx000014–181
lib31.25028.5735.71 
   storage.tsx00003–15
types0000 
   react-native-reanimated.d.ts0000 

@github-actions
Copy link

github-actions bot commented Dec 19, 2025

Good news! We ran Expo Doctor for this PR and everything looks good, Great job!

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.

2 participants