Skip to content

chore(size): raise three hydrating caps for #4059 + #4061 together - #4068

Closed
ryansolid wants to merge 1 commit into
nextfrom
claude/project-thread-ntysj0
Closed

ryansolid wants to merge 1 commit into
nextfrom
claude/project-thread-ntysj0

Conversation

@ryansolid

Copy link
Copy Markdown
Member

Requested by Ryan · project thread

Summary

Before: the Size check is red on next since #4059 merged (runs on 2da0f8e and 47d2346). #4059 and #4061 each passed the size gate alone. Together, #4061's +61 B minified client change lands on top of the caps #4059 had just raised, which puts three hydrating scenarios over.

After: those three caps are raised to CI's measurement + 10 B, rounded up to 0.01 KB, with ledger entries. No code changes.

scenario measured (CI and local agree) minified cap
app: hydrating (no stores), frozen floor 18,124 B 53,350 → 53,411 18.09 → 18.14 KB
app: hydrating + every store primitive family 29,664 B 93,714 → 93,775 29.65 → 29.68 KB
app: compiled hydrating 31,881 B 101,338 → 101,399 31.78 → 31.90 KB

The +61 B comes from #4061's packages/web/src/client.ts change (the #4049 Loading + lazy hydration order fix). That attribution is inferred from #4061 being the only client change in between; the gate reports +0 B over each PR's own base.

The "live server components" page stays a warning only: it is 47 B over its brotli cap but 926 B under its recorded minified.

Size-Exception: app: hydrating (no stores) floor 18.09 -> 18.14 KB (+61 B minified, 53,350 -> 53,411) from #4061's Loading + lazy hydration order fix landing on top of #4059's raised cap; restores the Size check on next.

How did you test this change?

  • pnpm build, then node size.mjs on next @ 47d2346 reproduced CI's numbers exactly (18,124 / 29,664 / 31,881 B). With this change all three pass; only the live SC page warns, as on CI.
  • node gate.test.mjs passes. Prettier is clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KRieFbP8sapvTBygyVm3mg


Generated by Claude Code

