# Lea Verou's blog

Web standards, Software Engineering, Product, Usability, and more

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Why Most Websites Should Avoid Persistent Dark Mode Toggles

DevFeed: [Why Most Websites Should Avoid Persistent Dark Mode Toggles](<https://devfeed.tech/articles/the-best-dark-mode-toggle-is-probably-none-52168.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2026/dark-mode-toggles-2/>)

Author: Lea Verou

Published: 2026-09-02T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [css](<https://devfeed.tech/tags/css.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [design](<https://devfeed.tech/tags/design.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [toggle](<https://devfeed.tech/tags/toggle.md>), [usability](<https://devfeed.tech/tags/usability.md>), [ux](<https://devfeed.tech/tags/ux.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

The article argues that most websites should not use a persistent dark mode toggle. It retains a recommendation for a two-state control when such a control is required, switching between the system preference and its opposite rather than exposing separate light, dark, and system states.

### Source excerpt

About a month ago, I wrote an article recommending that if you are going to have an always visible control for switching between light and dark mode, it should be a two-state toggle that alternates between system and whatever the current opposite of system is, not a tri-state one (system, light, dark). If you are forced to include such a control (say, someone is pointing a gun at you and shouting "code dammit! now!"), I stand by that recommendation: use two states, as described in the article. But the article explicitly doesn't answer the question "should you have one at all?". I was much more neutral on this at the time of writing. I am now firmly in the "no" camp. More on that below. The two-state toggle design proposed in my article can actually express all three data model states. What I didn't mention was that I had been meaning to write this article for years, but had been putting it off. What finally pushed me to write it 1 was that Bramus argued that some Modern Web Guidance I had written on this was incorrect. He assumed it was an oversight, that I simply hadn't thought of all the implications. On the contrary, my recommendation had been the result of some very careful consideration, combined with my HCI background. Surely, if I explained my reasoning well, he would see it! I tried to convince him through discussion (in person, as we were both in Berlin at the time) to no avail. My conclusion was that I must be doing a poor job explaining my reasoning, and that a blog post was in order to explain it properly. Surely, after that he would be convinced! And thus, one of my most successful blog posts was born. Reactions This article really made the rounds. It was shared by hundreds of folks, including people I really respect, such as: ShadCN Paul Kinlan Kevin Powell John-David Dalton Tab Atkins-Bittner Cory LaViska Ahmad Shadeed Josh Tumath and many others. A lot more who hearted it. Some of the quotes really made me blush ☺. Here is a small selection: I wasn'

## Dark mode toggles: two states are enough

DevFeed: [Dark mode toggles: two states are enough](<https://devfeed.tech/articles/dark-mode-toggles-two-states-are-enough-52169.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2026/dark-mode-toggles/>)

Author: Lea Verou

Published: 2026-08-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Users](<https://devfeed.tech/topics/users.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [ui](<https://devfeed.tech/tags/ui.md>), [usability](<https://devfeed.tech/tags/usability.md>), [users](<https://devfeed.tech/tags/users.md>), [ux](<https://devfeed.tech/tags/ux.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

The article argues that a two-state dark mode toggle is usually preferable to a three-state Light, Dark, and System control for websites. It explains that users typically seek a theme toggle when the current appearance needs to change, not to express a persistent preference, and that tri-state controls add unnecessary complexity and UX friction.

### Source excerpt

A good two-state toggle can actually express all three data model states. Until recently, if you looked at most websites with a theme toggle1, you'd find three options: Light, Dark, and System. Examples of tri-state dark mode toggles. In (LTR) reading direction: Tailwind, Red Hat Design System, Ant Design, Web Awesome, Excalidraw, Taiga, Astro, Hero UI. Thankfully, these days the trend has shifted towards a simpler two-state toggle, but tri-state ones are still incredibly common. Examples of two-state dark mode toggles. In (LTR) reading direction: Vitepress, Material Design, Adobe Spectrum, Radix, ShadCN. The rationale sounds plausible: "System" is a different intent than "Light" or "Dark"! One is a policy (whatever my OS says, do that) The other is a value (dark, forever, I don't care what my OS says.) Surely, users should be able to express that intent! Except, real users don't generally seek out dark mode toggles to express intent for things to stay as they are, they seek them out when things need to change. Think of the user goal when browsing a website (as opposed to a separate Settings page, where three states are fine). E.g. on a documentation site, they may be there to look something up. On a landing page, they may be trying to evaluate whether the product is suitable for their needs. On a media site, they may be there to read the news. On a graphics app, they want to draw something. One thing is for certain: tweaking the theme is not their primary goal 2. To get in the mindset of tweaking the theme, something needs to be off. When things look right, users just move on with their actual goal instead of thinking about the theme. The tri-state control is solving a largely imaginary user goal that is extremely rare among real users, and does not justify the additional complication and UX friction of a three-state toggle. Worse, it forces the user to decide between choices that produce no visible difference, breaking the principle of feedback. Yes, tri-state tog

## In defense of polyfills

DevFeed: [In defense of polyfills](<https://devfeed.tech/articles/in-defense-of-polyfills-52171.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2026/polyfills/>)

Author: Lea Verou

Published: 2026-07-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web platform](<https://devfeed.tech/topics/web-platform.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [library](<https://devfeed.tech/tags/library.md>), [polyfills](<https://devfeed.tech/tags/polyfills.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>), [whatwg](<https://devfeed.tech/tags/whatwg.md>)

### AI overview

An opinion defending polyfills argues that their benefits for the Web generally outweigh rare cases where they can constrain the design space of native APIs. It discusses the tension between polyfillability and preserving flexibility in Web platform standards.

### Source excerpt

If you're a web developer, you may find the title baffling. "Polyfills need defending? Who's against them?!" you might ask. Two weeks ago, I'd be in the same boat. Polyfills and I go way back. I dug up a JSConf EU talk of mine from 2011 on exactly this topic. Trying not to think about how young I look here 😅 One of the few opinions I have held strongly over the years is that polyfills are a net positive for the Web, and the good outweighs the rare failure cases where polyfills became too popular, too soon, and restricted the design space for the native API. As with most things in life, it's all about the cost-benefit. We don't stop flying planes because crashes happen. We do a post-mortem and figure out how we can prevent the same accident from happening again. And crucially, the point of a post-mortem is to find the root cause -- not to ground the entire fleet. Don't get me wrong, concerns about polyfills are well-intentioned. They come from implementors and standards folks who want to preserve the design flexibility to build the best API surface possible -- a goal I share deeply. Being both a spec editor and a library author, striking that balance is something I navigate all the time. Still, I was under the impression that seeing polyfills as a net positive was the consensus view of the web standards community as a whole. That while we may not have consensus on the specific tradeoffs or solutions, we see polyfilling as a good thing and we generally do want web platform features to be polyfillable. So, you can imagine my surprise when in a recent WHATWG meeting where I presented a proposal for extending mutation observers to observe shadow root attachment, Anne van Kesteren expressed the view that polyfilling is harmful. It's important to note that Anne is not some rando. He is the main active editor of most WHATWG specs (HTML, DOM, Fetch, import maps, etc.), a WebKit engineer at Apple, and has tremendous overall influence on the direction of the Web platform. I had

## External import maps, today!

DevFeed: [External import maps, today!](<https://devfeed.tech/articles/external-import-maps-today-52170.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2026/external-import-maps-today/>)

Author: Lea Verou

Published: 2026-03-02T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [import](<https://devfeed.tech/topics/import.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [Script](<https://devfeed.tech/topics/script.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Web](<https://devfeed.tech/topics/web.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [blog](<https://devfeed.tech/tags/blog.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browser-support](<https://devfeed.tech/tags/browser-support.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [defer](<https://devfeed.tech/tags/defer.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [html](<https://devfeed.tech/tags/html.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [import](<https://devfeed.tech/tags/import.md>), [js](<https://devfeed.tech/tags/js.md>), [modules](<https://devfeed.tech/tags/modules.md>), [script](<https://devfeed.tech/tags/script.md>), [tip](<https://devfeed.tech/tags/tip.md>), [web-architecture](<https://devfeed.tech/tags/web-architecture.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

This article explains how to emulate external import maps today by dynamically injecting an import map with DOM methods from a classic blocking script. It describes the required script ordering, compatibility considerations, and browser support, including Chrome, Safari, and Firefox.

### Source excerpt

A few weeks ago, I posted Web dependencies are broken. Can we fix them?. Today's post is a little less gloomy: Turns out that the major limitation that would allow centralized set-it-and-forget-it import map management can be lifted today, with excellent browser support! The core idea is that you can use DOM methods to inject an import map dynamically, by literally creating an <script type="importmap"> element in a classic (blocking) script and appending it after the injector script. 💡 This is a gamechanger. It makes external import maps nice-to-have sugar instead of the only way to have centralized import map management decoupled from HTML generation. All we need to do is build a little injector script, no need for tightly coupled workflows that take over everything. Once you have that, it takes a single line of HTML to include it anywhere. If you're already using a templating system, great! You could add <script src="importmap.js"></script> to your <head> template for every page. But you don't need a templating system: even if you're rawdogging HTML (e.g. for a simple SPA), it's no big deal to just include a <script src="importmap.js"></script> in there manually. This is not even new: when the injector is a classic (non-module) script placed before any modules are fetched, it works in every import map implementation, all the way back to Chrome 89, Safari 16.4+, and Firefox 108+! Turns out, JSPM made the same discovery: JSPM v4 uses the same technique. It is unclear why it took all of us so long to discover it but I'm glad we got there. How does it work? Basic import map injector script First, while there is some progress around making import maps more resilient, your best bet for maximum compatibility is for the injector script to be a good ol' blocking <script> that comes before everything else. This means no type="module", no async, no defer -- you want to get it in before any modules start loading or many browsers will ignore it. Then, you literally use DOM meth

## The web platform lacks built-in dependency management, leaving bundlers to fill the gap

DevFeed: [The web platform lacks built-in dependency management, leaving bundlers to fill the gap](<https://devfeed.tech/articles/web-dependencies-are-broken-can-we-fix-them-52172.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2026/web-deps/>)

Author: Lea Verou

Published: 2026-01-07T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Web](<https://devfeed.tech/topics/web.md>), [Development](<https://devfeed.tech/topics/development.md>), [build tools](<https://devfeed.tech/topics/build-tools.md>), [Webpack](<https://devfeed.tech/topics/webpack.md>), [npm](<https://devfeed.tech/topics/npm.md>), [browserify](<https://devfeed.tech/topics/browserify.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [build-tools](<https://devfeed.tech/tags/build-tools.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dependency-management](<https://devfeed.tech/tags/dependency-management.md>), [development](<https://devfeed.tech/tags/development.md>), [js](<https://devfeed.tech/tags/js.md>), [web](<https://devfeed.tech/tags/web.md>), [web-architecture](<https://devfeed.tech/tags/web-architecture.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>), [webpack](<https://devfeed.tech/tags/webpack.md>)

### AI overview

This opinion article argues that dependency management is a basic requirement that the web platform has outsourced to third-party tooling. It contrasts the web with Node.js, Python, and Rust, and argues that bundlers should remain focused on advanced needs such as performance optimization, typing, linting, and transpilation.

### Source excerpt

No, this is not another rant about npm's security issues. Abstraction is the cornerstone of modern software engineering. Reusing logic and building higher-level solutions from lower-level building blocks is what makes all the technological wonders around us possible. Imagine if every time anyone wrote a calculator they also had to reinvent floating-point arithmetic and string encoding! In healthy ecosystems dependencies are normal, cheap, and first-class. "Dependency-free" is not a badge of honor. And yet, the web platform has outsourced this fundamental functionality to third-party tooling. As a result, code reuse has become a balancing of tradeoffs that should not have existed in the first place. In NodeJS, you just npm install and reference specifiers straight away in your code. Same in Python, with pip install. Same in Rust with cargo add. In healthy ecosystems you don't ponder how or whether to use dependencies. The ecosystem assumes dependencies are normal, cheap, and first-class. You just install them, use them, and move on. "Dependency-free" is not a badge of honor. Instead, dependency management in the web platform consists of bits and bobs of scattered primitives, with no coherent end-to-end solution. Naturally, bundlers such as Webpack, rollup, and esbuild have picked up the slack, with browserify being the one that started it all, in 2012. There is nothing wrong with bundlers when used as a performance optimization to minimize waterfall effects and overhead from too many HTTP requests. You know, what a bundler is supposed to do. It is okay to require advanced tools for advanced needs, and performance optimization is generally an advanced use case. Same for most other things bundlers and build tools are used for, such as strong typing, linting, or transpiling. All of these are needs that come much later than dependency management, both in a programmer's learning journey, as well as in a project's development lifecycle. Dependency management is such a basi

## In the economy of user effort, be a bargain, not a scam

DevFeed: [In the economy of user effort, be a bargain, not a scam](<https://devfeed.tech/articles/in-the-economy-of-user-effort-be-a-bargain-not-a-scam-52167.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/user-effort/>)

Author: Lea Verou

Published: 2025-09-29T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [interface](<https://devfeed.tech/topics/interface.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api-design](<https://devfeed.tech/tags/api-design.md>), [blog](<https://devfeed.tech/tags/blog.md>), [design-principles](<https://devfeed.tech/tags/design-principles.md>), [design-reviews](<https://devfeed.tech/tags/design-reviews.md>), [extensibility](<https://devfeed.tech/tags/extensibility.md>), [interface](<https://devfeed.tech/tags/interface.md>), [product](<https://devfeed.tech/tags/product.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [product-management](<https://devfeed.tech/tags/product-management.md>), [tradeoffs](<https://devfeed.tech/tags/tradeoffs.md>), [usability](<https://devfeed.tech/tags/usability.md>), [user-centered-design](<https://devfeed.tech/tags/user-centered-design.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

An opinion piece argues that product interfaces should make common use cases easy while preserving the ability to support complex and niche use cases. It uses Prism's API, extensibility model, and tradeoffs as a software example, and discusses why the principle also applies to long-tail interfaces such as creative tools.

### Source excerpt

Alan Kay [source] One of my favorite product design principles is Alan Kay's "Simple things should be simple, complex things should be possible". 1 I had been saying it almost verbatim long before I encountered Kay's quote. Kay's maxim is deceptively simple, but its implications run deep. It isn't just a design ideal -- it's a call to continually balance friction, scope, and tradeoffs in service of the people using our products. This philosophy played a big part in Prism's success back in 2012, helping it become the web's de facto syntax highlighter for years, with over 2 billion npm downloads. Simple things were easy: All it took to highlight code on a webpage was including two files, a JS file and a CSS file. No markup changes. No JS glue code. Styling used readable CSS class names. Even adding new languages -- the most common "complex" use case -- required far less knowledge and effort than alternatives. At the same time, highly complex things were possible: Prism exposed a deep extensibility model so plugin authors could patch internals and dramatically alter behavior. These choices were not free. The friendly styling API increased clash risk, and deep extensibility reduced encapsulation. These were conscious, hard, tradeoffs. What things are simple and what things are complex? Simple refers to use cases that are simple from the user's perspective, i.e. the most common use cases. They may be hard to implement, and interface simplicity is often inversely correlated with implementation simplicity. And which things are complex, depends on product scope. Instagram's complex cases are vastly different than Photoshop's complex cases, but as long as there is a range, Kay's principle still applies. Since Alan Kay was a computer scientist, his quote is typically framed as a PL or API design principle, but that sells it short. It applies to a much, much broader class of interfaces. This distinction hinges on the distribution of use cases. Products often cut scope by identify

## State of HTML 2025 now open!

DevFeed: [State of HTML 2025 now open!](<https://devfeed.tech/articles/state-of-html-2025-now-open-52165.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/state-of-html/>)

Author: Lea Verou

Published: 2025-07-22T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [browser](<https://devfeed.tech/topics/browser.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>), [roadmaps](<https://devfeed.tech/topics/roadmaps.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [blog](<https://devfeed.tech/tags/blog.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [google](<https://devfeed.tech/tags/google.md>), [html](<https://devfeed.tech/tags/html.md>), [interop](<https://devfeed.tech/tags/interop.md>), [launch](<https://devfeed.tech/tags/launch.md>), [news](<https://devfeed.tech/tags/news.md>), [roadmaps](<https://devfeed.tech/tags/roadmaps.md>), [standards](<https://devfeed.tech/tags/standards.md>), [state-of-html](<https://devfeed.tech/tags/state-of-html.md>), [survey](<https://devfeed.tech/tags/survey.md>), [surveys](<https://devfeed.tech/tags/surveys.md>)

### AI overview

The State of HTML 2025 survey is open for responses from people who work with the web platform. Its results help browsers and standards groups prioritize roadmaps, address browser incompatibilities and platform gaps, and inform Interop 2026. The article also describes new survey features and acknowledges contributors.

### Source excerpt

tl;dr: State of HTML 2025 survey is now open! Take it now Mamma mia, here we go again! About two weeks ago, I announced that I was back leading this year's State of HTML 2025 survey, after a one year hiatus. We are grateful for all the suggestions that poured in, they were immensely helpful in shaping the survey. After two weeks of hard work from a small team spanning three continents, we are finally ready to launch! I would urge each and every one of you that works with the web platform to fill out this survey. It's a unique opportunity to have your voice heard in the browser vendors' decision-making process. Survey results are used by browsers to prioritize roadmaps -- the reason Google is funding this. The results from State of ... surveys directly feed into prioritization for next year's Interop project. Time spent thoughtfully filling them out is an investment that can come back to you tenfold in the form of seeing features you care about implemented, browser incompatibilities being prioritized, and gaps in the platform being addressed. In addition to browsers, several standards groups are also using the results for prioritization and decision-making. Additionally, you get to learn about new and upcoming features you may have missed, and get a personalized, sharable score at the end to see how you compare to other respondents! Take State of HTML 2025 Survey While the survey will be open for about a month, responses entered within the first two weeks (until end of July) will have a much higher impact on the Web, as preliminary data will be directly used to inform Interop 2026. Acknowledgements I would like to thank the following people for their help in fleshing out the survey: Sacha Greif for actually implementing the survey and tirelessly discussing my ideas My apprentice Dmitry Sharabin for various fixes and improvements My Google contacts, Philip Jägenstedt and Kadir Topal for making my involvement possible And everyone who responded to my earlier call for sugg

## State of HTML 2025 survey: how developer feedback influences web-platform priorities

DevFeed: [State of HTML 2025 survey: how developer feedback influences web-platform priorities](<https://devfeed.tech/articles/influence-the-state-of-html-2025-survey-52163.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/design-state-of-html/>)

Author: Lea Verou

Published: 2025-07-08T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web platform](<https://devfeed.tech/topics/web-platform.md>), [HTML](<https://devfeed.tech/topics/html.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [view transitions](<https://devfeed.tech/topics/view-transitions.md>), [CSS](<https://devfeed.tech/topics/css.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [blog](<https://devfeed.tech/tags/blog.md>), [data-analysis](<https://devfeed.tech/tags/data-analysis.md>), [developers](<https://devfeed.tech/tags/developers.md>), [html](<https://devfeed.tech/tags/html.md>), [state-of-html](<https://devfeed.tech/tags/state-of-html.md>), [survey](<https://devfeed.tech/tags/survey.md>), [surveys](<https://devfeed.tech/tags/surveys.md>), [usability](<https://devfeed.tech/tags/usability.md>), [view-transitions](<https://devfeed.tech/tags/view-transitions.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>)

### AI overview

The article introduces the 2025 State of HTML survey and explains how developer feedback informs web-platform priorities. It describes the survey's accessibility, browser API, web components, and UX scope, along with its influence on Interop initiatives and browser roadmaps.

### Source excerpt

Mamma mia, here we go again! Two years ago, I was funded by Google to design the inaugural State of HTML survey. While I had led State of ... surveys before (also graciously sponsored by Google), that was by far the most intense, as 0->1 projects often are. In addition to the research, content, and analysis work that goes into every State of ... survey, the unique challenges it presented were a forcing function for finally tackling some longstanding UX issues with these surveys. As a result, we pioneered new survey interaction UIs, and validated them via usability testing. This work did not just affect State of HTML, but had ripple effects on all subsequent State of ... surveys. The results made it all worth it. Turnout was the highest ever for a new Devographics 1 survey: 21 thousand participants, which remains a record high for State of HTML. The survey findings heavily influenced Interop 2024 (hello Popover API and Declarative Shadow DOM!) and helped prioritize several other initiatives, such as stylable selects. Despite lower 2024 participation, the survey still significantly influenced Interop 2025; notably, View transitions was added after being prominent in the survey for two years in a row. This is the goal of these surveys: to drive meaningful change in the web platform. Sure, getting a shareable score about what you know and seeing how you compare to the rest of the industry is fun, but the reason browser vendors pour thousands of dollars into funding these surveys is because they provide unique vendor-neutral insights into developer pain points and priorities, which helps them make better decisions about what to work on. And this ultimately helps you: by getting your voice heard, you can directly influence the tools you work with. It's a win-win: developers get better tools, and browser vendors get better roadmaps. Fun fact One of my favorite examples of impact these surveys have driven is CSS Nesting. Browsers ignored the proposal to do Nesting natively for a d

## The Hovercar Framework for Deliberate Product Design

DevFeed: [The Hovercar Framework for Deliberate Product Design](<https://devfeed.tech/articles/the-hovercar-framework-for-deliberate-product-design-52164.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/hovercar/>)

Author: Lea Verou

Published: 2025-06-25T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Requirements](<https://devfeed.tech/topics/requirements.md>), [development-process](<https://devfeed.tech/topics/development-process.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Users](<https://devfeed.tech/topics/users.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [case-studies](<https://devfeed.tech/tags/case-studies.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [design](<https://devfeed.tech/tags/design.md>), [development-process](<https://devfeed.tech/tags/development-process.md>), [experience](<https://devfeed.tech/tags/experience.md>), [features](<https://devfeed.tech/tags/features.md>), [north-star-ui](<https://devfeed.tech/tags/north-star-ui.md>), [product](<https://devfeed.tech/tags/product.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [product-led-growth](<https://devfeed.tech/tags/product-led-growth.md>), [product-management](<https://devfeed.tech/tags/product-management.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [scope](<https://devfeed.tech/tags/scope.md>), [user-centered-design](<https://devfeed.tech/tags/user-centered-design.md>)

### AI overview

The article presents the Hovercar Framework, a staged model for defining product requirements and shipping goals. It progresses from a barely shippable Skateboard through increasingly complete product versions to an idealized Hovercar that serves as a guiding product vision.

### Source excerpt

You may be familiar with this wonderful illustration and accompanying blog post by Henrik Kniberg about good MVPs: It's a very visual way to illustrate the age-old concept that that a good MVP is not the one developed in isolation over months or years, grounded on assumptions about user needs and goals, but one that delivers value to users as early as possible, so that future iterations can take advantage of the lessons learned from real users. From Hovercar to Skateboard I love Henrik's metaphor so much, I have been using a similar system to flesh out product requirements and shipping goals, especially early on. It can be immediately understood by anyone who has seen Henrik's illustration, and I find it can be a lot more pragmatic and flexible than the usual simple two tiered system (core requirements and stretch goals). Additionally, I find this fits nicely into a fixed time, variable scope development process, such as Shape Up. 🛹 The Skateboard aka the Pessimist's MVP What is the absolute minimum we can ship, if need be? Utilitarian, bare-bones, and somewhat embarrassing, but shippable -- barely. Anything that can be flintstoned gets flintstoned. 🛴 The Scooter aka the Realist's MVP The minimum product that delivers value. Usable, but no frills. This is the target. 🚲 The Bicycle aka the Optimist's MVP Stretch goals -- UX polish, "sprinkles of delight", nonessential but high I/E features. Great if we get here, fine if we don't. 🏍 The Motorcycle Post-launch highest priority items. 🚗 The Car Our ultimate vision, taking current constraints into account. 🏎 The Hovercar aka the North Star UI The ideal experience -- unconstrained by time, resources, or backwards compatibility. Unlikely to ship, but a guiding light for all of the above. Please note that the concept of a North Star UI has no relation to the North Star Metric. While both serve as a guiding light for product decisions, and both are important, the North Star UI guides you in designing the product, whereas the

## Bluesky Likes Web Components

DevFeed: [Bluesky Likes Web Components](<https://devfeed.tech/articles/bluesky-likes-web-components-52161.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/bluesky-likes/>)

Author: Lea Verou

Published: 2025-06-17T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web Components](<https://devfeed.tech/topics/web-components.md>), [API](<https://devfeed.tech/topics/api.md>), [Bluesky](<https://devfeed.tech/topics/bluesky-social.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [a11y](<https://devfeed.tech/tags/a11y.md>), [api](<https://devfeed.tech/tags/api.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [bluesky](<https://devfeed.tech/tags/bluesky.md>), [components](<https://devfeed.tech/tags/components.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [launch](<https://devfeed.tech/tags/launch.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

The author presents web components for displaying Bluesky post likes and discusses the practical challenges of building accessible, localizable components that consume public API data. The article highlights Bluesky's open API, which allows unauthenticated access to public data without an API key.

### Source excerpt

Just want the components? Here you go: Demo Repo NPM A love letter to the Bluesky API I'm old enough to remember the golden Web 2.0 era, when many of today's big social media platforms grew up. A simpler time, when the Web was much more extroverted. It was common for websites to embed data from others (the peak of mashups), and prominently feature widgets from various platforms to showcase a post's likes or shares. Especially Twitter was so ubiquitous that the number of Twitter shares was my primary metric for how much people were interested in a blog post I wrote. Then, websites started progressively becoming walled gardens, guarding their data with more fervor than Gollum guarding the Precious. Features disappeared or got locked behind API keys, ridiculous rate limits, expensive paywalls, and other restrictions. Don't get me wrong, I get it. A lot of it was reactionary, a response to abuse -- the usual reason we can't have nice things. And even when it was to stimulate profit -- it is understandable that they want to monetize their platforms. People gotta eat. I was recently reading this interesting article by Salma Alam-Naylor. The article makes some great points, but it was something else that caught my eye: the widget of Bluesky likes at the bottom. Salma's Bluesky likes widget that inspired these I mentioned it to my trusty apprentice Dmitry who discovered the API was actually much simpler than what we've come to expect. Later, it turned out Salma has even written an entire post on how to implement the same thing on your own site. The openness of the API was so refreshing. Not only can you read public data without being authenticated, you don't even need an API key! Major nostalgia vibes. It seemed the perfect candidate for a web component that you can just drop in to a page, give it a post URL, and it will display the likes for that post. I just had to make it, and of course use it right here. Web Components that use API data have been historically awkward. Let

## Construction Lines

DevFeed: [Construction Lines](<https://devfeed.tech/articles/construction-lines-52162.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/construction-lines/>)

Author: Lea Verou

Published: 2025-06-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [human computer interaction](<https://devfeed.tech/topics/human-computer-interaction.md>), [Job](<https://devfeed.tech/topics/job.md>)

Tags: [academia](<https://devfeed.tech/tags/academia.md>), [blog](<https://devfeed.tech/tags/blog.md>), [consulting](<https://devfeed.tech/tags/consulting.md>), [entrepreneurship](<https://devfeed.tech/tags/entrepreneurship.md>), [industry](<https://devfeed.tech/tags/industry.md>), [job](<https://devfeed.tech/tags/job.md>), [personal](<https://devfeed.tech/tags/personal.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

A personal reflection on leaving Font Awesome, career transitions, and the kinds of work that have brought the author the most happiness. The author highlights autonomy, breadth, and impact across entrepreneurship, consulting, and academia, including work in human-computer interaction at MIT.

### Source excerpt

I recently stumbled across The Oatmeal's series on Creativity. While all of it is spot on, the part on erasers hit especially hard. "There is a lot of shame associated with backpedaling; things like quitting your job, getting a divorce, or simply starting over are considered shameful. But forward isn't always progress. And backward isn't always regress. Sometimes going down the wrong path isn't a mistake -- it's a construction line." -- Matthew Inman (The Oatmeal) It was exactly what I needed to hear. You see, only a few days prior, Font Awesome and I had parted ways -- the end of a short, but transformative chapter. I'm proud of what we built together, and grateful for what I learned along the way. But it was time to move on. Jobs are a lot like relationships. They often start with infatuation -- and end with the realization that you're simply not compatible, and that's no-one's fault. Letting go always stings, even when it's the right call. There's always grief: when you're not ready to move on, you grieve the bond; when you are, you grieve your expectations. But every ending leaves behind clarity -- about who you are, and what makes you happy. The pursuit of happiness Today is my 39th birthday -- and this summer marks 20 years since I first dipped my toes into this industry. Naturally, I've been doing a lot of reflection. As is typical for ADHDers, I have done a ton of different things, and built a diverse skillset as a result. But what made me happiest? The list of highs went a bit like this: Entrepreneurship: Co-founding a startup and driving it to become a household name (in Greece -- this was 2008!) Consulting: Being a full-time consultant, speaker, and author, traveling the world and jumping from one exciting gig to another Academia:1 Pushing the boundaries of Human-Computer Interaction at MIT and teaching MIT CS students to care about people. All had three things in common: autonomy, breadth, and impact. These three things have been the biggest predictors of happi

## Style-observer: JS to observe CSS property changes, for reals

DevFeed: [Style-observer: JS to observe CSS property changes, for reals](<https://devfeed.tech/articles/style-observer-js-to-observe-css-property-changes-for-reals-52166.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2025/style-observer/>)

Author: Lea Verou

Published: 2025-02-12T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [polyfill](<https://devfeed.tech/topics/polyfill.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [css](<https://devfeed.tech/tags/css.md>), [js](<https://devfeed.tech/tags/js.md>), [launch](<https://devfeed.tech/tags/launch.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [polyfill](<https://devfeed.tech/tags/polyfill.md>), [property](<https://devfeed.tech/tags/property.md>), [style](<https://devfeed.tech/tags/style.md>)

### AI overview

The article explores ways to run JavaScript when CSS property values change, including changes caused by media queries, user actions, or other JavaScript. It discusses use cases such as custom properties, CSS polyfills, and synchronizing HTML attributes with CSS, then reviews earlier polling, selector, observer, and transition-event approaches.

### Source excerpt

I cannot count the number of times in my career I wished I could run JS in response to CSS property changes, regardless of what triggered them: media queries, user actions, or even other JS. Use cases abound. Here are some of mine: Implement higher level custom properties in components, where one custom property changes multiple others in nontrivial ways (e.g. a --variant: danger that sets 10 color tokens). Polyfill missing CSS features Change certain HTML attributes via CSS (hello --aria-expanded!) Set CSS properties based on other CSS properties without having to mirror them as custom properties The most recent time I needed this was to prototype an idea I had for Web Awesome, and I decided this was it: I'd either find a good, bulletproof solution, or I would build it myself. Spoiler alert: Oops, I did it again A Brief History of Style Observers The quest for a JS style observer has been long and torturous. Many have tried to slay this particular dragon, each getting us a little bit closer. The earliest attempts relied on polling, and thus were also prohibitively slow. Notable examples were ComputedStyleObserver by Keith Clark in 2018 and StyleObserver by PixelsCommander in 2019. Jane Ori first asked "Can we do better than polling?" with her css-var-listener in 2019. It parsed the selectors of relevant CSS rules, and used a combination of observers and event listeners to detect changes to the matched elements. Artem Godin was the first to try using transition events such as transitionstart to detect changes, with his css-variable-observer in 2020. In fact, for CSS properties that are animatable, such as color or font-size, using transition events is already enough. But what about the rest, especially custom properties which are probably the top use case? In addition to pioneering transition events for this purpose, Artem also concocted a brilliant hack to detect changes to custom properties: he stuffed them into font-variation-settings, which is animatable regardl

## Context Chips in Survey Design: "Okay, but how does it \_feel\_?"

DevFeed: [Context Chips in Survey Design: "Okay, but how does it \_feel\_?"](<https://devfeed.tech/articles/context-chips-in-survey-design-okay-but-how-does-it-feel-52155.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/context-chips/>)

Author: Lea Verou

Published: 2024-12-27T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [Data Quality](<https://devfeed.tech/topics/data-quality.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [case-studies](<https://devfeed.tech/tags/case-studies.md>), [design](<https://devfeed.tech/tags/design.md>), [design-thinking](<https://devfeed.tech/tags/design-thinking.md>), [experience](<https://devfeed.tech/tags/experience.md>), [north-star-ui](<https://devfeed.tech/tags/north-star-ui.md>), [product](<https://devfeed.tech/tags/product.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [quality](<https://devfeed.tech/tags/quality.md>), [survey](<https://devfeed.tech/tags/survey.md>), [survey-design](<https://devfeed.tech/tags/survey-design.md>), [usability](<https://devfeed.tech/tags/usability.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

A case study about designing a custom survey interface for collecting sentiment alongside survey responses. It examines how alternative question UIs can balance respondent experience, low friction, useful insights, and data quality when standard survey controls are inadequate.

### Source excerpt

One would think that we've more or less figured survey UI out by now. Multiple choice questions, checkbox questions, matrix questions, dropdown questions, freeform textfields, numerical scales, what more could one possibly need?! And yet, every time Google sponsored me to lead one of the State Of ... surveys, and especially the inaugural State of HTML 2023 Survey, I kept hitting the same wall; I kept feeling that the established options for answering UIs were woefully inadequate for balancing the collection good insights with minimal friction for end-users. The State Of surveys used a completely custom survey infrastructure, so I could often (but not always) convince engineering to implement new question UIs. After joining Font Awesome, I somehow found myself leading yet another survey, despite swearing never to do this again. 🥲 Alas, building a custom survey UI was simply not an option in this case; I had to make do with the existing options out there 1, so I felt this kind of pain to my core once again. So what are these cases where the existing answering UIs are inadequate, and how could better ones help? I'm hoping this case study to be Part 1 of a series around how survey UI innovations can help balance tradeoffs between user experience and data quality, though this is definitely the one I'm most proud of, as it was such a bumpy ride, but it was all worth it in the end. The Problem For context, the body of State Of surveys is a series of "Feature questions", which present the respondent with a certain web platform feature and ask if they had heard of it or used it. Feature questions look like this: An example of a feature question from the State of CSS 2022 survey. Respondents get a score in the end, based on how many of these they had heard of or used. Each survey had dozens of these questions. Based on initial estimates, State of HTML was going to have at least fifty. This was my score. We revamped the scoring system for this iteration and switched from a perce

## Web Components are not Framework Components -- and That's Okay

DevFeed: [Web Components are not Framework Components -- and That's Okay](<https://devfeed.tech/articles/web-components-are-not-framework-components-and-that-s-okay-52160.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/wcs-vs-frameworks/>)

Author: Lea Verou

Published: 2024-10-01T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web Components](<https://devfeed.tech/topics/web-components.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [blog](<https://devfeed.tech/tags/blog.md>), [components](<https://devfeed.tech/tags/components.md>), [framework](<https://devfeed.tech/tags/framework.md>), [standards](<https://devfeed.tech/tags/standards.md>), [web](<https://devfeed.tech/tags/web.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

The author argues that Web Components and framework components serve different purposes, and that Web Components should be evaluated against the long-term requirements of the web platform rather than only against current userland frameworks. The post discusses durability, backward compatibility, accessibility, internationalization, and distributed standards work.

### Source excerpt

Disclaimer: This post expresses my opinions, which do not necessarily reflect consensus by the whole Web Components community. A blog post by Ryan Carniato titled "Web Components Are Not the Future" has recently stirred a lot of controversy. A few other JS framework authors pitched in, expressing frustration and disillusionment around Web Components. Some Web Components folks wrote rebuttals, while others repeatedly tried to get to the bottom of the issues, so they could be addressed in the future. When you are on the receiving end of such an onslaught, the initial reaction is to feel threatened and become defensive. However, these kinds of posts can often end up shaking things up and pushing a technology forwards in the end. I have some personal experience: after I published my 2020 post titled "The failed promise of Web Components" which also made the rounds at the time, I was approached by a bunch of folks (Justin Fagnani, Gray Norton, Kevin Schaaf) about teaming up to fix the issues I described. The result of these brainstorming sessions was the Web Components CG which now has a life of its own and has become a vibrant Web Components community that has helped move several specs of strategic importance forwards. As someone who deeply cares about Web Components, my initial response was also to push back. I was reminded of how many times I have seen this pattern before. It is common for new web platform features to face pushback and resistance for many years; we tend to compare them to current userland practices, and their ergonomics often fare poorly at the start. Especially when there is no immediately apparent 80/20 solution, making things possible tends to precede making them easy. Web platform features operate under a whole different set of requirements and constraints: They need to last decades, not just until the next major release. They need to not only cater to the current version of the web platform, but anticipate its future evolution and be compatible w

## Joining Font Awesome as Product Lead to Improve Web UI Products and Standards

DevFeed: [Joining Font Awesome as Product Lead to Improve Web UI Products and Standards](<https://devfeed.tech/articles/making-the-web-more-awesome-for-everyone-52154.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/awesome/>)

Author: Lea Verou

Published: 2024-09-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Web](<https://devfeed.tech/topics/web.md>), [Web Components](<https://devfeed.tech/topics/web-components.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [Icon font](<https://devfeed.tech/topics/icon-font.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [blog](<https://devfeed.tech/tags/blog.md>), [css](<https://devfeed.tech/tags/css.md>), [design](<https://devfeed.tech/tags/design.md>), [font-awesome](<https://devfeed.tech/tags/font-awesome.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [personal](<https://devfeed.tech/tags/personal.md>), [product](<https://devfeed.tech/tags/product.md>), [ui](<https://devfeed.tech/tags/ui.md>), [usability](<https://devfeed.tech/tags/usability.md>), [web-awesome](<https://devfeed.tech/tags/web-awesome.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

The author announces joining Font Awesome as Product Lead after completing a PhD focused on usability and programming language design. The role involves improving product design and usability, developing Web Awesome with web components and CSS, and contributing web platform pain points to standards proposals.

### Source excerpt

Folks, I have some exciting news to share. 🤩 Today I start a new chapter in my career. After a decade at MIT, teaching and doing research at the intersection of usability and programming language design, I wrapped up my PhD two weeks ago (yes, I'm a Dr now! And damn right I will -- once it actually sinks in) and today I start my new role as Product Lead at Font Awesome. I will be evaluating user needs and improving product design and usability across all company products, with an emphasis on Web Awesome, the product we are launching early next year to revolutionize how Web UIs are built by using web components and CSS in ways you've never seen before. Beyond improving the products themselves (all of which include extensive free & open source versions), part of my role will utilize my web standards experience to collect web platform pain points from across the company and translating them to new and existing web standards proposals. Yes, I know, it's a match made in heaven. 😍 There is even a small chance I may have been the first to create an icon font for use in a web UI via @font-face, which would make it even more wonderfully poetic that I'm joining the company that has become synonymous with icon fonts on the Web. However, it was not my MIT PhD that led me to this role, but an email from Dave Gandy (creator & CEO of Font Awesome) about Color.js, that turned into hours of chats, and eventually a job offer for a role I could not refuse, one that was literally molded around my skills and interests. The role is not the only reason I'm excited to join Font Awesome, though. The company itself is a breath of fresh air: open source friendly (as Dave says, "literally the only reason we have Pro versions is that we need to sustain this somehow" 😅), already profitable (= no scrambling to meet VC demands by cramming AI features nobody wants into our products), fully remote, huge emphasis on work-life balance, and an interview process that did not feel like an interview -- or e

## Engage Users by Connecting Effort to Their Goals in UI, API, and Education Design

DevFeed: [Engage Users by Connecting Effort to Their Goals in UI, API, and Education Design](<https://devfeed.tech/articles/forget-show-don-t-tell-engage-don-t-show-52159.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/engage-dont-show/>)

Author: Lea Verou

Published: 2024-07-03T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [blog](<https://devfeed.tech/tags/blog.md>), [education](<https://devfeed.tech/tags/education.md>), [ui-design](<https://devfeed.tech/tags/ui-design.md>), [usability](<https://devfeed.tech/tags/usability.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

The article argues that effective UI and API design should make increasing effort produce increasing value without sudden usability cliffs. It extends this principle to education and knowledge transfer, emphasizing hands-on engagement and connections to learners' goals.

### Source excerpt

A few days ago, I gave a very well received talk about API design at dotJS titled "API Design is UI Design" 1. One of the points I made was that good UIs (and thus, good APIs) have a smooth UI complexity to Use case complexity curve. This means that incremental user effort results in incremental value; at no point going just a little bit further requires a disproportionately big chunk of upfront work 2. Observing my daughter's second ever piano lesson today made me realize how this principle extends to education and most other kinds of knowledge transfer (writing, presentations, etc.). Her (generally wonderful) teacher spent 40 minutes teaching her notation, longer and shorter notes, practicing drawing clefs, etc. Despite his playful demeanor and her general interest in the subject, she was clearly distracted by the end of it. It's easy to dismiss this as a 5 year old's short attention span, but I could tell what was going on: she did not understand why these were useful, nor how they connect to her end goal, which is to play music. To her, notation was just an assortment of arbitrary symbols and lines, some of which she got to draw. Note lengths were just isolated sounds with no connection to actual music. Once I connected note lengths to songs she has sung with me and suggested they try something more hands on, her focus returned instantly. I mentioned to her teacher that kids that age struggle to learn theory for that long without practicing it. He agreed, and said that many kids are motivated to get through the theory because they've heard their teacher play nice music and want to get there too. The thing is... sure, that's motivating. But as far as motivations go, it's pretty weak. Humans are animals, and animals don't play the long game, or they would die. We are programmed to optimize for quick, easy dopamine hits. The farther into the future the reward, the more discipline it takes to stay motivated and put effort towards it. This applies to all humans, but ev

## Inline conditionals in CSS, now?

DevFeed: [Inline conditionals in CSS, now?](<https://devfeed.tech/articles/inline-conditionals-in-css-now-52157.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/css-conditionals-now/>)

Author: Lea Verou

Published: 2024-06-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [conditionals](<https://devfeed.tech/topics/conditionals.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [abstraction](<https://devfeed.tech/topics/abstraction.md>), [Vue.js](<https://devfeed.tech/topics/vue.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [conditionals](<https://devfeed.tech/tags/conditionals.md>), [css](<https://devfeed.tech/tags/css.md>), [css-variables](<https://devfeed.tech/tags/css-variables.md>), [css-wg](<https://devfeed.tech/tags/css-wg.md>), [developers](<https://devfeed.tech/tags/developers.md>), [vue](<https://devfeed.tech/tags/vue.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>)

### AI overview

The article examines the gap between the CSS Working Group's planned if() function and current browser support. It presents custom-property hacks as interim options and argues that production decisions should prioritize user needs over developer convenience, drawing on Web Platform Design Principles and the Priority of Constituencies.

### Source excerpt

The CSS WG resolved to add if() to CSS, but that won't be in browsers for a while. What are our options in the meantime? A couple days ago, I posted about the recent CSS WG resolution to add an if() function to CSS. Great as it may be, this is still a long way off, two years if everything goes super smoothly, more if not. So what can you do when you need conditionals right now? You may be pleased to find that you're not completely out of luck. There is a series of brilliant, horrible hacks that enable you to expose the kinds of higher level custom properties that conditionals typically enable. Using hacks in production?! The instinctive reaction many developers have when seeing hacks like these is "Nice hack, but can't possibly ever use this in production". This sounds reasonable on the surface (keeping the codebase maintainable is a worthy goal!) but when examined deeply, it reflects the wrong order of priorities, prioritizing developer convenience over user convenience. The TAG maintains a Web Platform Design Principles document 1 that everyone designing APIs for the web platform is supposed to read and follow. I'm a strong believer in having published Design Principles, for any product2. They help stay on track, and remember what the big picture vision is, which is otherwise easy to lose sight of in the day to day minutiae. One of the core principles in the document is the Priority of Constituencies. The core of it is: User needs come before the needs of web page authors, which come before the needs of user agent implementors, which come before the needs of specification writers, which come before theoretical purity. Obviously in most projects there are far fewer stakeholders than for the whole web platform, but the spirit of the principle still applies: the higher the abstraction, the higher priority the user needs. Or, in other words, consumers above producers. For a more relatable example, in a web app using a framework like e.g. Vue and several Vue components

## Inline conditionals in CSS?

DevFeed: [Inline conditionals in CSS?](<https://devfeed.tech/articles/inline-conditionals-in-css-52158.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/css-conditionals/>)

Author: Lea Verou

Published: 2024-06-18T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [conditionals](<https://devfeed.tech/topics/conditionals.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [browsers](<https://devfeed.tech/topics/browsers.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [conditionals](<https://devfeed.tech/tags/conditionals.md>), [css](<https://devfeed.tech/tags/css.md>), [css-variables](<https://devfeed.tech/tags/css-variables.md>), [css-wg](<https://devfeed.tech/tags/css-wg.md>), [developers](<https://devfeed.tech/tags/developers.md>), [iteration](<https://devfeed.tech/tags/iteration.md>), [roadmaps](<https://devfeed.tech/tags/roadmaps.md>), [web-components](<https://devfeed.tech/tags/web-components.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

The article discusses the CSS Working Group's consensus to add an inline if() conditional syntax to CSS. It explains the proposal's motivation, relationship to style queries, and path through earlier rejected proposals.

### Source excerpt

Last week, the CSS WG resolved to add an inline if() to CSS. But what does that mean, and why is it exciting? Last week, we had a CSS WG face-to-face meeting in A Coruña, Spain. There is one resolution from that meeting that I'm particularly excited about: the consensus to add an inline if() to CSS. While I was not the first to propose an inline conditional syntax, I did try and scope down the various nonterminating discussions into an MVP that can actually be implemented quickly, discussed ideas with implemenators, and eventually published a concrete proposal and pushed for group resolution. Quite poetically, the relevant discussion occurred on my birthday, so in a way, I got if() as the most unique birthday present ever. 😀 This also comes to show that proposals being rejected is not the end-all for a given feature. It is in fact quite common for features to be rejected for several times before they are accepted: CSS Nesting, :has(), container queries were all simply the last iteration in a series of rejected proposals. if() itself was apparently rejected in 2018 with very similar syntax to what I proposed. What was the difference? Style queries had already shipped, and we could simply reference the same syntax for conditions (plus media() and supports() from Tab's @when proposal) whereas in the 2018 proposal how conditions would work was largely undefined. I posted about this on a variety of social media, and the response by developers has been overwhelmingly positive: Twitter LinkedIn Mastodon I even had friends from big companies writing to tell me their internal Slacks blew up about it. This proves what I've always suspected, and was part of the case I made to the CSS WG: that this is a huge pain point. Hopefully the amount and intensity of positive reactions will help browsers prioritize this feature and add it to their roadmaps earlier rather than later. Across all these platforms, besides the "I can't wait for this to ship!" sentiment being most common, ther

## On compliance vs readability: Generating text colors with CSS

DevFeed: [On compliance vs readability: Generating text colors with CSS](<https://devfeed.tech/articles/on-compliance-vs-readability-generating-text-colors-with-css-52156.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2024/contrast-color/>)

Author: Lea Verou

Published: 2024-05-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [color](<https://devfeed.tech/topics/color.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [a11y](<https://devfeed.tech/tags/a11y.md>), [blog](<https://devfeed.tech/tags/blog.md>), [browser](<https://devfeed.tech/tags/browser.md>), [color](<https://devfeed.tech/tags/color.md>), [color-science](<https://devfeed.tech/tags/color-science.md>), [colors](<https://devfeed.tech/tags/colors.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [css](<https://devfeed.tech/tags/css.md>), [readability](<https://devfeed.tech/tags/readability.md>), [standards](<https://devfeed.tech/tags/standards.md>), [web-standards](<https://devfeed.tech/tags/web-standards.md>)

### AI overview

This article examines how to emulate the upcoming CSS contrast-color() function using widely shipped CSS features, especially Relative Color Syntax. It explains the tradeoffs between automatically choosing readable text colors and meeting contrast requirements, with attention to browser support and production fallbacks.

### Source excerpt

Can we emulate the upcoming CSS contrast-color() function via CSS features that have already widely shipped? And if so, what are the tradeoffs involved and how to best balance them? Relative Colors Out of all the CSS features I have designed, Relative Colors aka Relative Color Syntax (RCS) is definitely among the ones I'm most proud of. In a nutshell, they allow CSS authors to derive a new color from an existing color value by doing arbitrary math on color components in any supported color space: --color-lighter: hsl(from var(--color) h s calc(l * 1.2)); --color-lighterer: oklch(from var(--color) calc(l + 0.2) c h); --color-alpha-50: oklab(from var(--color) l a b / 50%); The elevator pitch was that by allowing lower level operations they provide authors flexibility on how to derive color variations, giving us more time to figure out what the appropriate higher level primitives should be. As of May 2024, RCS has shipped in every browser except Firefox. but given that it is an Interop 2024 focus area, that Firefox has expressed a positive standards position, and that the Bugzilla issue has had some recent activity and has been assigned, I am optimistic it would ship in Firefox soon (edit: it shipped 5 days after writing these lines, in Firefox 128 🎉). My guess it that it would become Baseline by the end of 2024. Even if my prediction is off, it already is available to 83% of users worldwide, and if you sort its caniuse page by usage, you will see the vast majority of the remaining 17% doesn't come from Firefox, but from older Chrome and Safari versions. I think its current market share warrants production use today, as long as we use @supports to make sure things work in non-supporting browsers, even if less pretty. Most Relative Colors tutorials revolve around its primary driving use cases: making tints and shades or other color variations by tweaking a specific color component up or down, and/or overriding a color component with a fixed value, like the example above

## Designing creator tools through composability and broader use-case coverage

DevFeed: [Designing creator tools through composability and broader use-case coverage](<https://devfeed.tech/articles/eigensolutions-composability-as-the-antidote-to-overfit-52147.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2023/eigensolutions/>)

Author: Lea Verou

Published: 2023-12-19T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Users](<https://devfeed.tech/topics/users.md>), [dev-tools](<https://devfeed.tech/topics/dev-tools.md>), [No-code](<https://devfeed.tech/topics/no-code.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [composability](<https://devfeed.tech/tags/composability.md>), [creator-tools](<https://devfeed.tech/tags/creator-tools.md>), [design-thinking](<https://devfeed.tech/tags/design-thinking.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [no-code](<https://devfeed.tech/tags/no-code.md>), [north-star-ui](<https://devfeed.tech/tags/north-star-ui.md>), [product](<https://devfeed.tech/tags/product.md>), [product-management](<https://devfeed.tech/tags/product-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This article argues that creator tools differ from transactional products because their users have varied, changing goals. It presents composability as a way to design solutions that generalize across seemingly unrelated use cases, and discusses balancing user experience, use-case coverage, and implementation effort.

### Source excerpt

tl;dr: Overfitting happens when solutions don't generalize sufficiently and is a hallmark of poor design. Eigensolutions are the opposite: solutions that generalize so much they expose links between seemingly unrelated use cases. Designing eigensolutions takes a mindset shift from linear design to composability. Creator tools are not Uber or Facebook In product literature, the design process looks a bit like this: This works great with the kinds of transactional processes (marketplaces, social media, search engines, etc) most product literature centers around, but can fall apart when designing creative tools (developer tools, no-code tools, design tools, languages, APIs etc.), as there are fundamental differences1 between the two: In transactional processes, users have clearly defined goals, and the task is highly specialized (e.g. "Go to work", "Order takeout", "Find accommodation for my upcoming trip") and can often be modeled as a linear process. In creator tools, use cases vary wildly, goals are neither linear, nor clearly defined, and may even change throughout the session. Creator tools typically ship knowingly addressing only a percentage of their key use cases -- otherwise they would never ship at all. It's all about balancing UX, use case coverage, and design/implementation effort. Evaluating user experience: Floor and ceiling In end-user programming we talk about the floor and the ceiling of a tool: The floor is the minimum level of knowledge users need to create something useful. The ceiling refers to the extent of what can be created. Some people also talk about wide walls: the range of things that can be made (i.e. how domain specific the tool is). I think that vocabulary generalizes more broadly to creator tools, and can be a useful UX metric. Programming languages tend to have high ceiling, but also a high floor: You make anything, but it requires months or years of training, whereas domain specific GUI builders like Google Forms have a low floor, but

## Minimalist Affordances: Making the right tradeoffs

DevFeed: [Minimalist Affordances: Making the right tradeoffs](<https://devfeed.tech/articles/minimalist-affordances-making-the-right-tradeoffs-52149.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2023/minimalist-affordances/>)

Author: Lea Verou

Published: 2023-11-02T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [Usability](<https://devfeed.tech/topics/usability.md>), [User interface design](<https://devfeed.tech/topics/ui-design.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [Users](<https://devfeed.tech/topics/users.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [design](<https://devfeed.tech/tags/design.md>), [github](<https://devfeed.tech/tags/github.md>), [ui](<https://devfeed.tech/tags/ui.md>), [usability](<https://devfeed.tech/tags/usability.md>), [user-interaction](<https://devfeed.tech/tags/user-interaction.md>), [user-testing](<https://devfeed.tech/tags/user-testing.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

An opinion article examines the tradeoff between minimalist aesthetics and usability in interface design. It argues that removing visual signifiers can reduce learnability, using GitHub's comment interface as an example of affordances becoming difficult to recognize.

### Source excerpt

Usability and aesthetics usually go hand in hand. In fact, there is even what we call the "Aesthetic Usability Effect": users perceive beautiful interfaces as easier to use and cut them more slack when it comes to minor usability issues. Unfortunately, sometimes usability and aesthetics can be at odds, also known as "form over function". Simplicity, and knowing when to stop A common incarnation of form-over-function, is when designers start identifying signifiers and affordances as noise to be eliminated, sacrificing a great deal of learnability for an -- often marginal -- improvement in aesthetics. Aesthetic and Minimalist Design is one of the Nielsen/Norman core usability heuristics (and all other heuristics taxonomies have something similar). More poetically, Antoine de Saint-Exupéry said "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away". However, this is one of those cases where everyone agrees with the theory, but the devil is in the details (though user testing can do wonders for consensus). Case in point: The new Github comment UI is beautiful. Look at how the text area smoothly blends with the tab, creating an irregular and visually interesting shape! The new GitHub commenting UI, unfocused. The new GitHub commenting UI, focused. Am I the only one that expected the focus outline to also follow the irregular shape? However, I cannot for the life of me internalize that this is a text field that I can type in. Even after using it over a dozen times, I still have to do a double take every time ("Where is the comment field?!", "Why is this read-only?"). For comparison, this was the old UI: The old GitHub commenting UI, with and without focus. While definitely more cluttered, its main UI elements were much more recognizable: there is a text field, indicated by the rounded rectangle, and tabs, indicated by the light gray border around the active tab. By merging the two, both affordances are watered down to th

## State of HTML 2023 now open!

DevFeed: [State of HTML 2023 now open!](<https://devfeed.tech/articles/state-of-html-2023-now-open-52153.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2023/state-of-html-2023/>)

Author: Lea Verou

Published: 2023-09-22T00:00:00Z

Content type: article

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Web](<https://devfeed.tech/topics/web.md>), [browser](<https://devfeed.tech/topics/browser.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>)

Tags: [0-1](<https://devfeed.tech/tags/0-1.md>), [2023](<https://devfeed.tech/tags/2023.md>), [blog](<https://devfeed.tech/tags/blog.md>), [browser](<https://devfeed.tech/tags/browser.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [developer-community](<https://devfeed.tech/tags/developer-community.md>), [html](<https://devfeed.tech/tags/html.md>), [launch](<https://devfeed.tech/tags/launch.md>), [news](<https://devfeed.tech/tags/news.md>), [standards](<https://devfeed.tech/tags/standards.md>), [state-of-html](<https://devfeed.tech/tags/state-of-html.md>), [surveys](<https://devfeed.tech/tags/surveys.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

An announcement that the State of HTML 2023 survey is open. Its results will help browsers and standards groups prioritize roadmaps, interoperability work, and platform gaps. The article also describes the product-team, UI, and UX research work behind the survey.

### Source excerpt

tl;dr the brand new State of HTML survey is finally open! Take State of HTML 2023 Survey Benefits to you: Survey results are used by browsers to prioritize roadmaps -- the reason Google is funding this. Time spent thoughtfully filling them out is an investment that can come back to you tenfold in the form of seeing features you care about implemented, browser incompatibilities being prioritized, and gaps in the platform being addressed. In addition to browsers, several standards groups are also using the results for prioritization and decision-making. Learn about new and upcoming features you may have missed; add features to your reading list and get a list of resources at the end! Get a personalized score and see how you compare to other respondents Learn about the latest trends in the ecosystem and what other developers are focusing on While the survey will be open for 3 weeks, responses entered within the first 9 days (until October 1st) will have a much higher impact on the Web, as preliminary data will be used to inform Interop 2024 proposals. The State of HTML logo, designed by Chris Kirk-Nielsen, who I think surpassed himself with this one! Background This is likely the most ambitious Devographics survey to date. For the past couple of months, I've been hard at work leading a small product team spread across three continents (2am to 8am became my second work shift 😅). We embarked on this mission with some uncertainty about whether there were enough features for a State of HTML survey, but quickly found ourselves with the opposite problem: there were too many, all with good reasons for inclusion! To help weigh the tradeoffs and decide what makes the cut we consulted both the developer community, as well as stakeholders across browsers, standards groups, community groups, and more. We even designed new UI controls to facilitate collecting the types of complex data that were needed without making the questions too taxing, and did original UX research to validate

## Numbers or Brackets for numeric questions?

DevFeed: [Numbers or Brackets for numeric questions?](<https://devfeed.tech/articles/numbers-or-brackets-for-numeric-questions-52150.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2023/numbers-vs-brackets/>)

Author: Lea Verou

Published: 2023-08-03T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [input](<https://devfeed.tech/topics/input.md>), [Statistics](<https://devfeed.tech/topics/statistics.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [data-analysis](<https://devfeed.tech/tags/data-analysis.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [state-of-html](<https://devfeed.tech/tags/state-of-html.md>), [statistics](<https://devfeed.tech/tags/statistics.md>), [survey](<https://devfeed.tech/tags/survey.md>), [survey-design](<https://devfeed.tech/tags/survey-design.md>), [surveys](<https://devfeed.tech/tags/surveys.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

The article compares numeric inputs with bracketed choices for demographic survey questions such as age, experience, company size, and income. It argues that numeric inputs can reduce cognitive overhead and enable richer statistical analysis, while acknowledging privacy and convenience advantages of brackets.

### Source excerpt

As you may know, this summer I am leading the design of the inaugural State of HTML survey. Naturally, I am also exploring ways to improve both survey UX, as well as all questions. Shaine Madala, a data scientist working on the survey design team proposed using numerical inputs instead of brackets for the income question. While I was initially against it, I decided to explore this a bit further, which changed my opinion. The current income question, which uses 6 brackets plus a "Not Applicable" option. There are actually four demographics questions in State of X surveys where the answer is essentially a number, yet we ask respondents to select a bracket: age, years of experience, company size, and income. The arguments for brackets are: They are more privacy preserving for sensitive questions (e.g. people may feel more comfortable sharing an income bracket than their actual income) They are more efficient to input (one click vs homing to keyboard and hitting several keystrokes). In some cases respondents may not know the precise number offhand (e.g. company size) The arguments for numerical input are: Depending on the specifics, these can actually be faster to answer overall since they involve lower cognitive overhead (for known numbers). The brackets are applied at the analysis stage, so they can be designed to provide a better overview of the dataset More elaborate statistics can be computed (e.g. averages, medians, stdevs, the sky is the limit) Which one is faster? We can actually calculate this! Average reading speed for non-fiction is around 240 wpm (= 250ms/word) 1 Therefore, we can approximate reading time for each question by multiplying number of brackets x average words per bracket (wpb) x 250ms. However, this assumes the respondent reads all brackets from top to bottom, but this is a rare worst case scenario. Usually they stop reading once they find the bracket that matches their answer, and they may even skip some brackets, performing a sort of manual bi

## Designing the Inaugural State of HTML Survey

DevFeed: [Designing the Inaugural State of HTML Survey](<https://devfeed.tech/articles/help-design-the-inaugural-state-of-html-survey-52146.md>)

Original publisher: [Read original article](<https://lea.verou.me/blog/2023/design-state-of-html/>)

Author: Lea Verou

Published: 2023-07-26T00:00:00Z

Content type: opinion

Language: en

Sources: [Lea Verou's blog](<https://devfeed.tech/sources/lea-verou-s-blog.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [browsers](<https://devfeed.tech/topics/browsers.md>)

Tags: [0-1](<https://devfeed.tech/tags/0-1.md>), [blog](<https://devfeed.tech/tags/blog.md>), [data-analysis](<https://devfeed.tech/tags/data-analysis.md>), [developers](<https://devfeed.tech/tags/developers.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [google](<https://devfeed.tech/tags/google.md>), [html](<https://devfeed.tech/tags/html.md>), [news](<https://devfeed.tech/tags/news.md>), [state-of-css](<https://devfeed.tech/tags/state-of-css.md>), [state-of-html](<https://devfeed.tech/tags/state-of-html.md>), [survey](<https://devfeed.tech/tags/survey.md>), [surveys](<https://devfeed.tech/tags/surveys.md>), [web-almanac](<https://devfeed.tech/tags/web-almanac.md>)

### AI overview

The author introduces the inaugural State of HTML survey, intended to measure evolving HTML features and APIs that were not covered well by existing State of CSS or State of JS surveys.

### Source excerpt

You have likely participated in several Devographics surveys before, such as State of CSS, or State of JS. These surveys have become the primary source of unbiased data for the practices of front-end developers today (there is also the Web Almanac research, but because this studies what is actually used on the web, it takes a lot longer for changes in developer practices to propagate). You may remember that last summer, Google sponsored me to be Survey Design Lead for State of CSS 2022. It went really well: we got 60% higher response rate than the year before, which gave browsers a lot of actionable data to prioritize their work. The feedback from these surveys is a prime input into the Interop project, where browsers collaborate to implement the most important features for developers interoperably. So this summer, Google trusted me with a much bigger project, a brand new survey: State of HTML! For some of you, a State of HTML survey may be the obvious next step, the remaining missing piece. For others, the gap this is filling may not be as clear. No, this is not about whether you prefer <div> or <span>! It turns out, just like JavaScript and CSS, HTML is actually going through an evolution of its own! New elements like <selectmenu> and <breadcrumb> are on the horizon, or cool new features like popovers and declarative Shadow DOM. There are even JS APIs that are intrinsically tied to HTML, such as e.g. Imperative slot assignment or DOM APIs like input.showPicker() Historically, these did not fit in any of these surveys. Some were previously asked in State of JS, some in State of CSS, but it was always a bit awkward. This new survey aims to fill these gaps, and finish surveying the core technologies of the Web, which are HTML, CSS and JavaScript. Designing a brand new survey is a more daunting task than creating the new edition of an existing survey, but also an exciting one, as comparability with the data from prior years is not a concern, so there is a lot more fre

[Next page](<https://devfeed.tech/sources/lea-verou-s-blog.md?cursor=WyIyMDIzLTA3LTI2VDAwOjAwOjAwKzAwOjAwIiwgImY3MzgwNWU4LTE1YWQtNDllNy04OWNlLTYzYzAyZWViNDQzZCJd>)