This twitter account is not operated by Lea Verou. It retweets all of Lea's dev stuff! Follow her directly (@LeaVerou) to read her views on non dev stuff too.
If you filled out the #StateOfCSS survey and got a demoralizing "top 100%" of respondents you’re not alone!
I got @sachagreif.com to fix the bug, so if you visit https://t.co/H5Di7ibtIc you can see your real percentile.
And pssst, did you know you can go back and add any pain points you forgot the first time? 😉
If you haven’t filled out the survey, hurry, it closes TOMORROW!! 😱 Last chance to get your needs heard by browser vendors!
Finally took #StateOfCSS this year, DAYS before closing! 😱
Take it now ➡️ https://t.co/hGweshLkeg
🚨 If you write #CSS, this will be your highest-ROI 30m this year.
Browsers look at the results to decide what to implement next.
Can pause/resume across multiple devices.
Partial responses still valuable!
Only got 5m? Just enter your pain points.
I suspect my wishlist might be the longest across all respondents. 😅 Including it below for lulz or inspiration 👇
💡Recent insight: gaslighting @claudeai seems to improve code quality >90% of the time.
“You overengineered this, there is a simpler way”
“There is a smaller delta that buys us most of the benefits”
“There is a more elegant way”
“This is not architecturally coherent”
…before I even read its code. 😆
Implementing `polygon(round)` was a challenging yet incredibly rewarding process. We received tremendous support from the Blink CSS, Paint, Opera and Skia teams.
It’s finally set to debut in Chrome 150!
https://t.co/iLk21IHECa
Before we claim that LLMs generate bad frontend code, we should establish the frame of reference. Bad compared to what?
Many of these discussions compare LLMs against some idealized standard of “perfect” frontend code, forgetting the realities of most human-authored code that came before them.
In my experience, LLMs produce *far* better code than the average frontend developer, just not better than the superstar top 1% dev.
Is it just me or did @claudeai get less competent lately?
Terrible overengineering, poor abstractions, missing the point entirely, and all of that with terrible latency. A shadow of its former self!
It’s starting to remind me of Codex back in Feb (no idea what it's like now).
Nothing new installed, no new config. @DmitrySharabin noticed the same thing. Today, he switched back to Opus 4.6, in hopes.
I’m holding back to see how his experiment goes before switching myself, but it’s driving me insane.
Thrilled this is now out, keeping quiet has been SO HARD! 🤐
I’ve had the opportunity to contribute to this project as a domain expert consultant over the past few months, and have seen firsthand the level of thoughtfulness and genuine care for developers and the web platform that has gone into it. ❤️
It’s still very early days, but I’m really proud to have played a small part, and excited for what's next. Looking forward to seeing what folks build with it!
The current state of AccentColor/AccentColorText:
4 browsers, 4 different color pairs
From left to right: Chrome 148 (stable), Chrome 150 (canary), Safari, Firefox.
- No browser uses the accent-color property for it (Sep 2025 spec change)
- Chrome: had removed support, re-adding w/ with a hardcoded blue and automatic AccentColorText
- Safari: hardcoded blue, always black text (?) If so, yikes.
- Firefox: actual OS accent color, automatic AccentColorText
Why would all browsers not use the real OS accent color? Fingerprinting concerns.
Up to you whether this is a reasonable tradeoff. 🤷🏽♀️
🚨 What are some modern web platform (CSS, HTML, JS) features that you wish your AI agent utilized, but doesn't (or gets them wrong)?
I’ll go first:
- CSS: lh unit, trig functions, nesting
- HTML: inert attribute
- JS: Object.groupBy(), Regex lookbehind, regex named groups, RegExp.escape()
🤩 Turns out *both* Chrome & Safari quietly implemented calc(length/length) last year and it's reached 80% market share!
Testcase: https://t.co/MQUglfEKXC
caniuse: https://t.co/io61pnjJZA
Sadly, @janeori's atan2 hack won't work in Firefox as a fallback https://t.co/NnY1ENSdkv
Our implementation has been merged into Chrome Canary; please enable the `enable-experimental-web-platform-features` flag .
Enjoy it! 🔥🔥
https://t.co/7ooENFsKTu
I and @imCGQAQ are currently working on implementing the CSS `polygon() round` keyword in Chrome.
This is one of my favorite CSS features! Thanks to @LeaVerou for bringing it to CSS.
The CodePen link is coming soon.
Thank you all for voting! Thanks to your input we managed to reverse the resolution that forced all mixins to be scoped — sibling and ancestor rules will no longer be silently dropped from mixins. 🎉
Relevant WG resolution: https://t.co/GnV1Bdulaa
My slides: https://t.co/h8oyhRWVEO
This ended up being such a useful lil' utility I just published a package with it so others can enjoy hassle-free #JS symbols by the truckload!
https://t.co/qD1YflOMOn
Looks like there's a bug with @X polls right now (e.g. I see 0 votes although I know people who have voted).
Hopefully votes are still stored and will eventually be counted!
I set up a poll here if you want to make sure your vote is counted: https://t.co/WAlqy5Cx2B
Or on Mastodon: https://t.co/DPMjioEXcK
🚨 Want mixins in CSS?
Help the @csswg by telling us what feels natural to you!
Look at the code in the screenshot. What resulting widths would you find least surprising?
A: All get 100px
B: div gets 100px, div > h2 gets 200px, div + p gets 300px
C: div gets 100px, div > h2 gets 200px, div + p gets no width
D: div and div > h2 get 100px, div + p gets no width
Poll in next tweet!
Please answer based on what feels natural to you, not what the current proposal says.
Folks don’t want to hear this, but my guess is, in a year, you won’t look at the code your agent writes at all.
Doing so would be both beyond your ability and pointless.