The real invoice
A dependency costs its own bytes, plus the glue you write, plus the shared-chunk tax — once it lands in a module the shell imports, every route pays. The site's build report attributes chunks to project modules precisely so this tax is visible before the merge, not after the release.
The arithmetic that matters: bytes ÷ your slowest reader's connection. A 40 KB utility is two seconds of a 2G reader's patience, per page, until it is cached.
The questions
- Can the 40 lines it would replace be written and owned instead?
- Does it enter the shared chunk, or a route's own?
- Does it hydrate, or is it CSS-only?
- What is the exit plan — is the API small enough to unpick later?
Shared-shell budgets only work when they fail loudly. This repo's harness fails the build that grows the shell past its recorded number — and the number only moves through a written rationale.