The official Chrome Devs X account from Google. We want to help you build beautiful, accessible, fast, & secure websites that work for everyone, everywhere.
Entry and exit animations in a card-based UI can break if card or screen dimensions change. Newer CSS animation properties can help, but not all browsers support them.
We gave a coding agent the same prompt twice: once unaided, once with Modern Web Guidance installed 🧵
With the guidance, the agent:
✅ Decoupled entry and exit animations
✅ Avoided fragile percentage calculations
✅ Implemented fallbacks for browsers that don't support needed animation properties
Speed up your web debugging workflow with the latest DevTools features → goo.gle/4hApcKj
🧠 Debug memory issues with new tools in DevTools for agents
🧭 Track soft navigations in the Performance panel
🔄 Replay network requests instantly with new context menu options
Loved scroll-driven animations? Meet their scroll-triggered sibling.
Instead of tying animation progress directly to the scrollbar, you can trigger full time-based CSS animations when crossing a scroll offset.
See how to build them with pure CSS → goo.gle/4dhcvmh
Build JS-free interactive carousels with new CSS APIs → goo.gle/47reBwt
Learn how to use scroll buttons, scroll markers, :target-current, and scroll-target-group to create built-in, responsive scrollers without writing a single line of JavaScript.
Teach your coding agent to write scroll-driven animations with Modern Web Guidance → goo.gle/mwg
See how Modern Web Guidance helps your coding agent build resilient scroll animations that won't break on different screen sizes.
Meet the winners of The WebMCP Challenge.
These 10 projects show what people and agents can build together when websites expose structured tools agents can use.
🧵 See the winning projects and the builders behind them:
How to detect the new Googlebooks ⬇️
In Chrome, Googlebooks return the ChromeOS User-Agent string, so you can't differentiate them from Chromebooks. You need to leverage low-entropy Client Hints.
1. Client-side: Check `platform === 'Android'` and `mobile === false` on `navigator.userAgentData`
2. Server-side: Inspect the `Sec-CH-UA-Platform` and `Sec-CH-UA-Mobile` HTTP headers
Read the complete documentation and multi-language server implementation snippets → goo.gle/3V7ON5U
Meet the winners of The WebMCP Challenge.
These 10 projects show what people and agents can build together when websites expose structured tools agents can use.
🧵 See the winning projects and the builders behind them:
Ever watched your coding agent confidently write massive amounts of JavaScript for a simple swipe gesture, only for the animation to stutter? 😅
Watch our side-by-side test: with Modern Web Guidance enabled, the coding agent pulls expert-vetted swipe-to-remove guide into its context window, handling features like scroll snap and intersection observer with ease → goo.gle/mwg
See what new web platform features arrived in August → goo.gle/4iIdCis
Highlights reaching Baseline:
📦 Precision text-box alignment controls
🔎 Dynamic sibling-count() and sibling-index() functions
🌐 Global autocorrect HTML attribute support
Build interactive components like sticky headers and overflow indicators with state-based container queries → goo.gle/4d53htk
In this episode of The CSS Podcast, learn how to use scroll state queries for stuck, snapped, and scrollable UI elements to create dynamic web experiences without relying on extra JavaScript.
Single-axis scroll containers fix long-standing CSS overflow quirks → goo.gle/4yeg4SM
Key capabilities ready for testing in Chrome 153 (Beta, Dev, or Canary):
📌 Pair `auto` with `clip` to enable a single-axis scroll container
🔍 Detect support reliably using `@ supports named-feature()`
🚫 Prevent accidental two-dimensional scrollers in your layouts
It's great to see the work on responsively sized iframes landing in Chrome - developer.chrome.com/blog/re…
In my post about the browser being a great sandbox, I said: "We need a way to size the outer-iframe (or iframes in general) that doesn’t rely on access to iframe.contentDocument.body.innerHeight and sandbox='allow-same-origin'"
aifoc.us/the-browser-is-the-…
This is the start of that.
Happy to see this starting to land, because as we generate more experiences dynamically, we need the sandbox to improve *and* we need to be able improve how iframes work so we don't accidentally introduce user-land sandbox escapes to improve the UX of sites.