<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://web-standards.dev" xml:lang="en">
	<title>Web Standards</title>
	<subtitle>Daily web platform news</subtitle>
	<link href="https://web-standards.dev"/>
	<link href="https://web-standards.dev/feed/" rel="self"/>
	<updated>2026-10-02T12:00:00+02:00</updated>
	<id>https://web-standards.dev/</id>
	<author>
		<name>Web Standards</name>
		<email>hi@web-standards.dev</email>
	</author>
		<entry>
			<title>The JavaScript midlife crisis</title>
			<link href="https://web-standards.dev/news/2026/10/javascript-midlife-crisis/"/>
			<updated>2026-10-02T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/10/javascript-midlife-crisis/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/10/javascript-midlife-crisis/cover.avif" width="1920" height="1080" alt="Title “The JavaScript midlife crisis”, a portrait photo of Maroun Baydoun, and a dark statue with a golden laurel wreath covering its eyes."&gt;
&lt;p&gt;Maroun Baydoun looks at how Rust, Go, and Zig are taking over the JavaScript toolchain. When linters and formatters shared a language with your code, anyone could debug and fix them. Rewriting a bundler in Rust makes it faster but shrinks the pool of people who can maintain it. Now we compile JavaScript with Rust to produce JavaScript that runs in an engine written mostly in C++, laying faster tracks for a slow train.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maroun-baydoun.com/blog/javascript-midlife-crisis/&quot;&gt;maroun-baydoun.com/blog/javascript-midlife-crisis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>State of Devs 2026 survey results</title>
			<link href="https://web-standards.dev/news/2026/10/state-of-devs-2026-survey-results/"/>
			<updated>2026-10-01T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/10/state-of-devs-2026-survey-results/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/10/state-of-devs-2026-survey-results/cover.avif" width="1920" height="1080" alt="Pixel-art “The State of Devs 2026” logo surrounded by icons, with sections Workplace, Career, Health, Hobbies, Mental State, Politics, AI, and Opinions."&gt;
&lt;p&gt;Sacha Greif and Devographics polled 5,463 developers about everything but code. Management tops the workplace issues, and 62% have experienced burnout. Most rely on AI for the bulk of their code, yet sentiment is split down the middle, and only 23% say it had a positive impact on their mental state. Climate change remains the top worry, and exhaustion and disillusionment lead the feelings about the tech industry.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://2026.stateofdevs.com/en-US/&quot;&gt;2026.stateofdevs.com/en-US&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Firefox 157 release notes for developers</title>
			<link href="https://web-standards.dev/news/2026/09/firefox-157/"/>
			<updated>2026-09-30T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/firefox-157/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/firefox-157/cover.avif" width="1920" height="1080" alt="Screenshot of browser developer tools with the Inspector panel open on web-standards.dev, a large Firefox logo overlaid, and the text “Firefox 157”."&gt;
&lt;p&gt;The &lt;code&gt;at-rule()&lt;/code&gt; function in &lt;code&gt;@supports&lt;/code&gt; tests whether a browser supports a given at-rule, like &lt;code&gt;at-rule(@scope)&lt;/code&gt;, and works in the &lt;code&gt;supports()&lt;/code&gt; function of &lt;code&gt;@import&lt;/code&gt;. The &lt;code&gt;overscroll-behavior&lt;/code&gt; properties gain a &lt;code&gt;chain&lt;/code&gt; value: scrolling passes to another scrollable area without the default bounce. &lt;code&gt;Animation.reverse()&lt;/code&gt; now plays an animation with &lt;code&gt;playbackRate&lt;/code&gt; 0. Behind flags: ML-KEM in Web Crypto and notification &lt;code&gt;navigate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/157&quot;&gt;developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/157&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Improving site performance by shipping more CSS</title>
			<link href="https://web-standards.dev/news/2026/09/shipping-more-css-for-performance/"/>
			<updated>2026-09-29T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/shipping-more-css-for-performance/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/shipping-more-css-for-performance/cover.avif" width="1920" height="1080" alt="Title “Improving site performance by shipping more CSS” and a green 3D cube with a white logo mark, on a background of green checkered squares."&gt;
