v1.4.1 — react dist ships 'use client' (RSC fix)
v1.4.1 — react dist ships 'use client' (RSC fix)
Lockstep PATCH cut for the npm group. Production-discovered in the clublink-platform rollout: @willink-labs/react@1.4.0 executes client-only code at module top level (createContext in FormField, hooks throughout) but the published dist carried no 'use client' directive — esbuild strips source-level directives during bundling — so next build crashed for any RSC consumer importing from a Server Component.
Consumers on Next.js App Router can now delete their client re-export shims and import @willink-labs/react directly from Server Components again (components remain Client Components, as before). No API or type change — the 1.4.1 index.d.ts is byte-identical to 1.4.0.
Packages
| Package | Version | Content |
|---|---|---|
@willink-labs/react |
1.4.1 | dist leads with 'use client' (tsup banner; rollup treeshake pass off — it deleted directives; ~4.7 KB dist cost) + build-output regression check |
@willink-labs/tokens |
1.4.1 | lockstep marker (no source change) |
@willink-labs/tailwind-preset |
1.4.1 | lockstep marker (no source change) |
@willink-labs/css-tokens |
1.4.1 | lockstep marker (no source change) |
No flutter-v* tag this cycle — willink_theme stays at 1.5.0 (ADR-0011).
Install
pnpm add @willink-labs/react@^1.4.1 @willink-labs/tailwind-preset@^1.4.1 @willink-labs/tokens@^1.4.1Regression guard
packages/react/scripts/check-dist-use-client.mjs runs inside pnpm build (CI gate per ADR-0012 Layer 0) and asserts every dist JS file starts with the directive — position matters for RSC, so it checks the first bytes rather than grepping for containment.
Verification
ADR-0012 Layer 0–2: full local gate at the cut (guardrails / 194 unit tests / pnpm -r build incl. playground + storybook / audit / contrast / flutter analyze + 66 tests + dry-run) / d.ts diff vs published 1.4.0 = identical (PATCH proof) / published-tarball smoke test: 'use client'; at byte 0 of dist/index.js, exactly 1 occurrence, SLSA provenance attested, workspace:* peerDeps resolved to 1.4.1 / npm view ×4 == 1.4.1. PR: #53.