Each PR passed the size gate alone; combined on next they put the
hydrating (no stores), hydrating + stores and compiled hydrating
scenarios over their caps (+61 B minified from #4061). Caps set at
CI's measurement + 10 B.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KRieFbP8sapvTBygyVm3mg
@ryansolid ryansolid self-assigned this Oct 14, 2026
@changeset-bot

changeset-bot Bot commented Oct 14, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 73a1160

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown

Size (brotli, eager entry chunk)

scenario head vs base minified vs base minified vs recorded cap lazy chunks (not counted)
signals: core floor (createSignal/Memo/Effect/Root/flush) 7.47 KB 0 B 0 B +19 B 7.48 KB ✅
signals: + createStore 14.90 KB 0 B 0 B +6 B 14.94 KB ✅
signals: + isPending/latest 9.77 KB 0 B 0 B +18 B 9.77 KB ⚠️ over by 3 B, 2 B minified headroom
app: render + one signal (the simple-app floor) 9.98 KB 0 B 0 B +18 B 9.98 KB ⚠️ over by 2 B, 2 B minified headroom
app: hydrating (no stores) with Show/For/Loading/Errored/lazy 18.09 KB 0 B 0 B −70 B 18.14 KB ✅ lazy-page.js 0.04 KB
app: hydrating + every store primitive family 29.65 KB 0 B 0 B −67 B 29.68 KB ✅ lazy-page.js 0.04 KB
app: CSR with Show/For/Loading/Errored/lazy 13.20 KB 0 B 0 B −69 B 13.20 KB ✅ lazy-page.js 0.04 KB
app: CSR, observe tier (same app on the observe artifacts) 14.76 KB 0 B 0 B −67 B 14.79 KB ✅ lazy-page.js 0.04 KB
app: CSR, observe tier + attribution engine enabled 29.40 KB 0 B 0 B −66 B 29.38 KB ⚠️ over by 18 B, 86 B minified headroom lazy-page.js 0.04 KB
app: compiled floor (one template, one text hole, one delegated click) 10.19 KB 0 B 0 B +18 B 10.17 KB ⚠️ over by 17 B, 2 B minified headroom
app: compiled CSR (JSX todo app: spread/merge/omit, events, class/style, keyed For, Show, Loading + lazy, store) 25.85 KB 0 B 0 B −67 B 25.92 KB ✅ stats.js 0.18 KB
app: compiled hydrating (the same JSX todo app through hydrate(), compiled hydratable) 31.78 KB 0 B 0 B −67 B 31.90 KB ✅ stats.js 0.20 KB
frames: eager client consumer (frames client + transport, lazy codec) 11.54 KB 0 B 0 B 0 B 11.54 KB ✅
page: base server components (hydrating + dynamic + frames + sf reference) 34.33 KB 0 B 0 B −932 B 34.33 KB ✅ assets.js 0.78 KB, bind.js 1.83 KB, decode.js 6.23 KB, lazy-page.js 0.04 KB, regions.js 0.80 KB, trace.js 9.02 KB, wire.js 0.93 KB
page: live server components (base + live/GET + action + isPending/latest) 38.15 KB 0 B 0 B −996 B 38.15 KB ✅ assets.js 0.78 KB, bind.js 1.83 KB, decode.js 6.23 KB, lazy-page.js 0.04 KB, regions.js 0.80 KB, trace.js 9.00 KB, wire.js 0.93 KB
page: compiled base server components (the base page as JSX: templates with class/style/attributes/events, For/Show; no spread) 35.18 KB 0 B 0 B −2022 B 35.66 KB ✅ assets.js 0.78 KB, bind.js 1.83 KB, decode.js 6.23 KB, regions.js 0.80 KB, sc-comments.js 0.20 KB, trace.js 8.98 KB, wire.js 0.93 KB
page: compiled live server components (the compiled base page + live/GET + action + isPending/latest) 40.84 KB 0 B 0 B −2010 B 41.21 KB ✅ eager (counted): web.js 21.67 KB; assets.js 0.78 KB, bind.js 1.84 KB, decode.js 6.23 KB, regions.js 0.79 KB, sc-comments.js 0.19 KB, trace.js 8.98 KB, wire.js 0.93 KB
page: base + router (base page + @solidjs/router: createRouter, two routes, preload, useNavigate) 41.73 KB 0 B 0 B −938 B 41.79 KB ✅ assets.js 0.78 KB, bind.js 1.85 KB, decode.js 6.23 KB, lazy-page.js 0.04 KB, regions.js 0.80 KB, server.js 1.02 KB, serverForms.js 3.58 KB, trace.js 9.02 KB, wire.js 0.94 KB
page: live + router (live page + @solidjs/router: createRouter, two routes, preload, useNavigate) 47.50 KB 0 B 0 B −932 B 47.49 KB ⚠️ over by 7 B, 952 B minified headroom eager (counted): client.js 27.90 KB; assets.js 0.78 KB, bind.js 1.84 KB, decode.js 6.23 KB, lazy-page.js 0.04 KB, regions.js 0.81 KB, server.js 1.02 KB, serverForms.js 3.30 KB, trace.js 9.00 KB, wire.js 0.94 KB
server: floor (getRequestEvent + isServer) 1.33 KB 0 B 0 B 0 B 1.34 KB ✅
server: renderToString (the server-render floor) 20.57 KB 0 B 0 B 0 B 20.58 KB ✅

⚠️ Over the brotli cap within the minified allowance (passes)

  • signals: + isPending/latest: over brotli cap by 3 B; minified 27,465 B vs 27,447 B recorded with the cap (+18 B) — 2 B of the 20 B minified allowance left; +0 B minified over this PR's base
  • app: render + one signal (the simple-app floor): over brotli cap by 2 B; minified 27,963 B vs 27,945 B recorded with the cap (+18 B) — 2 B of the 20 B minified allowance left; +0 B minified over this PR's base
  • app: CSR, observe tier + attribution engine enabled: over brotli cap by 18 B; minified 88,264 B vs 88,330 B recorded with the cap (−66 B) — 86 B of the 20 B minified allowance left; +0 B minified over this PR's base
  • app: compiled floor (one template, one text hole, one delegated click): over brotli cap by 17 B; minified 28,493 B vs 28,475 B recorded with the cap (+18 B) — 2 B of the 20 B minified allowance left; +0 B minified over this PR's base
  • page: live + router (live page + @solidjs/router: createRouter, two routes, preload, useNavigate): over brotli cap by 7 B; minified 143,192 B vs 144,124 B recorded with the cap (−932 B) — 952 B of the 20 B minified allowance left; +0 B minified over this PR's base

Bundled with Rolldown (what Vite ships), brotli q11, decimal KB. A scenario fails only when it is over its brotli cap and its minified size is more than 20 B over the minified recorded with the cap; over the cap within that allowance is brotli layout noise and passes with a warning. Caps and their recorded minified in scripts/size/scenarios.js; the floor and page caps in floor-caps.json are frozen (lower only, or Size-Exception: in the PR body). npm run ratchet lowers caps per RC; it never raises one (scripts/size/README.md).

Copy link
Copy Markdown
Member Author

Closing: #4065 merged while this was open and shrank the signals core by enough (about −128 B minified on the hydrating scenarios) that all three caps pass again at their current values. The Size check is green on next @ 0109a56, so no raise is needed.


Generated by Claude Code

@ryansolid ryansolid closed this Oct 14, 2026
@codspeed

codspeed Bot commented Oct 14, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 9.74%

⚠️ 2 benchmarks spent significant time in system calls

System calls cannot be consistently instrumented, so they are not included in the measure, which understates the real cost. Please switch to the Walltime instrument to accurately measure system calls.

Measurement and system calls

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

❌ 2 regressed benchmarks
✅ 193 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
❌ createStore setter: delete + set one root key (#3044 overlay) 1.8 ms 2 ms -12.03%
❌ memo + sync render effect only (reference) 26.6 ms 28.7 ms -7.38%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing claude/project-thread-ntysj0 (73a1160) with next (47d2346)1

Open in CodSpeed

Footnotes

  1. No successful run was found on next (0109a56) during the generation of this report, so 47d2346 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants