<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-05-22T12: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>Look up web platform features from your terminal</title>
			<link href="https://web-standards.dev/news/2026/05/web-features-cli/"/>
			<updated>2026-05-22T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/web-features-cli/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/web-features-cli/cover.avif" width="1920" height="1080" alt="Two terminals with web-features-cli: wf view transitions -s bugs -s positions listing bugs and positions, and wf container queries showing Baseline Widely available since 2025-08-14."&gt;
&lt;p&gt;Patrick Brosset’s &lt;code&gt;wf&lt;/code&gt; command searches by keyword and shows Baseline status, MDN docs, specs, browser bugs, survey results, standards positions, and Chrome usage. It combines data from &lt;code&gt;web-features&lt;/code&gt; and &lt;code&gt;web-features-mappings&lt;/code&gt;, both maintained by the W3C WebDX Community Group, and fetches the latest data at runtime.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/package/web-features-cli&quot;&gt;npmjs.com/package/web-features-cli&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 CSS 2026</title>
			<link href="https://web-standards.dev/news/2026/05/state-of-css-2026/"/>
			<updated>2026-05-21T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/state-of-css-2026/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/state-of-css-2026/cover.avif" width="1920" height="1080" alt="State of CSS 2026 title, pink crystal CSS logo, and survey sections: Shapes &amp;amp; Graphics, Colors, Interactions, Layout, Other Features, Other Tools, CSS Usage, Resources, About You."&gt;
&lt;p&gt;Devographics opened the annual State of CSS survey, this year with fewer features so it stays manageable. The team focused on what matters most, from layout, selectors, and typography to interactions, forms, and shapes. It takes 15–20 minutes to complete and helps map how developers actually use modern CSS. Don&#39;t forget to vote for your favorite resources and add anything new to your reading list.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://survey.devographics.com/en-US/survey/state-of-css/2026&quot;&gt;survey.devographics.com/en-US/survey/state-of-css/2026&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</title>
			<link href="https://web-standards.dev/news/2026/05/modern-web-guidance/"/>
			<updated>2026-05-20T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/modern-web-guidance/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/modern-web-guidance/cover.avif" width="1920" height="1080" alt="“Build with Modern Web Guidance”, the command npx modern-web-guidance@latest install, and supported tools Claude Code, Copilot CLI, Antigravity CLI, and npx skills."&gt;
&lt;p&gt;A set of evergreen, expert-vetted skills for AI coding agents from the Chrome team, covering UI components, legacy code modernization, security, and performance. Install via &lt;code&gt;npx modern-web-guidance@latest install&lt;/code&gt;, or as plugins for Claude Code, Copilot CLI, Vercel Agent Skills, and Antigravity. The skills can help with modern features like &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; modals, popover tooltips, container queries, passkeys, CSP, and improving Web Vitals.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/docs/modern-web-guidance&quot;&gt;developer.chrome.com/docs/modern-web-guidance&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 151 release notes for developers</title>
			<link href="https://web-standards.dev/news/2026/05/firefox-151/"/>
			<updated>2026-05-19T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/firefox-151/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/firefox-151/cover.avif" width="1920" height="1080" alt="Screenshot of Firefox developer tools showing the Inspector panel with HTML markup and CSS rules, overlaid by the Firefox logo and the text “Firefox 151”."&gt;
&lt;p&gt;The release adds &lt;code&gt;shadowrootslotassignment&lt;/code&gt; on &lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt; elements for declarative slot assignment, &lt;code&gt;@container&lt;/code&gt; &lt;code&gt;style()&lt;/code&gt; queries, &lt;code&gt;position-anchor: normal&lt;/code&gt;, the Document Picture-in-Picture API for always-on-top HTML windows, desktop Web Serial API, &lt;code&gt;CanvasRenderingContext2D.lang&lt;/code&gt;, &lt;code&gt;keyboardLock&lt;/code&gt; in &lt;code&gt;requestFullscreen()&lt;/code&gt;, and the experimental &lt;code&gt;field-sizing&lt;/code&gt; property for form controls.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151&quot;&gt;developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/151&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 AI 2026 results</title>
			<link href="https://web-standards.dev/news/2026/05/state-of-ai-2026/"/>
			<updated>2026-05-18T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/state-of-ai-2026/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/state-of-ai-2026/cover.avif" width="1920" height="1080" alt="“State of Web Dev AI 2026” cover with a bar chart for “AI tools are a threat to my job security”: Disagree 21%, Neutral 28%, Agree 31%, and Claude 69%, ChatGPT 49%."&gt;