&lt;p&gt;In the GitHub blog, Josh Black and Marie Lucca explain how the Primer design system moved from CSS-in-JS to CSS Modules. The &lt;code&gt;sx&lt;/code&gt; prop’s runtime cost grew with every component on a page, so the team shipped both versions behind feature flags and compared visual regression snapshots. The result: 55% less time to server-side render a page and 25% less time for components to initialize.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css/&quot;&gt;github.blog/engineering/architecture-optimization/improving-site-performance-by-shipping-more-css&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>What’s new in Chrome 154</title>
			<link href="https://web-standards.dev/news/2026/09/chrome-154/"/>
			<updated>2026-09-28T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/chrome-154/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/chrome-154/cover.avif" width="1920" height="1080" alt="Graphic with the text “New in Chrome” and the number 154, alongside the Chrome logo on a red grid background."&gt;
&lt;p&gt;The new &lt;code&gt;text-decoration-inset&lt;/code&gt; property controls how far underlines, overlines, and line-through decorations start and end, while negative values extend them past the text. The &lt;code&gt;scroll-marker-group&lt;/code&gt; property takes &lt;code&gt;links&lt;/code&gt; and &lt;code&gt;tabs&lt;/code&gt; modes that set focus order and ARIA semantics for scroll markers. An &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt; can size itself to its content with &lt;code&gt;frame-sizing&lt;/code&gt;, and JavaScript gains &lt;code&gt;Iterator.includes()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/release-notes/154&quot;&gt;developer.chrome.com/release-notes/154&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Browsers situationship: when browsers agree but the spec doesn’t</title>
			<link href="https://web-standards.dev/news/2026/09/browsers-situationship/"/>
			<updated>2026-09-25T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/browsers-situationship/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/browsers-situationship/cover.avif" width="1920" height="1080" alt="Portrait photo of Rakhi Sharma, the Servo logo, title “Browsers Situationship: When Browsers Agree but the Spec Doesn’t”, and name “Rakhi Sharma”."&gt;
&lt;p&gt;Rakhi Sharma looks at what happens when Chrome, Firefox, and Safari ship the same behavior that the spec never described. Sometimes the browsers get fixed, sometimes the spec moves toward reality: newline normalization in HTML forms went that way. WHATWG’s working mode, Web Platform Tests, and the Compatibility Standard all push toward convergence.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.atbrakhi.dev/blog/browsers-situationship&quot;&gt;atbrakhi.dev/blog/browsers-situationship&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>One SVG, nine posters: CSS link-parameters</title>
			<link href="https://web-standards.dev/news/2026/09/css-linked-parameters/"/>
			<updated>2026-09-24T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/css-linked-parameters/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/css-linked-parameters/cover.avif" width="1920" height="1080" alt="Nine Marilyn Monroe posters in different colors, a green logo, an SVG code block with env() fills, and title “One SVG, nine posters: CSS linked parameters”."&gt;
&lt;p&gt;Vadim Makeev tries CSS Linked Parameters, a new spec running in Firefox Nightly and behind a flag in Safari TP. The SVG file writes &lt;code&gt;env(--color, fallback)&lt;/code&gt; wherever a value goes, and the page passes it in with &lt;code&gt;link-parameters: param(--color, coral)&lt;/code&gt;. A Warhol print in SVG, referenced nine times as &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;, comes out in different color schemes from one cached file. Browsers without support render the fallbacks.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pepelsbey.dev/articles/svg-link-params/&quot;&gt;pepelsbey.dev/articles/svg-link-params&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>The root scroller and how not to lose it</title>
			<link href="https://web-standards.dev/news/2026/09/root-scroller-and-how-not-to-lose-it/"/>
			<updated>2026-09-23T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/root-scroller-and-how-not-to-lose-it/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/root-scroller-and-how-not-to-lose-it/cover.avif" width="1920" height="1080" alt="Polypane logo, title “The root scroller and how not to lose it”, a person sliding down an arrow, and an app demo with a dialog “Try scrolling (or dragging) the page behind this dialog.”"&gt;
&lt;p&gt;Kilian Valkhof explains what the page’s own scroll container gives you: it restores scroll position, answers Space and arrow keys, and on mobile collapses the address bar and enables pull-to-refresh. A fixed-height app shell wrapper with &lt;code&gt;overflow&lt;/code&gt; replaces it, and &lt;code&gt;window.scrollY&lt;/code&gt; stuck at 0 gives it away. Full-height layouts, sticky headers, and scroll locks all have fixes that keep the page scrolling.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://polypane.app/blog/the-root-scroller-and-how-not-to-lose-it/&quot;&gt;polypane.app/blog/the-root-scroller-and-how-not-to-lose-it&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Responsive iframes in Chrome 154</title>
			<link href="https://web-standards.dev/news/2026/09/responsive-iframes-in-chrome-154/"/>
			<updated>2026-09-22T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/responsive-iframes-in-chrome-154/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/responsive-iframes-in-chrome-154/cover.avif" width="1920" height="1080" alt="Chrome logo, an illustration of a scrollable embedded page, an HTML snippet with a responsive-embedded-sizing meta element, a frame-sizing CSS snippet, and title “Responsive iframes in Chrome 154”."&gt;
&lt;p&gt;Sebastian Benz and Bramus Van Damme introduce &lt;code&gt;frame-sizing&lt;/code&gt;, a CSS property that lets an embedded frame grow with its content instead of reporting height through &lt;code&gt;postMessage&lt;/code&gt;. The embedding page sets &lt;code&gt;frame-sizing: content-height&lt;/code&gt;, and the embedded document opts in with a &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; element that can restrict origins. After content changes, &lt;code&gt;window.requestResize()&lt;/code&gt; asks for a new measurement. Behind flags in Chrome and Edge.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/blog/responsive-iframes&quot;&gt;developer.chrome.com/blog/responsive-iframes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Better icon and label alignment</title>
			<link href="https://web-standards.dev/news/2026/09/better-icon-and-label-alignment/"/>
			<updated>2026-09-21T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/better-icon-and-label-alignment/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/better-icon-and-label-alignment/cover.avif" width="1920" height="1080" alt="Title “Better Icon and Label Alignment”, author’s photo, a demo with “Icon” and “Font size” sliders, two list items reading “How to align an icon to a label.”, and a CSS code block."&gt;
&lt;p&gt;Ahmad Shadeed starts with a list where &lt;code&gt;align-items: center&lt;/code&gt; drifts as soon as a label wraps to a second line, while &lt;code&gt;align-items: start&lt;/code&gt; leaves the icon too high because of the line box around the text. The fix is the &lt;code&gt;lh&lt;/code&gt; unit: half the difference between the line box and the icon size, applied as a &lt;code&gt;translateY()&lt;/code&gt; offset that holds at any font size. Icons drawn as pseudo-elements need a couple of extra declarations.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ishadeed.com/article/aligning-list-icons/&quot;&gt;ishadeed.com/article/aligning-list-icons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Sidenotes with CSS anchor positioning</title>
			<link href="https://web-standards.dev/news/2026/09/sidenotes-with-css-anchor-positioning/"/>
			<updated>2026-09-18T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/sidenotes-with-css-anchor-positioning/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/sidenotes-with-css-anchor-positioning/cover.avif" width="1920" height="1080" alt="Article text with sidenotes in the right margin, one reading “My PhD advisor told me this is unwise.”, an HTML snippet, and the title “Sidenotes with CSS anchor positioning” by Vincent Bernat."&gt;
&lt;p&gt;Vincent Bernat moves footnotes into the margin with &lt;code&gt;anchor-name&lt;/code&gt; and &lt;code&gt;position-anchor&lt;/code&gt;, both read from data attributes with typed &lt;code&gt;attr()&lt;/code&gt;. Each note lines up with its reference mark, and when the previous one is in the way, a &lt;code&gt;max()&lt;/code&gt; of two &lt;code&gt;anchor()&lt;/code&gt; values pushes it a line below instead. On narrow viewports and older browsers, notes stay under their paragraph, muted.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://vincent.bernat.ch/en/blog/2026-css-sidenotes&quot;&gt;vincent.bernat.ch/en/blog/2026-css-sidenotes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Modern web types</title>
			<link href="https://web-standards.dev/news/2026/09/modern-web-types/"/>
			<updated>2026-09-17T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/modern-web-types/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/modern-web-types/cover.avif" width="1920" height="1080" alt="Title “Modern Web Types” next to a photo of Philip Walton, and code editors showing errors “Property startViewTransition does not exist” and “Property scripts does not exist”."&gt;
