Lea Verou, PhD
banner
lea.verou.me
Lea Verou, PhD
@lea.verou.me
I make things for making things.

@[email protected] on Mastodon, @leaverou elsewhere
https://lea.verou.me
The #JS utility you never knew you needed 😂
Create multiple Symbols in one go with this Proxy-based one liner.
October 29, 2025 at 6:07 AM
In today’s episode of Useless Info I just learned about #JS:

Turns out you cannot subclass Proxy (because it has no prototype).

Nice try Lea 🥲
October 29, 2025 at 1:07 AM
Yes, in all Safari the proxy is slower, though not tremendously so in desktop:
October 27, 2025 at 10:06 PM
After years of internalizing that JS proxies are suuuper slow, I was surprised to find that in Chrome, they seem faster for running function side effects than simply wrapping a function: jsbenchmark.com#eyJjYXNlcyI6...
October 27, 2025 at 9:08 PM
When your context menu has this many options, it's time rethink your overall #UI
October 26, 2025 at 6:02 PM
I’m in love with this flexible date selector by kiwi.com 😍

It really drives home the point that good #UX is about accommodating user intent, not conserving clicks.

Clicking on the more common "±N days" is faster, but is it always a better experience?

[1/2]
October 15, 2025 at 5:39 PM
I’m in love with @sarahedo.bsky.social’s hand-drawn illustrations in her #jsconf slides 😍

Great talk too, I dig the high-level overview of how different platforms do UI, that’s exactly the kind of cross-pollination we need to design better APIs for the Web.
October 14, 2025 at 2:21 PM
✈️ I was puzzled why so many delays and cancellations so I made the mistake of googling it and now I’m terrified. 😰
October 13, 2025 at 8:36 PM
And it gets worse…

Suppose you’re taking a friend along on the trip, so you’re now 3 adults + 1 kid. Then with Family, you actually pay more!

And no, you cannot opt-out of it and book everyone on a regular Flex fare. Chances are, you likely wouldn't even know, and would be glad for the "discount"!
September 24, 2025 at 1:19 PM
That wipes out even that 5%, making the grand total of savings less than $1, an effective discount of 0%.

In fact, after I took these screenshots, the fare changed slightly so in the OP screenshots the difference is literally $0.00!

Surely, 0% is as bad as it gets, right? Wrong. [5/7]
September 24, 2025 at 1:19 PM
Exhibit A: ATH-VIE on Sep 30
2 adults: Flex is $319.88/pax
1 adult + 1 kid: Flex → Family, now $362/pax (+13%). Flex no longer bookable.

So how much is the actual discount?
$319.88 * 2 = $639.76
$362.13 * 1.6 = $579.408
2 - 579.408 / 319.88 = 18.9% off

But it’s actually even worse… [2/7]
September 24, 2025 at 1:19 PM
I like Aegean Airlines but their "40% discount for children" is a scam.

tl;dr: The "40% off" is based on a fake inflated fare. The effective discount is 14% for 1 adult + 1 child, 0% for 2 adults + 1 child, and actually increases for adult:children ratios > 2:1 with no opt-out.

An exposé. [1/7]
September 24, 2025 at 1:19 PM
Computing some preliminary analysis over the #StateOfHTML pain points data and some …interesting patterns are emerging 🙃
September 22, 2025 at 2:20 PM
Trying out ChatGPT Pro. It reminds me of some overconfident dudes I’ve worked with.

If you read its own commentary about what its doing, you expect to be floored by the quality of its results.

Then you look at the actual output and you’re like …that was it? That’s what all the fuss was about?
September 7, 2025 at 12:16 AM
Despite leading this year’s #StateOfHTML survey, I procrastinated in typical me fashion and submitted my response in the last few hours — I had to beg @sachagreif.com to leave it open for just a little longer 🫣

If you’re like me, here’s the link: survey.devographics.com/en-US/survey...
September 1, 2025 at 11:29 AM
This might be a nitpick but both 2 and 3 are correct, you *can* use @property to only define inheritance rules with no type information via syntax: “*”
August 13, 2025 at 11:58 PM
Re: inaccuracies the one that threw me the most was this one

*Any* color function can perform color space conversion (with relative colors) including color()
August 13, 2025 at 11:50 PM
Another day, another weird print-related #ChromeBug

I actually reported it this time: issues.chromium.org/issues/43489...
July 29, 2025 at 6:16 PM
Lovely UX touch from ChatGPT: Holding down Cmd brings up a cheatsheet of keyboard shortcuts.

Help that is there when it’s needed and out of the way when it’s not.

Compare that to the common (anti)pattern where users must memorize a specific keyboard shortcut to bring this up (does anyone?).
July 26, 2025 at 12:06 AM
Quick pulse check as @sachagreif.com and I finalize #StateOfHTML:
If you were presented with this question in a survey:
a) Do you know which options to check or would you be confused?
b) Are there any options you'd personally need to enter but are missing?

(this post may self-destruct tomorrow…)
July 15, 2025 at 11:43 PM
Just finished taking this year’s #StateOfCSS!

It was quite funny that there were CSS features I had designed where I had to select "Heard of it" because *technically* I haven't used them yet. 😅

If you plan to take it, do it now, it's closing very soon: stateofcss.com/en-US
July 14, 2025 at 11:54 PM
[2/2]

When we manage, we apply the same systems to folks without that weight, so they FLY. No resistance. Just lift.

Add the diverse skillsets, innovative thinking, hyperfocus, pattern recognition, risk tolerance, and you’re shooting through the sky like a tiger defying the laws of gravity.
June 14, 2025 at 6:39 PM
I LOVE this …Chart of Shame on webstatus.dev/stats “Features missing in only one browser”.

Even lets you click on individual data points and see which features each browser is holding the Web back from!

Hopefully it will motivate implementations of these features!
May 29, 2025 at 8:25 PM
TIL there are Japanese pills that make you sing better at karaoke and it is now my life quest to procure them 🥲
April 26, 2025 at 4:52 PM
What a great day to have Unicode
April 25, 2025 at 4:43 AM