&lt;p&gt;Sacha Greif’s annual survey of 7,258 developers shows AI-assisted coding has gone mainstream, with respondents now generating 54% of their code with AI, up from 28% last year. Claude Code leads in positive sentiment among coding agents at 42.3%. Spending on AI tools keeps rising as the industry shifts from VC-subsidized pricing to sustainable monetization. Hallucinations remain the top pain point.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://2026.stateofai.dev/en-US&quot;&gt;2026.stateofai.dev/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>Browsers treat big sites differently</title>
			<link href="https://web-standards.dev/news/2026/05/browsers-treat-big-sites-differently/"/>
			<updated>2026-05-15T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/browsers-treat-big-sites-differently/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/browsers-treat-big-sites-differently/cover.avif" width="1920" height="1080" alt="“Browsers Treat Big Sites Differently” title over torn-paper cutouts of logos: Google, Yahoo!, YouTube, NFL, Spotify, TikTok, Slack, Outlook, ESPN, Discord, Apple, and Netflix."&gt;
&lt;p&gt;Den Odell reveals how Safari and Firefox quietly ship thousands of lines of site-specific patches to keep popular websites working. WebKit’s &lt;code&gt;Quirks.cpp&lt;/code&gt; and Firefox’s &lt;code&gt;about:compat&lt;/code&gt; both contain interventions for sites like TikTok, Netflix, and Reddit, sometimes even faking Chrome’s user agent. Chrome’s dominance forces minority browsers to compensate, echoing the IE era in reverse.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://denodell.com/blog/browsers-treat-big-sites-differently&quot;&gt;denodell.com/blog/browsers-treat-big-sites-differently&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 HTML Sanitizer API</title>
			<link href="https://web-standards.dev/news/2026/05/the-html-sanitizer-api/"/>
			<updated>2026-05-14T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/the-html-sanitizer-api/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/the-html-sanitizer-api/cover.avif" width="1920" height="1080" alt="Title “The HTML Sanitizer API” by Ahmad Alfy, over overlapping code snippets with DOMPurify imports and a new Sanitizer(config) example."&gt;
&lt;p&gt;Ahmad Alfy walks through the new browser-native API that prevents XSS without DOMPurify. Safe methods &lt;code&gt;setHTML&lt;/code&gt; and &lt;code&gt;parseHTML&lt;/code&gt; always strip dangerous content, while &lt;code&gt;setHTMLUnsafe&lt;/code&gt; and &lt;code&gt;parseHTMLUnsafe&lt;/code&gt; respect your configuration. Allow-lists and block-lists give fine-grained control over elements and attributes. Great for comment sections, WYSIWYG editors, and markdown previews, though backend sanitization stays essential.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://alfy.blog/2026/05/07/html-sanitizer-api.html&quot;&gt;alfy.blog/2026/05/07/html-sanitizer-api.html&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>Soon we can finally banish JavaScript to the ShadowRealm</title>
			<link href="https://web-standards.dev/news/2026/05/banish-javascript-to-the-shadowrealm/"/>
			<updated>2026-05-13T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/banish-javascript-to-the-shadowrealm/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/banish-javascript-to-the-shadowrealm/cover.avif" width="1920" height="1080" alt="A yellow lightbulb casts a beam revealing the JS letters on a dark background, with the title “Soon We Can Finally Banish JavaScript to the ShadowRealm”."&gt;
