Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Native Metro transformer crashes on Expo's @expo/log-box CSS modules with Specifier deserialization error

Aberta
#293 0 comentários 2 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 3 dias

@danstepanov já está trabalhando nisso.

Desde 15/7/2026.

Avaliação

Esta issue ainda não foi avaliada.

Descrição

v5 stability

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.

Environment

  • expo: ~55.0.5
  • react-native: 0.83.2
  • nativewind: ^5.0.0-preview.2
  • react-native-css: ^3.0.4
  • package manager: bun
  • Node: v25.7.0

Minimal reproduction

Published repro repo:

Fast repro:

bun install
bun run repro:logbox

Current output:

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:

const { getDefaultConfig } = require("expo/metro-config");
const { withNativewind } = require("nativewind/metro");

module.exports = withNativewind(getDefaultConfig(__dirname));

Additional context

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.

Linguagem predominante
TypeScript
Estrelas
166
Forks
45
Merge médio
13d 14h
PRs com merge (30d)
1

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de nativewind/react-native-css

Todas as issues de nativewind/react-native-css

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.