You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Native Metro transformer crashes on Expo's @expo/log-box CSS modules with Specifier deserialization error #293
Native Metro transformer crashes on Expo's @expo/log-box CSS modules with failed to deserialize; expected an object-like struct named Specifier
Summary
I hit a crash in react-native-css while following the Nativewind v5 setup on a fresh Expo 55 app.
The failure is triggered when Expo's own @expo/log-box CSS modules are sent through the native react-native-css Metro transformer. A direct compile of @expo/log-box/src/overlay/Overlay.module.css reproduces the same error outside Metro.
I do not think this is the same issue as CSS @property support. That appears to be covered separately by PR #284. This issue seems to be about react-native-css trying to compile framework-owned CSS that should be left to Expo's normal CSS handling.
Compiling node_modules/@expo/log-box/src/overlay/Overlay.module.css with react-native-css...
Error: failed to deserialize; expected an object-like struct named Specifier, found ()
The reproduction app itself uses the simple documented Nativewind Metro setup:
Expo's @expo/log-box package appears to own its CSS handling already:
it ships CSS modules under @expo/log-box/src/overlay/*.module.css
it has its own metro.config.js
it has a dedicated shadowDomCssTransformer.js
Because react-native-css replaces Metro's transformer globally, these Expo overlay files end up going through the native CSS compile path instead.
Expected behavior
react-native-css should not try to compile Expo log-box CSS modules with the native compiler on iOS/Android. Those files should be passed through Expo's default CSS handling so Nativewind can coexist with Expo's error overlay.
Actual behavior
The native CSS compiler crashes with:
Error: failed to deserialize; expected an object-like struct named Specifier, found ()
Proposed direction
A small Metro-level bypass for node_modules/@expo/log-box/**/*.css seems like the safest fix:
keep normal native compilation for app CSS and Nativewind input
skip native compilation for Expo's log-box CSS
delegate those files to the default Expo transformer
I have a local patch sketch for this if that direction sounds acceptable.
Activity