Expo SDK 56
AniUI 0.3.0 officially supports Expo SDK 56 (React 19.2.3 / React Native 0.85.3 / Reanimated 4.3). On SDK 55+ projects, you can run AniUI on either the NativeWind v5 preview track or the NativeWind v4 stable track — whichever fits your risk tolerance.
TL;DR
- Production today? Use the NativeWind v4 stable track. NativeWind v5 is still pre-release.
- Want the new CSS-first config? Use the NativeWind v5 preview track.
- SDK 56 is New Architecture only. Old Arch was dropped back in SDK 55.
What's new in SDK 56#
# Pinned by Expo SDK 56 (expo@56.0.3, released 2026-05-21)
expo ~56.0.3
react 19.2.3
react-native 0.85.3
react-native-reanimated ~4.3.1
react-native-worklets ~0.8.3 # new required peer
react-native-safe-area-context ~5.7.0
react-native-gesture-handler ~2.31.1
react-native-screens 4.25.2
react-native-svg 15.15.4The main breaking change for AniUI users is the new react-native-worklets peer dependency. Reanimated 4.3 split the worklets runtime into its own package — projects that don't install it will fail to bundle. aniui init installs it automatically on SDK 56, and aniui doctor warns if it's missing.
Choose your NativeWind track#
- • Tailwind v4 with CSS-first
@themeconfig - • No
tailwind.config.js - • Requires
postcss.config.js+@tailwindcss/postcss - • No
jsxImportSourcein babel - • APIs may still change before v5 stable
Reference starter: examples/expo-56-starter
- • Tailwind v3 with classic
tailwind.config.js - •
@tailwind base/components/utilitiesin global.css - •
jsxImportSource: "nativewind"in babel + tsconfig - • Proven toolchain — safest for production
- • Flip to v5 later when it stabilises
Reference starter: examples/expo-56-nw4-starter
Fresh install#
On Expo SDK 55+ projects without an existing nativewind dependency, aniui init asks which NativeWind track to use. Pass --nw v4 or --nw v5 to skip the prompt in scripted runs.
v5 preview
# Fresh Expo SDK 56 project, NativeWind v5 preview track
npx create-expo-app@latest my-app --template default@sdk-56
cd my-app
# Run AniUI init — pick "v5 preview" at the NativeWind track prompt
npx @aniui/cli init
# (or skip the prompt)
npx @aniui/cli init --nw v5 --yes
# Start
npx expo start -cv4 stable
# Fresh Expo SDK 56 project, NativeWind v4 stable track
npx create-expo-app@latest my-app --template default@sdk-56
cd my-app
# Run AniUI init — pick "v4 stable" at the NativeWind track prompt
npx @aniui/cli init
# (or skip the prompt)
npx @aniui/cli init --nw v4 --yes
# Start
npx expo start -cCSS format by track#
v5 preview (Tailwind v4)
/* SDK 56 + NativeWind v5 preview */
@import "tailwindcss";
@import "nativewind/theme";
@theme {
--color-background: hsl(0 0% 100%);
--color-foreground: hsl(240 10% 3.9%);
--color-primary: hsl(240 5.9% 10%);
/* ... */
--radius: 0.5rem;
}
@media (prefers-color-scheme: dark) {
:root {
--color-background: hsl(240 10% 3.9%);
/* ... */
}
}v4 stable (Tailwind v3)
/* SDK 56 + NativeWind v4 stable */
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--background: 0 0% 100%;
--foreground: 240 10% 3.9%;
--primary: 240 5.9% 10%;
/* ... */
--radius: 0.5rem;
}
.dark {
--background: 240 10% 3.9%;
/* ... */
}Migrating from SDK 55#
# Migration from Expo SDK 55 → 56
# 1. Bump Expo + companion native modules
npx expo install expo@~56 react@19.2.3 react-native@0.85.3
# 2. Install the new required worklets peer
npx expo install react-native-worklets react-native-reanimated@~4.3.1
# 3. Bump safe-area-context
npx expo install react-native-safe-area-context@~5.7.0
# 4. Re-run aniui init to refresh templates (no template changes if staying on v5)
npx @aniui/cli init
# 5. Components — no changes needed.If you were already on the v5 preview track, your global.css, metro config, and babel config don't change — only the underlying React / React Native / Reanimated versions and the new worklets peer.
Migrating from SDK 54#
# Migration from Expo SDK 54 → 56
# 1. Bump Expo to SDK 56
npx expo install expo@~56
# 2. Switch to New Architecture if not already
# Set "newArchEnabled": true in app.json (SDK 55 dropped Old Arch)
# 3. Bump Reanimated 3 → 4 and install the new worklets peer
npx expo install react-native-reanimated@~4.3.1 react-native-worklets
# 4. Decide: keep NativeWind v4 (stable, Tailwind v3) or flip to v5 preview (Tailwind v4)
# Stay on v4 — your tailwind.config.js + global.css keep working.
# Flip to v5 — re-run aniui init and pick "v5 preview" at the prompt.
npx @aniui/cli initThe biggest jump is the architecture switch. SDK 55 already removed Old Architecture support, and SDK 56 continues that. You also move from Reanimated 3 to Reanimated 4, which is why the new worklets peer appears.
Known footguns#
react-native-worklets:Required as a separate peer by Reanimated 4.3+.aniui doctorwill flag this if it's missing.expo/fetchdefault:SDK 56 makesexpo/fetchthe defaultglobalThis.fetch. SetEXPO_PUBLIC_USE_RN_FETCH=1to opt out if a dependency relies on the RN fetch behaviour.@expo/vector-icons:Deprecated in SDK 56. Use@react-native-vector-icons/*instead (Expo ships a codemod).expo-router:No longer transitively depends on@react-navigation/*. If you import navigation packages directly, install them explicitly.- React Compiler:Still incompatible with NativeWind's className transform. Do NOT enable
experiments.reactCompilerin app.json. AniUI's init turns it off automatically.
Coming soon — Expo UI BottomSheet#
SDK 56 ships a new @expo/ui/community/bottom-sheet primitive that backs onto native SwiftUI / Jetpack Compose sheets. AniUI may adopt it as an opt-in component in a future release. It's intentionally not the default today because: (1) it's SDK 56 + Expo only — bare RN and SDK ≤55 users couldn't use it; (2) the drop-in API silently no-ops things like BottomSheetBackdrop and custom handles that AniUI's current sheet relies on. For now, bottom-sheet and action-sheet continue to use @gorhom/bottom-sheet, which works across all supported SDKs.
