The intersectionality of web performance

Web performance is an unalloyed good. No one has ever complained that a website is too fast.

So the benefit is pretty obvious. Users like fast websites. But there are other benefits to web performance. And they don’t all get equal airtime.

Business

A lot of good web performance practices come down to the first half of Postel’s Law: be conservative in what send. Images, fonts, JavaScript …remove what you don’t need and optimise the hell out of what’s left.

That can translate to savings. If you’re paying for the bandwidth every time a hefty file is downloaded, your monthly bill could get pretty big.

So apart from the indirect business benefits of happy users converting to happy customers, there can be a real nuts’n’bolts bottom-line saving to be made by having a snappy website.

Sustainability

This is related to the cost-savings benefit. If you’re shipping less stuff down the wire, and you’re optimising what you do send, then there’s less energy required.

Whether less energy directly translates to a smaller carbon footprint depends on how the energy is being generated. If your servers are running on 100% renewable energy sources, then reducing the output of your responses won’t reduce your carbon footprint.

But there’s an energy cost at the other end too. Think of all the devices making requests to your server. If you’re making those devices work hard—by downloading, parsing, executing lots of JavaScript, for example—then you’re draining battery life. And you can’t guarantee that the battery will be replenished from renewable energy sources.

That’s why sites like the website carbon calculator have so much crossover with web performance:

From data centres to transmission networks to the billions of connected devices that we hold in our hands, it is all consuming electricity, and in turn producing carbon emissions equal to or greater than the global aviation industry. Yikes!

Inclusivity

There comes a point when a slow website isn’t just inconvenient, it’s inaccessible.

I’ve always liked the German phrase for accessible: barrierefrei—free of barriers. With every file you add to a website’s dependencies, you’re adding one more barrier. Eventually the barrier is insurmountable for people with older devices or slower internet connections. If they can no longer access your website, your website is quite literally inaccessible.

Making the case

I’ve noticed that when it comes to making the argument in favour of better web performance, people often default to the business benefits.

I get it. We’re always being told to speak the language of business. The psychology seems pretty straightforward; if you think that the people you’re trying to convince are mostly concerned with the bottom line, use the language of commerce to change their minds.

But that’s always felt reductive to me.

Sure, those people almost certainly do care about the business. Who doesn’t? But they’re also humans. I feel like if really want to convince them, speak to their hearts. Show them the bigger picture.

Eliel Saarinen said:

Always design a thing by considering it in its next larger context; a chair in a room, a room in a house, a house in an environment, an environment in a city plan.

I think the same could apply to making the case for web performance. Don’t stop at the obvious benefits. Go wider. Show the big-picture implications.

Have you published a response to this? :

Responses

8 Shares

# Shared by Baldur Bjarnason on Wednesday, May 3rd, 2023 at 1:04pm

# Shared by Sascha Diercks on Wednesday, May 3rd, 2023 at 2:07pm

# Shared by Rob Mills on Wednesday, May 3rd, 2023 at 4:14pm

# Shared by Olivier Audard on Wednesday, May 3rd, 2023 at 7:14pm

# Shared by Eric on Wednesday, May 3rd, 2023 at 7:14pm

# Shared by Arpit on Thursday, May 4th, 2023 at 2:47am

# Shared by Chris Taylor on Thursday, May 4th, 2023 at 2:44pm

# Shared by FeralRobots on Monday, May 8th, 2023 at 2:15pm

13 Likes

# Liked by Simon St.Laurent on Wednesday, May 3rd, 2023 at 1:04pm

# Liked by Baldur Bjarnason on Wednesday, May 3rd, 2023 at 1:04pm

# Liked by Matthias Ott on Wednesday, May 3rd, 2023 at 1:31pm

# Liked by beep on Wednesday, May 3rd, 2023 at 2:07pm

# Liked by Btrinen on Wednesday, May 3rd, 2023 at 2:40pm

# Liked by Scott Orchard on Wednesday, May 3rd, 2023 at 3:13pm

# Liked by Luke Dorny :ComputerClassic: on Wednesday, May 3rd, 2023 at 4:39pm

# Liked by David Ross on Wednesday, May 3rd, 2023 at 7:14pm

# Liked by Paul Hebert on Wednesday, May 3rd, 2023 at 7:43pm

# Liked by Rasmus Kaj on Wednesday, May 3rd, 2023 at 8:18pm