&lt;p&gt;Mat Marquis walks through the TC39 ShadowRealm proposal, which creates isolated execution contexts with their own pristine globals while running on the same thread as the host. With just two methods, &lt;code&gt;evaluate()&lt;/code&gt; and &lt;code&gt;importValue()&lt;/code&gt;, ShadowRealms could sandbox third-party scripts, ads, and test suites without polluting the main realm. Currently at Stage 2.7, not yet in browsers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm/&quot;&gt;css-tricks.com/soon-we-can-finally-banish-javascript-to-the-shadowrealm&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 for Safari 26.5</title>
			<link href="https://web-standards.dev/news/2026/05/safari-26-5/"/>
			<updated>2026-05-12T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/safari-26-5/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/safari-26-5/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 26.5”."&gt;
&lt;p&gt;Jen Simmons introduces the &lt;code&gt;:open&lt;/code&gt; pseudo-class for styling open &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements, the &lt;code&gt;element-scoped&lt;/code&gt; keyword for &lt;code&gt;random()&lt;/code&gt;, &lt;code&gt;color-interpolation&lt;/code&gt; with &lt;code&gt;linearRGB&lt;/code&gt; for SVG gradients, &lt;code&gt;ToggleEvent.source&lt;/code&gt; for the popover API, and the new Origin API for structured origin comparisons. Plus 63 bug fixes across SVG, WebRTC, networking, editing, anchor positioning, and scroll-driven animations.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://webkit.org/blog/17938/webkit-features-for-safari-26-5/&quot;&gt;webkit.org/blog/17938/webkit-features-for-safari-26-5&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>How to control infinite CSS animations</title>
			<link href="https://web-standards.dev/news/2026/05/infinite-css-animations/"/>
			<updated>2026-05-11T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/infinite-css-animations/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/infinite-css-animations/cover.avif" width="1920" height="1080" alt="“How to Control Infinite CSS Animations” title with Temani Afif’s name and avatar in a cap, next to three circular loader spinners: sharp purple, blurred middle, and faded cyan."&gt;
&lt;p&gt;In part 1 of 2, Temani Afif shows how to speed up, slow down, and reverse infinite CSS animations on demand. He uses &lt;code&gt;animation-composition: add&lt;/code&gt; to layer two animations, CSS variables for duration and a speed factor, and &lt;code&gt;abs()&lt;/code&gt; and &lt;code&gt;sign()&lt;/code&gt; functions to control velocity and direction independently, without restarting the animation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://frontendmasters.com/blog/how-to-control-infinite-css-animations-part-1-of-2/&quot;&gt;frontendmasters.com/blog/how-to-control-infinite-css-animations-part-1-of-2&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>From React to native web with nanotags: a migration that saved 100 KB</title>
			<link href="https://web-standards.dev/news/2026/05/react-to-web-components-nanotags/"/>
			<updated>2026-05-08T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/react-to-web-components-nanotags/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/react-to-web-components-nanotags/cover.avif" width="1920" height="1080" alt="Evil Martians logo, Pavel Grinchenko Frontend Engineer, title “From React to native web with nanotags: a migration that saved 100 KB”, and a balloon dropping bags of 30 KB, 30 KB, and 50 KB."&gt;
&lt;p&gt;Pavel Grinchenko explain how they migrated an Astro marketing site from React and Ark UI to native Web Components, cutting JavaScript by 100 KB. Nanotags is a sub-2.5 KB wrapper that adds validated props, typed refs, and automatic cleanup, plus reusable accessibility attachments for ARIA patterns. With nanostores, it covers dropdowns, modals, and toggles.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://evilmartians.com/chronicles/from-react-to-native-web-with-nanotags-a-migration-that-saved-100kb&quot;&gt;evilmartians.com/chronicles/from-react-to-native-web-with-nanotags-a-migration-that-saved-100kb&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>Using safe-area-inset to build mobile-safe layouts</title>
			<link href="https://web-standards.dev/news/2026/05/safe-area-inset-mobile-layouts/"/>
			<updated>2026-05-07T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/safe-area-inset-mobile-layouts/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/safe-area-inset-mobile-layouts/cover.avif" width="1920" height="1080" alt="Polypane logo, “Using safe-area-inset to build mobile-safe layouts”, code block setting body padding with env(safe-area-inset-*), and a phone mockup with a “Safe action area” button."&gt;
