Skip to content

v1.4.1 — react dist ships 'use client' (RSC fix)

Choose a tag to compare

@yutaro-shirai yutaro-shirai released this 12 Jun 00:02
· 74 commits to main since this release

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.1

Regression 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.