# Liked by Chris Taylor on Thursday, May 4th, 2023 at 2:44pm

# Liked by FeralRobots on Monday, May 8th, 2023 at 2:14pm

# Liked by astra on Monday, May 8th, 2023 at 4:15pm

Related posts

A web font strategy

How I’m prioritising performance when it comes to typography on The Session.

The Invisibles

Making a checklist of things that fall somewhere between front-end and back-end development.

The web on mobile

Technically, websites can do just about anything that native apps can do. And yet the actual experience of using the web on mobile is worse than ever.

content-visibility in Safari

Safari 18 supports `content-visibility: auto` …but there’s a very niche little bug in the implementation.

Speculation rules

A performance boost in Chrome.

Related links

JS-heavy approaches are not compatible with long-term performance goals

Frameworks like React are often perceived as accelerators, or even as the only sensible way to do web development. There’s this notion that a more “modern” stack (read: JS-heavy, where the JS ends up running on the user’s browser) allows you to be more agile, release more often with fewer bugs, make code more maintainable, and ultimately launch better sites. In short, the claim is that this approach will offer huge improvements to developer experience, and that these DevEx benefits will trickle down to the user.

But over the years, this narrative has proven to be unrealistic, at best. In reality, for any decently sized JS-heavy project, you should expect that what you build will be slower than advertised, it will keep getting slower over time while it sees ongoing work, and it will take more effort to develop and especially to maintain than what you were led to believe, with as many bugs as any other approach.

Where it comes to performance, the important thing to note is that a JS-heavy approach (and particularly one based on React & friends) will most likely not be a good starting point; in fact, it will probably prove to be a performance minefield that you will need to keep revisiting, risking a detonation with every new commit.

Tagged with

The Main Thread Is Not Yours — Den Odell

Every millisecond you spend executing JavaScript is a millisecond the browser can’t spend responding to a click, updating a scroll position, or acknowledging that the user did just try to type something. When your code runs long, you’re not causing “jank” in some abstract technical sense; you’re ignoring someone who’s trying to talk to you.

This is a great way to think about client-side JavaScript!

Also:

Before your application code runs a single line, your framework has already spent some of the user’s main thread budget on initialization, hydration, and virtual DOM reconciliation.

Tagged with

I Built the Same App 10 Times: Evaluating Frameworks for Mobile Performance | Loren Stewart

A very, very deep dive into like-for-like comparison of JavaScript frameworks. The takeaway:

Nuxt demonstrates that established “big three” frameworks can achieve next-gen performance when properly configured. Vue’s architecture allows competitive mobile web performance while maintaining a mature ecosystem. React and Angular show no path to similar results.

And the real takeaway:

Mobile is the web. These measurements matter because mobile web is the primary internet for billions of people. If your app is accessible via URL, people will use it on phones with cellular connections. Optimizing for desktop and hoping mobile is good enough is backwards. The web is mobile. Build for that reality.

Tagged with

It’s time for modern CSS to kill the SPA - Jono Alderson

SPAs were a clever solution to a temporary limitation. But that limitation no longer exists.

Use modern server rendering. Use actual pages. Animate with CSS. Preload with intent. Ship less JavaScript.

Tagged with

Website Speed Test

Here’s a handy free tool from Calibre that’ll give your website a performance assessment.

Tagged with

Previously on this day

4 years ago I wrote Bugblogging

Also, tipblogging.

6 years ago I wrote Television

A run-down of what I’ve been watching during The Situation

8 years ago I wrote Good griddance

How CSS grid is making my life easier.

11 years ago I wrote 100 words 042

Day forty two.

20 years ago I wrote Helvetican crossing

I’m taking a trip down memory lane, Freiburg, Germany via Basel, Switzerland.

23 years ago I wrote Pynchon on Orwell

Following up on my earlier post about Newspeak, here’s a superb essay by Thomas Pynchon on 1984 which is part of the introduction to a new edition of the book published next week. In it, Pynchon finds hope in the very inclusion of the Newspeak Appen

23 years ago I wrote Obey Day

I feel I must apoligise to American readers for my earlier entreaties for a happy May Day.

24 years ago I wrote åsa & malin proudly present...

Local Flash heroes Kerb have relaunched their website.

24 years ago I wrote The World According to Student Bloopers

Students say the funniest things: