The Problem
NativeWind v5 projects configured per official documentation work on web (Chrome/Chromium) but crash on Android Expo Go with a specific error: "failed to deserialize; expected an object-like struct named Specifier." The failure occurs in react-native-css's metro-transformer.js during compilation.
This isn't isolated. GitHub issue #1621 reports identical symptoms, and the NativeWind repository shows 238+ open issues following the v5 release.
What's Happening
NativeWind v5 integrates Tailwind CSS with React Native through a react-native-css transpiler that requires precise Expo and Metro bundler configuration. The deserialization error stems from Expo Go's over-the-air update architecture: its native module handling on Android differs from web builds using Chromium.
The compiler expects structured Specifier objects during the Metro transformation phase. Expo Go doesn't provide them consistently on Android, causing the build to fail before styles render.
The Fixes
Official troubleshooting documentation (updated October 2025) suggests:
- Clear Metro cache:
npx expo start --clear - Enable debug logging: Set
DEBUG=nativewindenvironment variable - Run
verifyInstallation()utility (Tailwind CLI must work first) - Consider custom development builds instead of Expo Go
Some developers report better stability with custom dev clients over Expo Go. Others recommend staying on v4 or switching to CSS-in-JS alternatives like Tamagui for production Android apps.
The Pattern
This reflects a broader challenge in React Native tooling: features that work in web environments often hit platform-specific constraints in native runtimes. Expo Go prioritizes convenience and rapid iteration but doesn't support all native modules consistently across platforms.
No resolution timeline is public. The last documentation update was four months ago, and active issues remain unresolved.
Trade-offs
NativeWind v5 also dropped support for some UI component libraries (HeroUI confirmed). Teams shipping production Android apps should evaluate whether the Tailwind integration justifies these compatibility risks, or whether mature alternatives with proven Android stability make more sense.
The web works. Android doesn't. That gap matters when you're trying to ship.