&lt;p&gt;Philip Walton got tired of TypeScript flagging the View Transition API, Long Animation Frame API, and &lt;code&gt;fetchLater()&lt;/code&gt; as errors, because its official DOM types only cover APIs shipped in two engines. So he published &lt;code&gt;modern-web-types&lt;/code&gt;, a drop-in replacement built with the same generator and W3C webref data, but with a single-engine threshold: 433 extra interfaces, 223 globals, and 311 members on existing interfaces.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://philipwalton.com/articles/modern-web-types/&quot;&gt;philipwalton.com/articles/modern-web-types&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>WebKit features in Safari 27</title>
			<link href="https://web-standards.dev/news/2026/09/safari-27/"/>
			<updated>2026-09-16T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/safari-27/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/safari-27/cover.avif" width="1920" height="1080" alt="Safari Web Inspector Timelines view with Layout &amp;amp; Rendering, JavaScript &amp;amp; Events, CPU, and Memory graphs, overlaid by the Safari icon and the headline “WebKit Features for Safari 27”."&gt;
&lt;p&gt;Customizable &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;, scroll anchoring, WebAssembly JSPI, &lt;code&gt;ariaNotify()&lt;/code&gt;, the &lt;code&gt;:heading&lt;/code&gt; pseudo-class, &lt;code&gt;revert-rule&lt;/code&gt;, &lt;code&gt;stretch&lt;/code&gt; sizing, &lt;code&gt;sizes=&amp;quot;auto&amp;quot;&lt;/code&gt;, &lt;code&gt;import defer&lt;/code&gt;, subpixel inline layout, and the service worker static routing API — a total of 83 new features and 844 fixes, plus major updates in WebRTC, MathML, spatial web, web extensions, and developer tools.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.apple.com/documentation/safari-release-notes/safari-27-release-notes&quot;&gt;developer.apple.com/documentation/safari-release-notes/safari-27-release-notes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Firefox 156 release notes for developers</title>
			<link href="https://web-standards.dev/news/2026/09/firefox-156/"/>
			<updated>2026-09-15T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/firefox-156/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/firefox-156/cover.avif" width="1920" height="1080" alt="Screenshot of browser developer tools with the Inspector panel open on web-standards.dev, a large Firefox logo overlaid, and the text “Firefox 156”."&gt;
&lt;p&gt;The Inspector now resolves &lt;code&gt;var()&lt;/code&gt;, &lt;code&gt;attr()&lt;/code&gt;, and &lt;code&gt;env()&lt;/code&gt; in declaration steps, tracing them to their source. Calls to &lt;code&gt;scheduler.yield()&lt;/code&gt; keep the task’s priority and abort signal across a synchronous &lt;code&gt;await&lt;/code&gt;. &lt;code&gt;Promise.try()&lt;/code&gt; passes native promises through, and &lt;code&gt;using&lt;/code&gt; declarations can no longer be reassigned. Behind flags: &lt;code&gt;named-feature()&lt;/code&gt; in &lt;code&gt;@supports&lt;/code&gt; and the Container Timing API.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/156&quot;&gt;developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/156&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>The browser’s main thread is expensive</title>
			<link href="https://web-standards.dev/news/2026/09/the-browsers-main-thread-is-expensive/"/>
			<updated>2026-09-14T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/the-browsers-main-thread-is-expensive/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/the-browsers-main-thread-is-expensive/cover.avif" width="1920" height="1080" alt="A browser window with a huge loading spinner rolling over colorful blocks on a road, a cartoon avatar, and the title “The Browser’s Main Thread Is Expensive” by Sunhyoup Lee."&gt;
