the ENTRY QUARTERS
ALTITUDE 2⅞ — the same wire, cut by published package · every exported entry priced alone · 27 doors in 11 package quarters, footprint from minified bytes and height from gzipped, dependencies external — counted at origin/main @ eb1162da (2026-10-18)
GENERAL NOTES
Method: the same probe as sheet 10's doors strip, run to completion: every exported entry of the 11 publishable packages bundled alone with rolldown — minified, declared dependencies and peers external — which is the price a consumer's bundler pays at that door, and byte-for-byte the <pkg>-<label>-esm series CI uploads to codecov. Footprint is minified bytes, height gzipped. Every number is read at build time from the checked-in plate www/ — counted at origin/main @ eb1162da (2026-10-18), probed as git archive origin/main @ eb1162da + pnpm install --frozen-lockfile --silent (mise-provisioned pnpm) + turbo run build:js --filter — and a door the plate carries that the drawing does not place is a build error, not a stale constant. Sheet 10 is the unified view — one real app's bundle with all of these mixed by the bundler; this sheet cuts the same machinery by published package and entry point. The quarters don't sum and shouldn't: doors overlap (./ is . minus registration), which is exactly what the split view exists to show.
The twin towers are one building with two doors. . and ./ differ by 227 gzipped bytes — the whole cost of custom-element registration. The register economics run the other way: the two one-element doors sum to 5,449 gz while the umbrella ./ is 3,684, because each element door carries the shared element core with it. Take the umbrella or one element door; taking two per-element doors ships the core twice.
The server is a storefront, not a tower. Ten doors: an index at 7,188 gz, 1,769 under the client flagship; redirect and matcher wings at 3,756 and 2,918; four framework adapters — hono, fetch, vite, connect — packed within 77 bytes of one another, which is what thin skins over one core look like priced; and three doors that barely register, ./ at 668 bytes, ./ at 626, and ./ at 363, the last the cheapest door on the sheet.
Two more quarters, and one of them sits between the other two. lit-ui-router-effect enters at 1,125 gz through its one door. lit-ui-router-ssr has three: the prerender index at 2,876 gz, ./ — the browser half that adopts a served render — at 1,947, and ./, which defines <ui-router> and a served <ui-view> in place of lit-ui-router/, at 913. The ssr quarter is drawn in the gap between the client and server quarters because that is where its declarations put it: it is the one package here that peers both lit-ui-router and ui-router-server (sheet 4 draws that bridge). npm serves it under latest at 0.4.0, the version its package.json carries at this ref.
Four more one-door quarters, the signals pair, the renderer-free effect ref and the mobx store. lit-ui-router-signals binds the router to a Lit host at 657 gz; ui-router-signals, ui-router-effect and ui-router-mobx, the renderer-free halves that hold one hook per router, enter at 804, 464 and 459 — each under the 1,765-byte element-door gap. npm serves them under latest at 0.1.1, 0.1.1, 0.1.2 and 0.1.1, the versions their package.json files carry at this ref.
Plugins price like footnotes. The mobx Lit binding enters at 513 gz and its store at 459, the navigation-location plugin at 1,152 — each cheaper than the 1,765-byte gap between ./ and its two element doors — and the effect and ssr index doors (1,125 and 2,876) each cost under half the flagship's own . door at 8,957. The expensive thing in this family is never the adapter; it is the state machine they all defer to, and that machine (sheet 10's @uirouter/) is external here by design.
Door 27 is not a door a browser opens. eslint-plugin-lit-ui-router (#676) is the family's one non-runtime published package, so its quarter is drawn but its number means something different: 19,401 minified, 6,313 gz is what a lint host loads, once, at author time. It is priced here because the probe prices every published entry without exception — the honest thing for a ledger — and it is worth knowing that the plugin costs 70% of the flagship to a tool that already has Node's whole module graph resident. Nothing in it ever reaches a bundle: it peers ESLint alone — oxlint loads it as a JS plugin, unpeered — never @uirouter/ (sheet 2 leaves it off the plate for the same reason).
Why both views exist. The split view is the seller's ledger — what each door costs at the threshold. The unified view is the buyer's receipt — what one app's bundler actually made of them (it paid 7,354 of the flagship's 8,957). Codecov tracks the ledger per commit; sheet 10 audits the receipt.
KEY
| exported entry — height = gz, deps external | |
| a lit-ui-router door | |
| quarter = one published package · 27 doors, 11 packages |