`styled()` crashes with `Maximum call stack size exceeded` when wrapping `react-native-svg` primitives
メンテナーはふだん 12 日以内に返信
@marklawlor がすでに取り組んでいます。
2026年7月15日 から。
評価
この issue はまだ評価されていません。
説明
Describe the bug
In [email protected], the documented v5 third-party-component recipe for react-native-svg throws on first render:
RangeError: Maximum call stack size exceeded (native stack depth)
The same crash also fires when calling useUnstableNativeVariable() from a component rendered inside an SVG tree — so the bug appears to live in the shared observable/effect layer that both APIs route through (useNativeCss → varResolver → reactivity graph), not in styled() itself.
Plain <Svg color={someStaticHex} /> with the color resolved outside of any NativeWind runtime hook renders correctly. Only the NativeWind runtime path crashes.
Versions:
nativewind:5.0.0-preview.4react-native-css:3.0.7react-native-svg:15.15.4react-native:0.85.3react:19.2.3expo:56.0.11(SDK 56)tailwindcss:4.2.0(Tailwind v4,@theme {}block)- Platform: iOS simulator, Hermes
Reproduction
npx rn-new@latest --nativewind then drop in:
import { styled } from 'nativewind';
import Svg, { Path } from 'react-native-svg';
const StyledSvg = styled(Svg);
const StyledPath = styled(Path);
export default function App() {
return (
<StyledSvg width={24} height={24} viewBox="0 0 24 24" className="text-red-500">
<StyledPath d="M2 12h20" stroke="currentColor" strokeWidth={2} />
</StyledSvg>
);
}
The documented nativeStyleMapping recipe reproduces the same crash:
const StyledSvg = styled(Svg, {
className: { target: 'style', nativeStyleMapping: { color: 'color' } },
});
Expected behavior
styled(Svg, { className: { target: 'style', nativeStyleMapping: { color: 'color' } } }) should resolve text-… classes to a color value and lift it onto the <Svg color={…}> prop, so stroke="currentColor" on descendants follows the Tailwind text color. This is the v4 cssInterop recipe that the v5 third-party-components guide still points to.
Additional context
Two suspect spots in [email protected] that fit the symptom (not confirmed by runtime instrumentation):
useNativeCssrunssetStateduring render iftestGuardsflips.react-native-svg'sSvg/Shapeclass components rebuild prop derivations on every render (extractedProps,SvgTouchableMixin,setNativeProps), so an identity-based guard may flip on every iteration and recurse synchronously.varResolver'svariableHistoryonly blocks repeating the same variable name — it doesn't catch cycles across different names. Tailwind v4 OKLCH palette colors compile to nestedvar()chains, which may be enough to trigger that.
Workaround in use: resolve the color from className ourselves via useColorScheme() + a static token map mirrored from our @theme {} block, then pass it as <Svg color={…} />. Inner Path/Circle stay as plain react-native-svg primitives with stroke="currentColor". Works, but duplicates values from CSS and can't read live runtime variables.
What I tried that did not help:
- Every
nativeStyleMappingshape onstyled(Svg, …). - Wrapping only the outer
<Svg>and leaving inner primitives untouched. - Calling
useUnstableNativeVariable('color-foreground-tertiary')before any SVG primitive renders — still crashes.
Related: #242 — [V5] - styled doesn't work as it worked in V4 — same symptom shape, marked Done in roadmap but not yet in a published preview.
- 主要言語
- TypeScript
- スター
- 166
- フォーク
- 45
- 平均マージ
- 17日 22時間
- マージ済み PR(30日)
- 3
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nativewind/react-native-css のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
nativewind/react-native-css#554 ·
メンテナーはふだん 12 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
nativewind/react-native-css#549 · コメント 2 件 ·
メンテナーはふだん 12 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
nativewind/react-native-css#548 · コメント 2 件 ·
メンテナーはふだん 12 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
nativewind/react-native-css#545 ·
メンテナーはふだん 12 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
nativewind/react-native-css#544 ·
メンテナーはふだん 12 日以内に返信
nativewind/react-native-css の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
kunchenguid/gh-axi#247 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
lidge-jun/opencodex#8101 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
effort:S P3 refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
nightscout/nocturne#3243 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
JuliusBrussee/caveman#1449 ·
メンテナーはふだん 1 日以内に返信