every time someone says that a web site “feels fast” you must append “on my device” to the statement and a dollar must be placed in the works-on-my-machine jar
we must *measure* web performance and not rely on how things *feel*—what are we even doing, y’all
this feels like the silliest most mundane thing to say
@zachleat I feel what you're saying...
@khalidabuhakmeh *walks out*
@zachleat not exactly a measure response
@khalidabuhakmeh I measured the number of steps to the door, does that count
@zachleat i thought it was quite measured, actually
@eeeps I have feelings about this
@zachleat Wait is this about web perf or the state of, you know *gestures everywhere*
@zachleat I think it’s the sign that we are getting old. We just say silly mundane obvious things, over and over and over again.
@a11yMel I feel this deep in my bones
@zachleat my knees especially, so creaky these days
@zachleat A lot of the "perceived performance" stuff feels like a sleazy way to make sure the user doesn't notice that you're chewing through their data plan & battery lifespan.
Which might make sense, in an evil genius way, if they're using it to serve more ads or run cryptocurrency frauds in the background. But mostly it just seems to be a way to make things look snappy when you show them to executives in a boardroom to get their sign-off.
@AmeliaBR demo driven development! Reminds me of those blur-up image techniques to trick LCP that were popular for awhile
@zachleat this is why websites are as slow (or slower!) to load now as they were in the 90s, even though broadband Internet is very widespread.
it is infuriating. i am sure they load and run very quickly on the developer's machines and on the flagship smartphones connected to high quality Wi-Fi with an excellent uplink
@zachleat yeah but does it *feel* like the silliest thing, or is it measurably & demonstrably the silliest thing?
@bkardell brian we are enemies now
@zachleat it only feels that way though
@bkardell fair—we are friends again
@zachleat feels good man
@bw the vibes are on point
@zachleat Imagine if real engineers were like “yeah this bridge feels sturdy to me, ship it.”
@bw I ran 100 sports cars over the bridge so it should handle semi-trucks just fine
@bw @zachleat you mean like the ancient Roman bridge engineers many of whose bridges still exist today and carry car weights that were unthinkable when these bridges were designed? https://youtu.be/K0PA_hX8fVs
@kolya @bw it’s wild that roman bridge building is cited directly on the history of mathematics wikipedia page https://en.wikipedia.org/wiki/History_of_mathematics
@zachleat It only counts as being a fast site if it's fast on an 8088 running MicroWeb!
@zachleat The real achievement is to make a website that feels dog slow on *any* device you throw at it. Just an absolute mess where scrolling barely works and then the tab hangs
@tomw well wait these are everywhere
@zachleat But what if the standard set of measurements aren't capturing actual lived experience? A bog standard MPA might score well in tests, but if every time I change page I have to trek to the server/DB in the US (It's always in the US) and back, then it can be a worse experience than client side routing. And of course CSR isn't really captured in tests, so it's easy for people to point to an MPA and say "See the official stats? This is always better".
@peterreeves @zachleat i don’t have an opinion on any particular tests but i do think it’s mostly wishful thinking that SPAs that use a client-server architecture (i.e. render a UI on the client with data from a server) will perform better than MPAs on navigation, even in the best case where the JS is cached. in both scenarios navigation is network bound: the user sees nothing meaningful until there’s a round trip from the browser to the DB and back.
@jakelazaroff @zachleat But there are things that SPAs can do to make it faster for me as a human (rather than as a machine test). They can initiate the request when I hover on a link to get a head start, they can reduce the amount of data requested (since they may already have half the app state in memory), they can do optimistic updates, etc.
@jakelazaroff @zachleat Additionally, if I'm navigating from page A -> B -> C (assume there is no direct link from A to C, or the user meant to go for C and mis-clicked B), and B is a heavy page (think a table with thousands of items) then an MPA will be slower. Hitting page B in an MPA will require the whole DB + SSR + network dance, before I can just see the link to page C. With CSR, I see a spinner while the items load, but I don't care about them. I can click the link to page C immediately.
@peterreeves @zachleat MPAs can preload too (e.g. https://instant.page/). i think optimizations like optimistic updates tend to make apps *significantly* more complex. imo the real opportunity for SPAs is adopting sync engines and/or a local-first architecture, where the network is not in the critical path of core functionality.
@peterreeves sure but we don’t judge cars based specifically on how fast they are in 3rd gear or higher—we measure 0–60. Ignoring empty-cache first-page-load performance is starting in 3rd gear