How to upgrade from Expo SDK 52 to 53
Beto, May 20, 2025 · 13,173 views
I walk through upgrading a React Native app from Expo SDK 52 to SDK 53 with a clear, practical approach. I share how to check your current dependencies, update Expo packages, handle non-Expo libraries, and rebuild native projects safely.
Upgrading Expo SDK versions is optional but recommended to get new features and fixes. I explain how to verify your setup, update dependencies using Expo CLI and Bun, and regenerate native iOS code to avoid build issues. This process helps ensure your app runs smoothly on the latest Expo SDK.
What's inside
- Introduction and motivation for upgrading Expo SDK
- Checking current Expo dependencies with
- Installing Expo SDK 53 and updating dependencies
- Handling non-Expo dependencies by reviewing changelogs
- Installing latest versions of specific packages like Bacon’s Apple targets
- Cleaning and reinstalling node modules with Bun
- Prebuilding native iOS code with
- Running the app on the iOS simulator after upgrade
Introduction and motivation for upgrading Expo SDK
I recently upgraded my shopping list app from Expo SDK 52 to 53 and received many questions about the process. I explain the step-by-step approach I took to upgrade the app safely without breaking it.
Upgrading Expo SDK versions is not mandatory but recommended to access new features, improvements, and bug fixes. I show how to verify your current setup and prepare for the upgrade, so you can confidently move to the latest SDK version.
Checking current Expo dependencies with
The first step is to check which Expo dependencies you have installed and whether newer compatible versions exist for your current SDK version.
Run:
This command lists all Expo modules in your project and shows if updates are available for the SDK version you use (52 in this case). You can review the list and decide whether to install updates or just keep track of them.
This helps you understand which packages need updating before upgrading the SDK itself.
Installing Expo SDK 53 and updating dependencies
To upgrade to SDK 53, run:
This installs Expo SDK 53 and updates your Expo dependencies to versions compatible with SDK 53. After that, run the check command again to verify all dependencies align with SDK 53.
When prompted, confirm installation of any remaining updates by selecting yes. This ensures your Expo modules are fully compatible with the new SDK and reduces the risk of runtime errors.
Handling non-Expo dependencies by reviewing changelogs
Some dependencies are not managed by Expo CLI, such as Bacon’s Apple targets or Clerk Expo. For these, you need to check their changelogs or repository commits to identify any breaking changes.
If no breaking changes are found, you can safely install the latest versions manually using your package manager (Bun in my case). Otherwise, review upgrade notes carefully before updating to avoid compatibility issues.
This step is important because Expo CLI only manages Expo packages, so you must handle third-party libraries yourself.
Installing latest versions of specific packages like Bacon’s Apple targets
For Bacon’s Apple targets, I found a newer version 3.0.2 available. After reviewing the changelog and confirming minimal changes (mostly related to a widget template path), I installed it manually with:
This updates the package to the latest version compatible with SDK 53. I recommend doing the same for other important dependencies that Expo CLI does not upgrade automatically, such as React Navigation or Clerk Expo.
Manually updating these packages helps keep your app up to date and avoids subtle bugs.
Cleaning and reinstalling node modules with Bun
After updating dependencies, I delete the folder to avoid stale or conflicting packages. Then I reinstall everything fresh by running:
This ensures a clean slate with all dependencies correctly installed for the new SDK version. Removing and reinstalling node modules helps prevent issues caused by leftover files or mismatched versions.
Using Bun as the package manager speeds up installation and keeps your environment consistent.
Prebuilding native iOS code with
Next, I regenerate the native iOS project files to reflect the SDK upgrade by running:
The flag deletes the existing iOS folder and recreates it from scratch. This step is crucial to avoid native build issues after upgrading Expo SDK, especially when native dependencies or configurations have changed.
Prebuilding ensures your native code matches the updated Expo SDK and dependencies, preventing build errors and runtime crashes.
Running the app on the iOS simulator after upgrade
Finally, I run the app on the iOS simulator to verify everything works correctly:
The app builds and launches using Expo SDK 53 without errors. At this point, you can commit your changes to GitHub and continue development on the latest SDK.
Running the app on a simulator or device after upgrading is essential to confirm your app functions as expected with the new SDK and dependencies.
Resources

CourseReact Native course
Fundamentals through shipping: the concepts behind the prompts, with lifetime access.

Pro MembershipPro membership
Get exclusive tutorials, live Q&A, and early access to new content.
Like this article? Get the rest of the library plus weekly React Native tips. Free.