Expo SDK 56 is here and 3 things actually matter


Hey Reader, 👋

Expo SDK 56 beta dropped last week, bundling React Native 0.85.2 and React 19.2.3.

There’s a lot of exciting things in this release. In this email, I will cover actually matters for indie devs shipping apps.

  • Expo UI going production-ready (and the 5 libraries you can finally delete)
  • Performance wins that don’t require any code changes (40% faster cold starts)
  • Expo Router cutting ties with React Navigation
  • The breaking changes that are actually opportunities

First, a quick word from this week’s sponsor, then we get into it.

Build AR/VR Apps in React Native - No Unity Required

​ReactVision Studio is a visual scene editor for React Native developers. Design AR/VR scenes with drag-and-drop, generate 3D assets from text prompts, and ship to phones and Meta Quest from one codebase. No game engine, no new language - just the React Native stack you already know.

Open source, MIT-licensed, 100k+ npm installs, Expo-compatible. Try now for free.​


Expo UI is now stable

After 3 SDK cycles of iteration (53, 54, 55), Expo UI is officially production-ready. The SwiftUI and Jetpack Compose APIs are stable, it’s in the default create-expo-app template, and it works in Expo Go out of the box.

That’s the headline. But here’s what makes it actually useful:

Universal components. You no longer have to split files into .ios.tsx and .android.tsx anymore. One import, native on both platforms: Host, Row, Column, Text, TextInput, Button, Switch, Slider, Checkbox, BottomSheet.

Web is supported too, but still experimental.

Drop-in replacements. Expo UI now replaces some of the most installed libraries in our ecosystem:

  • @react-native-segmented-control/segmented-control
  • @react-native-picker/picker
  • @react-native-community/datetimepicker
  • @react-native-masked-view/masked-view
  • @gorhom/bottom-sheet

Most migrations are just an import swap. That’s it. Fewer dependencies, fewer libraries to track on upgrade day.

Performance: Faster everywhere

This is the most under-hyped part of the release. Real numbers below.

expo-modules-core on Android. A new Kotlin compiler plugin replaces reflection with build-time code generation. Benchmarks show ~40% faster cold starts and ~33% faster first render. Activity.onCreate dropped from 93ms to 55ms. Zero app-side changes required.

Precompiled Expo packages. SDK 56 ships prebuilt XCFrameworks for the heaviest Expo modules on iOS. Enabled by default locally and on EAS Build. No config. Just faster iOS builds.

New JSI layer for iOS native modules. Calling into a native module from JS used to mean crossing 3 language boundaries: Swift → Objective-C++ → C++. SDK 56 removes the Objective-C++ middle layer entirely using Swift/C++ interop. Fewer hops, less overhead, faster native module calls.

Hermes V1 as default. Comes from React Native 0.84. Faster startup, better runtime performance, less memory. No migration needed. If you’re on Hermes already (the default since RN 0.70), you’ll get V1 automatically on upgrade.

Expo Router forks React Navigation

This is a big one. Expo Router no longer depends on react-navigation.

The Expo team forked the parts of React Navigation they build on, and went their own way. Both projects still build on react-native-screens, and you can still use React Navigation directly if you prefer. But going forward, the two libraries are independent.

For most of us, this means a migration. Most code imported directly from @react-navigation/* packages won’t work alongside expo-router anymore. Luckily, there’s a codemod that handles most of it:

npx expo-codemod sdk-56-expo-router-react-navigation-replace [your-source-dir]

A few new things landed too:

Android Toolbar. Experimental support for Stack.Toolbar on Android, matching the iOS API.

Streaming SSR for Web. With the unstable_useServerRendering flag, you get streaming server-side rendering plus a new generateMetadata function for initial page load. Pair with the existing for post-hydration updates.

Other mentions worth bookmarking

A quick dump of everything else that caught my eye:

  • Inline Expo Modules: Write Swift or Kotlin files directly inside your project. The CLI auto-generates the TypeScript interface. No more create-expo-module ceremony for small native tweaks.
  • New Animation Backend (RN 0.85): Animate layout props (width, height, position) with useNativeDriver: true. Built with Software Mansion.
  • Metro supports HTTPS via TLS configuration. Useful for testing APIs that require secure origins locally.
  • expo-file-system: Progress callbacks, AbortSignal, resumable downloads, multi-file picking, experimental file watching.
  • Calendar, Contacts, MediaLibrary APIs are stable. Class-based, builder-pattern queries, granular fetching.
  • iOS Widgets are stable. Full React context access, no pre-rendering needed.
  • TypeScript 6 support
  • @expo/vector-icons is deprecated. Migrate to @react-native-vector-icons/* scoped packages with npx @react-native-vector-icons/codemod.
  • AI-first scaffolding. New projects ship with AGENTS.md, CLAUDE.md, and .claude/settings.json. Plus official Expo Skills for Claude Code (/plugin install expo).

Upgrade and test it now

This is a beta (for a couple of weeks), but it’s worth upgrading at least one app to test.

There are a lot of breaking changes (expo-file-system async APIs, Expo Router migration, deprecated icon package, iOS deployment target bumped to 16.4). But every breaking change is also an opportunity to drop a dependency, simplify a file, delete legacy code.

The Expo team built an expo/skills upgrade skill for Claude Code that handles most of the migration automatically. Install it once, point it at your project, and let it do the heavy lifting.

I’m going to go upgrade one of the apps in my portfolio right after I send this email.

Cheers,
Vadim

PS. Hit reply and let me know what are you most excited about in the new Expo SDK 56 release
​
​PPS. In case you missed, here are the last 2 tutorials on our channel:

notJust.dev Newsletter

Stay up-to-date with the latest React and React Native news and become a better Mobile Developer

Read more from notJust.dev Newsletter

Hey Reader 👋 Here’s a number that caught my attention: 225 million. That’s how many Fire TV devices are out there globally. Until recently, building for them meant learning a whole new stack. Not anymore. Amazon just released Vega OS - their new OS for Fire TV that lets you ship apps with React Native. Same stack we already use every day. So I spent the last few weeks building a full Podcast app on it. Today, the tutorial drops on YouTube. You’ll learn: What Vega OS is and how to set up the...

I finally decided to give OpenClaw a try. I was just waiting for it to get a stable name 😀 If you’re in the X bubble, you probably got tired of OpenClaw posts by now. But if you’re someone who actually has a personal life and doesn’t scroll X every 5 minutes, here’s the deal. OpenClaw is an open-source personal AI assistant that you run on your own machine. You connect it to Telegram, WhatsApp, Slack, or whatever you use, and it becomes your always-on AI agent. It can browse the web, schedule...

Three days live on YouTube. One app built from scratch. And I can't even launch it yet. Let me explain. Last week I kicked off the $10K MRR Challenge. The plan was simple: stream, build, ship, repeat. I went live three times. And during those streams, I actually built a complete app: CoachAI. But here's the thing. I built it for the Shipyard hackathon. Shipyard is a hackathon organized by RevenueCat where they partnered with 7 creators. Each creator suggested an app idea. I picked one that's...