&lt;p&gt;Modern phones have notches, cutouts, and floating buttons that overlap your UI unless you account for them. The Polypane blog walks through &lt;code&gt;env(safe-area-inset-*)&lt;/code&gt;, why you need &lt;code&gt;viewport-fit=cover&lt;/code&gt; in the meta viewport, combining insets with &lt;code&gt;calc()&lt;/code&gt; for extra spacing, and the new &lt;code&gt;safe-area-max-inset-*&lt;/code&gt; values that stay stable even when the address bar hides on scroll.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://polypane.app/blog/using-safe-area-inset-to-build-mobile-safe-layouts/&quot;&gt;polypane.app/blog/using-safe-area-inset-to-build-mobile-safe-layouts&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 148</title>
			<link href="https://web-standards.dev/news/2026/05/chrome-148/"/>
			<updated>2026-05-06T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/chrome-148/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/chrome-148/cover.avif" width="1920" height="1080" alt="Graphic with the text “New in Chrome” and the number 148, alongside the Chrome logo on a green grid background."&gt;
&lt;p&gt;CSS name-only container queries can match by &lt;code&gt;container-name&lt;/code&gt; without a &lt;code&gt;container-type&lt;/code&gt;. The &lt;code&gt;at-rule()&lt;/code&gt; function in &lt;code&gt;@supports&lt;/code&gt; tests CSS at-rule support. Video and audio elements gain &lt;code&gt;loading=&amp;quot;lazy&amp;quot;&lt;/code&gt; for deferred loading. The Prompt API exposes on-device AI language models. Other additions include Web Serial API on Android, Web Authentication Immediate UI mode, &lt;code&gt;text-decoration-skip-ink: all&lt;/code&gt;, and &lt;code&gt;revert-rule&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/release-notes/148&quot;&gt;developer.chrome.com/release-notes/148&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>Media queries range syntax</title>
			<link href="https://web-standards.dev/news/2026/05/media-queries-range-syntax/"/>
			<updated>2026-05-05T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/media-queries-range-syntax/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/media-queries-range-syntax/cover.avif" width="1920" height="1080" alt="“Media Queries”, “Range Syntax”, photo of Ahmad Shadeed labeled “Design Engineer”, and two code blocks comparing max-width: 299px and min-width: 300px to width &amp;lt;= 300px and width &amp;gt; 300px."&gt;
&lt;p&gt;Ahmad Shadeed shows how the classic &lt;code&gt;min-width&lt;/code&gt; and &lt;code&gt;max-width&lt;/code&gt; syntax creates overlap bugs at identical breakpoints, like two elements hiding at the same 300px. The fix: CSS range syntax with comparison operators like &lt;code&gt;&amp;lt;=&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, and &lt;code&gt;&amp;gt;&lt;/code&gt;, supported in all browsers since March 2023. Clearer code, no manual offsets, and the same logic works for container queries.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ishadeed.com/article/range-syntax/&quot;&gt;ishadeed.com/article/range-syntax&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>Design token naming conventions: a practical guide</title>
			<link href="https://web-standards.dev/news/2026/05/design-token-naming-conventions/"/>
			<updated>2026-05-04T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/design-token-naming-conventions/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/design-token-naming-conventions/cover.avif" width="1920" height="1080" alt="“Design Token Naming Conventions: A Practical Guide”, Stuart Robson, three token lists connected by arrows, the last one with spacing.100, spacing.200, spacing.300, spacing.420."&gt;