&lt;p&gt;Sunhyoup Lee walks through the one thread that runs JavaScript, styles, layout, paint, and events, with about 10 milliseconds per frame, half that on a 120Hz screen. Spend it better: split long tasks and yield with &lt;code&gt;scheduler.yield()&lt;/code&gt;, batch events with debounce and throttle, prioritize by user impact, and defer the rest. Or hand it off to the compositor or a &lt;code&gt;Worker&lt;/code&gt;. Interactive demos compare them.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kciter.so/posts/the-expensive-main-thread/en/&quot;&gt;kciter.so/posts/the-expensive-main-thread/en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Make your logo brighter than white</title>
			<link href="https://web-standards.dev/news/2026/09/make-your-logo-brighter-than-white/"/>
			<updated>2026-09-11T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/make-your-logo-brighter-than-white/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/make-your-logo-brighter-than-white/cover.avif" width="1920" height="1080" alt="Title “Make your logo brighter than white”, an upload area saying “Drop your logo here, or click to choose”, and two squares labelled “SDR white” and “HDR white +2.9 stops”."&gt;
&lt;p&gt;Chris Bennett built a tool that turns a logo into a gain-map JPEG, so the colors you pick shine up to 7.5 times brighter than plain white on HDR screens and stay a perfectly normal JPEG everywhere else. Light elements on dark backgrounds glow best. The page also shows how to paint text through such an image with &lt;code&gt;background-clip: text&lt;/code&gt;, gated behind &lt;code&gt;@media (dynamic-range: high)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.soverybright.com/&quot;&gt;soverybright.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>What’s new in Chrome 153</title>
			<link href="https://web-standards.dev/news/2026/09/chrome-153/"/>
			<updated>2026-09-10T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/chrome-153/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/chrome-153/cover.avif" width="1920" height="1080" alt="Graphic with the text “New in Chrome” and the number 153, alongside the Chrome logo on a blue grid background."&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;camera&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;microphone&amp;gt;&lt;/code&gt; elements request video and audio capture declaratively, with browser-controlled UI and permission recovery. The &lt;code&gt;overflow&lt;/code&gt; property now takes scrollable values next to &lt;code&gt;clip&lt;/code&gt;, so &lt;code&gt;overflow: scroll clip&lt;/code&gt; makes a scroll container on one axis. The new &lt;code&gt;scroll-axis-lock&lt;/code&gt; property controls diagonal scrolling. JavaScript gains &lt;code&gt;Iterator.zip()&lt;/code&gt; and &lt;code&gt;Iterator.zipKeyed()&lt;/code&gt; to aggregate several iterators.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/release-notes/153&quot;&gt;developer.chrome.com/release-notes/153&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>You don’t need initial-scale in your HTML</title>
			<link href="https://web-standards.dev/news/2026/09/you-dont-need-initial-scale/"/>
			<updated>2026-09-09T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/you-dont-need-initial-scale/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/you-dont-need-initial-scale/cover.avif" width="1920" height="1080" alt="A viewport &amp;lt;meta&amp;gt; snippet with initial-scale=1 underlined in red, over two article pages titled “initial-scale no longer needed” and “You don’t need initial-scale in your HTML”."&gt;
&lt;p&gt;Declan Chidlow and Peter-Paul Koch published the same finding hours apart: the viewport &lt;code&gt;&amp;lt;meta name=&amp;quot;viewport&amp;quot;&amp;gt;&lt;/code&gt; only needs &lt;code&gt;width=device-width&lt;/code&gt;. The &lt;code&gt;initial-scale=1&lt;/code&gt; part was there to fix zooming in old iOS versions, and Safari now recalculates the layout viewport on orientation change without it. Nineteen bytes saved in every document head.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://vale.rocks/micros/20260902-1350&quot;&gt;vale.rocks/micros/20260902-1350&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://quirksmode.org/quirksblog/2026/0902-initial.html&quot;&gt;quirksmode.org/quirksblog/2026/0902-initial.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Container style queries and advanced attr(): rethinking how to wire up my components in CSS</title>
			<link href="https://web-standards.dev/news/2026/09/style-queries-and-advanced-attr/"/>
			<updated>2026-09-08T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/style-queries-and-advanced-attr/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/style-queries-and-advanced-attr/cover.avif" width="1920" height="1080" alt="Utilitybend logo, the author’s photo, three dark cards for Irondude, Solarrae, and Aethergal, and title “Container style queries and advanced attr(): rethinking how to wire up my components in CSS”."&gt;
