The Ethics of Weight
Every kilobyte you ship is spent on someone else's device, data plan, and battery. A case for treating performance as a moral question, not just an engineering one.
We talk about web performance as an engineering concern — a number on a dashboard, a Lighthouse score, a Core Web Vital to be nudged from amber to green. That framing is comfortable because it keeps the question inside the building. The performance is our metric, on our graph, and we optimize it the way we’d optimize any other system we own.
But the page doesn’t run on our machines. It runs on someone else’s — and that’s where the framing starts to feel inadequate. Every kilobyte we ship is spent somewhere we’ll never see: on a four-year-old phone, on a metered data plan in a country where a gigabyte costs an hour’s wage, on a battery that drains a little faster because our hero section ships three megabytes of JavaScript to render some text. Performance isn’t really our number. It’s a cost we externalize onto strangers.
The privilege of the test device
Most performance regressions ship because the people who built the thing never felt them. We develop on fast machines, on fast networks, in cities with cheap data, and the site feels instant — to us. The user on the edge of the network, on the device we’d have thrown away two years ago, experiences a different product entirely. They just don’t get to file the bug, because the site technically works; it’s merely slow, heavy, and hostile in a way no error log captures.
This is why I’ve stopped treating the slow connection and the old device as edge cases. They aren’t edges. For a great many people on earth, they’re the center. The fast path is the privilege.
Weight is a budget someone else pays
The cleanest reframing I know is this: a performance budget is real money, but the person paying isn’t you.
When you add a 200KB analytics bundle, you’ve made a spending decision on behalf of every visitor — a little of their data, a little of their battery, a little of their time. The decision might be worth it. But it should be made, deliberately, the way you’d make any decision to spend someone else’s resources, rather than backed into because a stakeholder wanted a dashboard.
Default to less
So I default to less and make the team argue up to more. No third-party script ships without someone owning the question of what it costs the user. No image ships unoptimized. No framework gets adopted on the strength of developer experience alone, because developer experience is our comfort, and the user is the one who pays for it in download size.
Speed is an accessibility issue
We file performance and accessibility in separate folders, but on the ground they’re the same concern. A page that takes twelve seconds to become usable is inaccessible to someone on a slow connection in exactly the way an unlabeled button is inaccessible to someone using a screen reader. Both exclude. Both say, implicitly, this wasn’t built for you.
The difference is that we’ve trained ourselves to see the missing alt text and to not see the three-megabyte payload, because the payload doesn’t trip an automated checker on our fast machine. The exclusion is just as real; it’s only quieter.
The craft of subtraction
The good news is that performance, done as ethics, is mostly subtraction — and subtraction is a craft you can get genuinely good at. Removing a dependency, deferring a script, replacing a heavy component with a few lines of vanilla code, shipping a system font instead of a 400KB webfont family. Each of these is a small act of giving time and money back to people who never asked you to take it.
I run a deliberately spare local toolchain for the same reason — fewer background processes, less waiting, a clearer head. A launcher like Raycast replaced a half-dozen heavier utilities on my own machine, and the discipline of one tool that does the job lightly turns out to be the same discipline I want in the things I ship.
Whose afternoon is it
In the end the question is simple, even if the engineering isn’t. Every page you ship spends a little of a stranger’s afternoon. The only honest thing to do is spend it carefully — to treat the weight you send down the wire as a cost you owe to someone you’ll never meet, and to keep it as small as the job allows.
That’s not a Lighthouse score. It’s a courtesy. And courtesy, extended at scale to millions of people you can’t see, is most of what it means to build the web well.