&lt;p&gt;Stuart Robson breaks down how to build token names that scale across teams and products. He covers three token tiers (primitives, semantic, and component) and walks through five naming conventions, from category-property-modifier to multi-layered structures. Key takeaways: consistency beats perfection, prioritize clarity over brevity, use semantic intent over visual descriptions, and design for growth.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.alwaystwisted.com/articles/design-token-naming-conventions&quot;&gt;alwaystwisted.com/articles/design-token-naming-conventions&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>SVG from scratch</title>
			<link href="https://web-standards.dev/news/2026/05/svg-from-scratch/"/>
			<updated>2026-05-01T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/05/svg-from-scratch/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/05/svg-from-scratch/cover.avif" width="1920" height="1080" alt="“SVG from Scratch” title surrounded by shapes: red rounded rectangle, arrow, dashed rectangle, circle marked 0,0 / 50,50 / 100,100, triangle, striped circle, gradient pill, and wavy line."&gt;
&lt;p&gt;Carmen Ansio presents SVG not as a file format but as a DOM: every shape is an element, every attribute is a style, that could be selected with CSS, animated with transitions, and targeted with JavaScript. She covers &lt;code&gt;viewBox&lt;/code&gt;, the five core shapes (&lt;code&gt;circle&lt;/code&gt;, &lt;code&gt;rect&lt;/code&gt;, &lt;code&gt;line&lt;/code&gt;, &lt;code&gt;polygon&lt;/code&gt;, &lt;code&gt;path&lt;/code&gt;), &lt;code&gt;stroke-dasharray&lt;/code&gt; draw-on animations, &lt;code&gt;&amp;lt;defs&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;clipPath&amp;gt;&lt;/code&gt;, and JS helpers like &lt;code&gt;getTotalLength()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.carmenansio.com/articles/svg-from-scratch&quot;&gt;carmenansio.com/articles/svg-from-scratch&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 web is fun again: first experiments with HTML in &lt;canvas&gt;</title>
			<link href="https://web-standards.dev/news/2026/04/html-in-canvas-experiments/"/>
			<updated>2026-04-30T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/html-in-canvas-experiments/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/html-in-canvas-experiments/cover.avif" width="1920" height="1080" alt="Distorted, color-shifted: “The Web Is Fun Again: First Experiments with HTML in Canvas” title, form with name and Submit button, “Move your mouse across the page to see the effect in action.” text."&gt;
&lt;p&gt;Amit Sheen explores the experimental Canvas Draw Element API behind the flag in Chrome 146, which renders native HTML into a &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; while keeping semantics, forms, and interactions intact. Using the &lt;code&gt;layoutsubtree&lt;/code&gt; attribute and &lt;code&gt;drawElementImage()&lt;/code&gt;, he walks through transform sync, pixel manipulation for color and distortion effects, mouse-driven ripples, and WebGL shaders.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://frontendmasters.com/blog/the-web-is-fun-again-first-experiments-with-html-in-canvas/&quot;&gt;frontendmasters.com/blog/the-web-is-fun-again-first-experiments-with-html-in-canvas&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>Scroll-driven animations</title>
			<link href="https://web-standards.dev/news/2026/04/scroll-driven-animations/"/>
			<updated>2026-04-29T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/scroll-driven-animations/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/scroll-driven-animations/cover.avif" width="1920" height="1080" alt="Scroll-Driven Animations title with subtitle “Native CSS scroll animations with animation-timeline”, and a cartoon character of Josh Comeau on the right."&gt;
&lt;p&gt;Josh Comeau dives into CSS &lt;code&gt;animation-timeline&lt;/code&gt;, mapping keyframes over scroll distance instead of duration. He covers timing functions, animation ranges (&lt;code&gt;cover&lt;/code&gt;, &lt;code&gt;contain&lt;/code&gt;, &lt;code&gt;entry&lt;/code&gt;, &lt;code&gt;exit&lt;/code&gt;), range percentages, scroll progress timelines, and linked timelines that track one element while animating another, with &lt;code&gt;view-timeline&lt;/code&gt; and &lt;code&gt;timeline-scope&lt;/code&gt;. Around 85% browser support, with Firefox behind a flag.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.joshwcomeau.com/animation/scroll-driven-animations/&quot;&gt;joshwcomeau.com/animation/scroll-driven-animations&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>Automate the browser from the terminal with Chrome DevTools MCP CLI</title>
			<link href="https://web-standards.dev/news/2026/04/chrome-devtools-mcp-cli/"/>
			<updated>2026-04-28T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/chrome-devtools-mcp-cli/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/chrome-devtools-mcp-cli/cover.avif" width="1920" height="1080" alt="Title “Automate the browser from the terminal with Chrome DevTools MCP CLI”, author Joan León’s photo, and chrome-devtools CLI snippets for opening tabs, evaluating scripts, and screenshots."&gt;
&lt;p&gt;Joan León walks through &lt;code&gt;chrome-devtools-mcp&lt;/code&gt;, a CLI that controls Chrome through shell commands instead of Puppeteer or Playwright. A persistent daemon keeps state across commands for navigation, network throttling, mobile viewport, dark mode, and form interaction. You can grab accessibility trees, evaluate JavaScript, capture screenshots, run Lighthouse audits, and trace Core Web Vitals.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://joanleon.dev/en/chrome-devtools-mcp-cli/&quot;&gt;joanleon.dev/en/chrome-devtools-mcp-cli&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 end of responsive images</title>
			<link href="https://web-standards.dev/news/2026/04/the-end-of-responsive-images/"/>
			<updated>2026-04-27T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/the-end-of-responsive-images/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/the-end-of-responsive-images/cover.avif" width="1920" height="1080" alt="“The end of responsive images” title, an author portrait, and two img code snippets — one with sizes=auto highlighted by an arrow, another with a long sizes value."&gt;
&lt;p&gt;Mat Marquis, former chair of the Responsive Image Community Group, looks back on a decade of wrestling with the &lt;code&gt;sizes&lt;/code&gt; attribute and explains how &lt;code&gt;sizes=&amp;quot;auto&amp;quot;&lt;/code&gt; with &lt;code&gt;loading=&amp;quot;lazy&amp;quot;&lt;/code&gt; finally hands that work back to the browser for most images. Now supported across Firefox, Safari, and Chrome, descriptive &lt;code&gt;sizes&lt;/code&gt; values can be reserved only for above-the-fold images.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://piccalil.li/blog/the-end-of-responsive-images/&quot;&gt;piccalil.li/blog/the-end-of-responsive-images&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>Your options for preloading images with JavaScript</title>
			<link href="https://web-standards.dev/news/2026/04/preloading-images-with-javascript/"/>
			<updated>2026-04-24T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/preloading-images-with-javascript/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/preloading-images-with-javascript/cover.avif" width="1920" height="1080" alt="“Your options for preloading images with JavaScript” title, code snippets for Option #1: new Image() and Option #5: fetch()."&gt;
&lt;p&gt;Alex MacArthur compares five approaches to preloading images: &lt;code&gt;new Image()&lt;/code&gt;, &lt;code&gt;&amp;lt;link rel=&amp;quot;preload&amp;quot;&amp;gt;&lt;/code&gt;, a hidden &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with a CSS background, the Cache API, and &lt;code&gt;fetch()&lt;/code&gt;. Each method has different trade-offs around browser caching, CORS handling, and flexibility. The article breaks down when to use each technique to prevent lag when displaying images that haven’t been loaded yet.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://macarthur.me/posts/preloading-images/&quot;&gt;macarthur.me/posts/preloading-images&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>Playwright accessibility testing: what axe and Lighthouse miss</title>
			<link href="https://web-standards.dev/news/2026/04/playwright-axe-lighthouse-limits/"/>
			<updated>2026-04-23T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/playwright-axe-lighthouse-limits/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/playwright-axe-lighthouse-limits/cover.avif" width="1920" height="1080" alt="“Accessibility Issues Automated Tests Miss” title, an owl with glasses at a computer with a green checkmark on the monitor and red warning icons in the background."&gt;