&lt;p&gt;Brecht De Ruyte casts HTML attributes straight into typed CSS values, so &lt;code&gt;data-gap=&amp;quot;2&amp;quot;&lt;/code&gt; on a grid becomes &lt;code&gt;attr(data-gap cqi, 2cqi)&lt;/code&gt; instead of a utility class. A parent then sets &lt;code&gt;data-density=&amp;quot;compact&amp;quot;&lt;/code&gt;, and &lt;code&gt;@container style()&lt;/code&gt; queries rescale padding, avatars, and type through one &lt;code&gt;--density-scale&lt;/code&gt; multiplier. No modifier classes, no props, no JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://utilitybend.com/blog/container-style-queries-and-advanced-attr-rethinking-how-to-wire-up-my-components-in-css/&quot;&gt;utilitybend.com/blog/container-style-queries-and-advanced-attr-rethinking-how-to-wire-up-my-components-in-css&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Submit your proposals for Interop 2027</title>
			<link href="https://web-standards.dev/news/2026/09/submit-your-proposals-for-interop-2027/"/>
			<updated>2026-09-07T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/submit-your-proposals-for-interop-2027/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/submit-your-proposals-for-interop-2027/cover.avif" width="1920" height="1080" alt="Title “Submit your proposals for Interop 2027”, illustrations of a browser window and a phone with code, and four zero scores under the Chrome, Edge, Firefox, and Safari logos."&gt;
&lt;p&gt;The call is open until September 23rd, and the proposal guide spells out what browsers look for: a stable specification, plus Web Platform Tests that run automatically in Chrome, Edge, Firefox, and Safari on wpt.fyi. Evidence of real-world breakage, demand from developer surveys, and accessibility or privacy wins all count. There are two templates: focus areas for ready features, investigations for the rest.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/web-platform-tests/interop/blob/main/proposal_guide.md&quot;&gt;Interop proposers guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/blog/interop-2027-proposals&quot;&gt;Google’s announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blogs.windows.com/msedgedev/2026/09/03/calling-for-interop-2027-proposals/&quot;&gt;Microsoft’s announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://webkit.org/blog/18283/submit-your-ideas-for-interop-2027/&quot;&gt;Apple’s announcement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Fine, I’ll build my own text editor!</title>
			<link href="https://web-standards.dev/news/2026/09/build-my-own-text-editor/"/>
			<updated>2026-09-04T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/build-my-own-text-editor/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/build-my-own-text-editor/cover.avif" width="1920" height="1080" alt="Title “Fine, I’ll build my own text editor!”, the name “David Bushell”, and an editor window with 13 numbered lines of syntax-highlighted HTML."&gt;
&lt;p&gt;David Bushell tries three ways to build one in the browser and shows what each approach gives away. Canvas offers full control but no text selection, undo history, or multi-line paste. Contenteditable with &lt;code&gt;plaintext-only&lt;/code&gt; brings back native editing and accessibility, though performance drops past a certain number of characters. A plain &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; turns out fastest, with syntax highlighting layered on top.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dbushell.com/2026/09/01/text-editor/&quot;&gt;dbushell.com/2026/09/01/text-editor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Feature detecting “undetectable” CSS features with @supports named-feature()</title>
			<link href="https://web-standards.dev/news/2026/09/supports-named-feature/"/>
			<updated>2026-09-03T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/supports-named-feature/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/supports-named-feature/cover.avif" width="1920" height="1080" alt="Title “Feature Detecting “Undetectable” CSS Features with @supports named-feature()”, a star icon, the author speaking on stage, and two feature-detection.css code snippets."&gt;
&lt;p&gt;Bramus Van Damme explains the function the CSS Working Group adopted for capabilities you can’t test any other way. Checking &lt;code&gt;@supports (display: flex) and (gap: 1em)&lt;/code&gt; only proves both parse, not that &lt;code&gt;gap&lt;/code&gt; works in a flex container. The spec has two keywords so far: &lt;code&gt;anchor-position-follows-transforms&lt;/code&gt; and &lt;code&gt;single-axis-scroll-container&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bram.us/2026/08/27/feature-detecting-undetectable-css-features-with-supports-named-feature/&quot;&gt;bram.us/2026/08/27/feature-detecting-undetectable-css-features-with-supports-named-feature&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Firefox 155 release notes for developers</title>
			<link href="https://web-standards.dev/news/2026/09/firefox-155/"/>
			<updated>2026-09-02T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/firefox-155/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/firefox-155/cover.avif" width="1920" height="1080" alt="Screenshot of browser developer tools with the Inspector panel open on web-standards.dev, a large Firefox logo overlaid, and the text “Firefox 155”."&gt;
&lt;p&gt;This release expands &lt;code&gt;attr()&lt;/code&gt; to any CSS property with unit identifiers and fallback values, adds the &lt;code&gt;progress()&lt;/code&gt; and &lt;code&gt;alpha()&lt;/code&gt; functions, renames &lt;code&gt;font-stretch&lt;/code&gt; to &lt;code&gt;font-width&lt;/code&gt;, and brings &lt;code&gt;Promise.allKeyed()&lt;/code&gt; and &lt;code&gt;Promise.allSettledKeyed()&lt;/code&gt;. DevTools get a media feature emulation panel and JSON Lines support. Behind flags: scroll-driven animations, scoped custom element registries, and &lt;code&gt;line-clamp&lt;/code&gt; improvements.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/155&quot;&gt;developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/155&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Modern Web Guidance as a starting point for my own token skills: getting agents to write better CSS</title>
			<link href="https://web-standards.dev/news/2026/09/modern-web-guidance-token-skills/"/>
			<updated>2026-09-01T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/09/modern-web-guidance-token-skills/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/09/modern-web-guidance-token-skills/cover.avif" width="1920" height="1080" alt="Title “Modern Web Guidance as a starting point for my own token skills: getting agents to write better CSS” and three cards: “Modern web guidance”, “Your project skills”, “human review”."&gt;
&lt;p&gt;Brecht De Ruyte tries Google’s Modern Web Guidance, a skillset that feeds expert platform guidance with Baseline data into coding agents. Its CLI search pulls in only the relevant guides out of 103 features, and every fallback is checked nightly by Playwright graders. Since it stays vendor-agnostic, he adds three skills of his own for token tiers, theming with &lt;code&gt;light-dark()&lt;/code&gt;, and component states.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://utilitybend.com/blog/modern-web-guidance-antigravity-and-my-own-design-token-skills/&quot;&gt;utilitybend.com/blog/modern-web-guidance-antigravity-and-my-own-design-token-skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
		<entry>
			<title>Highlighting a range of text inside a form field</title>
			<link href="https://web-standards.dev/news/2026/08/highlighting-text-range-in-inputs/"/>
			<updated>2026-08-31T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/08/highlighting-text-range-in-inputs/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/08/highlighting-text-range-in-inputs/cover.avif" width="1920" height="1080" alt="Title “Using the OpaqueRange API with the CSS Custom Highlight API” with parts of it highlighted in pink and green, the author’s photo, three code blocks, and “olliewilliams.xyz”."&gt;
&lt;p&gt;Ollie Williams shows how the new OpaqueRange extends the CSS Custom Highlight API into form controls. Call &lt;code&gt;createValueRange()&lt;/code&gt; on a &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; or on a &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;password&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;tel&lt;/code&gt;, or &lt;code&gt;url&lt;/code&gt; &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;, pass the result into a &lt;code&gt;Highlight()&lt;/code&gt;, and register it with &lt;code&gt;CSS.highlights.set()&lt;/code&gt;. In &lt;code&gt;::highlight()&lt;/code&gt; you get &lt;code&gt;color&lt;/code&gt;, &lt;code&gt;background-color&lt;/code&gt;, &lt;code&gt;text-decoration&lt;/code&gt;, and &lt;code&gt;text-shadow&lt;/code&gt;. Chromium 152 only for now.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://olliewilliams.xyz/blog/opaquerange/&quot;&gt;olliewilliams.xyz/blog/opaquerange&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can also follow us on
	&lt;a href="https://mastodon.social/@webstandards_dev"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/web-standards.dev"&gt;Bluesky&lt;/a&gt;, &lt;a href="https://x.com/webstandardsdev"&gt;X&lt;/a&gt;
&lt;/p&gt;
			</content>
		</entry>
</feed>