&lt;p&gt;David Mello explains that automated tools like axe and Lighthouse catch only 30-40% of WCAG violations, leaving most issues undetected. The article covers ten categories of accessibility defects that scanners miss, from ambiguous link text to keyboard navigation problems, and provides practical Playwright testing patterns and manual audit strategies to fill those gaps.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.davidmello.com/software-testing/test-automation/playwright-accessibility-testing-axe-lighthouse-limitations&quot;&gt;davidmello.com/software-testing/test-automation/playwright-accessibility-testing-axe-lighthouse-limitations&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>Highlights from Git 2.54</title>
			<link href="https://web-standards.dev/news/2026/04/highlights-from-git-2-54/"/>
			<updated>2026-04-22T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/highlights-from-git-2-54/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/highlights-from-git-2-54/cover.avif" width="1920" height="1080" alt="Git logo, “git 2.54 is here!” text, git history reword &amp;lt;commit&amp;gt; and git history split &amp;lt;commit&amp;gt; commands."&gt;
&lt;p&gt;Taylor Blau walks through new features including &lt;code&gt;git history reword&lt;/code&gt;, which opens your editor with a commit’s message and rewrites it in place without touching the working tree or index, and &lt;code&gt;git history split&lt;/code&gt;, which lets you interactively split a commit into two by selecting hunks to carve out into a new parent commit. Unlike &lt;code&gt;git rebase&lt;/code&gt;, these commands work in bare repositories and refuse operations that would cause merge conflicts.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.blog/open-source/git/highlights-from-git-2-54/&quot;&gt;github.blog/open-source/git/highlights-from-git-2-54&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 150 release notes for developers</title>
			<link href="https://web-standards.dev/news/2026/04/firefox-150/"/>
			<updated>2026-04-21T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/firefox-150/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/firefox-150/cover.avif" width="1920" height="1080" alt="Screenshot of browser developer tools with a large Firefox logo overlaid and the text “Firefox 150”."&gt;
&lt;p&gt;The release adds &lt;code&gt;sizes=&amp;quot;auto&amp;quot;&lt;/code&gt; for lazy-loaded images, &lt;code&gt;color-mix()&lt;/code&gt; with multiple colors, &lt;code&gt;light-dark()&lt;/code&gt; with image values, media pseudo-classes like &lt;code&gt;:buffering&lt;/code&gt;, &lt;code&gt;:paused&lt;/code&gt;, and &lt;code&gt;:playing&lt;/code&gt; for &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; elements, animation range properties for scroll-driven animations, the &lt;code&gt;revert-rule&lt;/code&gt; keyword, &lt;code&gt;ariaNotify()&lt;/code&gt; for screen reader announcements, and an &lt;code&gt;overscroll-behavior&lt;/code&gt; fix for elements with &lt;code&gt;overflow: hidden&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/150&quot;&gt;developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/150&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>Fully local code embeds</title>
			<link href="https://web-standards.dev/news/2026/04/fully-local-code-embeds/"/>
			<updated>2026-04-20T12:00:00+02:00</updated>
			<id>https://web-standards.dev/news/2026/04/fully-local-code-embeds/</id>
			<content type="html">
&lt;img src="https://web-standards.dev/news/2026/04/fully-local-code-embeds/cover.avif" width="1920" height="1080" alt="“Fully Local Code Embeds” title, author photo, code-demo HTML snippet with a “Click me!” button, console output: button, body, html, window, and “Own your content” tagline."&gt;
&lt;p&gt;Aleksandr Hovhannisyan built a web component that renders isolated code sandboxes using &lt;code&gt;&amp;lt;iframe srcdoc&amp;gt;&lt;/code&gt;, without relying on third-party services like CodePen or CodeSandbox. The component takes HTML, CSS, and JavaScript from a template element and produces a fully local, isolated preview. It works anywhere HTML and JavaScript are supported and has zero dependencies.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.aleksandrhovhannisyan.com/blog/local-code-embeds/&quot;&gt;aleksandrhovhannisyan.com/blog/local-code-embeds&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>
