Skip to content

Releases

v1.0.0

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 10 Nov 03:24

Release Notes: v1.0.0

Modern Web Guidance is out of preview! Version 1.0 ships 203 use-case guides covering 250 web platform features, and the project is now stewarded by the Google Chrome, Microsoft Edge, Mozilla Firefox, and MDN teams alongside the web development community. Per-agent and per-guide eval results are public on the new eval dashboard.

🛠️ CLI & Skill Updates

  • Codebase modernization scanner (legacy-scan): npx modern-web-guidance@latest legacy-scan [path] statically detects legacy web platform patterns and maps each finding to the guide with the modern replacement. It covers the roughly 20% of guides that have deterministic legacy rules today. The modern-web-guidance skill adds a matching 4-step workflow for agents: scan, verify, report, modernize.
  • Smaller, faster search: Search now runs on a zero-dependency embedding model plus BM25 instead of TensorFlow.js. It is still fully offline, and the npm download drops from 23.5 MB to 8.8 MB.
  • Volatile feature opt-in (set-allow-volatile-features): Guides for single-engine features that shipped in the last 3 months or are still stabilizing stay searchable, but retrieve requires an explicit .mwgrc opt-in, matching Origin Trial gating.
  • Search query refinement in SKILL.md: Agents now translate implied intent into concrete UI primitives (for example, "confirmation modal dialog" instead of "confirm destructive action") and rephrase a weak search once before falling back to list.

🆕 New Guides

🔄 Updated Guides

98 guides changed. The main themes:

  • Accessibility review by human experts (nearly 70 guides)
    • At least 3:1 contrast for non-text UI such as focus rings, icons, custom form controls, and scrollbar thumbs.
    • Form errors are linked through aria-describedby only while a field is invalid, and announced in a polite live region.
    • Swipe, pull, and drag gestures get button or keyboard alternatives.
    • More guides cover reduced motion, forced colors, focus management, and zooming to 200%.
  • Passkeys (7 guides): Pass the server-provided rpId to Signal API methods instead of deriving it from window.location.hostname.
  • Discrete transitions (3 guides): Keep allow-discrete out of the transition shorthand and declare transition-behavior: allow-discrete separately, so older browsers don't drop the whole declaration.
  • navigation-drawer: Use <dialog> with showModal() for pure drawers, or popover="manual" for drawers that double as sidebars.
  • migrate-web-app-origin: Fixed the manifest migrate_to member, which is a single object with id and install_url, not an array.
Per-guide changes (98 guides)
  • Updated the accessible-error-announcement guide to recommend initializing fields with aria-invalid="false", dynamically associating error messages via data-error to aria-describedby only when invalid, announcing blur errors through a polite live region, and focusing the first invalid field upon failed submission.
  • Updated the language-model guide (also published as prompt-api) to specify user gesture requirements when initiating model downloads, mandate accessible <progress> bars and polite status live regions for download progress, synchronize aria-busy and lang on streaming outputs, and enforce session clone lifecycle cleanup.
  • Updated the summarizer guide to require applying a lang attribute matching the BCP 47 code on the summary container whenever the output language differs from the document language.
  • Updated the animate-to-intrinsic-sizes guide to style :focus-visible alongside :hover on expandable elements and await CSS transitions via getAnimations() before hiding dismissed alerts to handle reduced-motion settings gracefully.
  • Updated the atrule-support-conditionals guide to include @supports (container-type: size) in container query feature detection examples alongside scroll-state and anchored container types.
  • Updated the calculate-with-intrinsic-sizes guide to mandate pairing visibility: hidden and transitioning visibility alongside block-size collapses so closed content is removed from the accessibility tree and tab order.
  • Updated the css-layout guide to cross-reference single-line overflow techniques for truncating and revealing content on demand without layout friction.
  • Updated the fluid-scaling guide to prohibit shrinking containers during browser zoom to ensure text scales up to 200% without loss of content.
  • Updated the responsive-design guide to require keeping clamp() maximum font sizes within 2.5 times the minimum and utilizing font-relative boundaries to preserve 200% zoom scaling compliance.
  • Updated the style-parent-with-has guide to clarify that parent error styling serves only as emphasis requiring field-specific error text, and updated ARIA synchronization to dynamically link error IDs and announce blur errors via a polite live region.
  • Updated the animated-select-picker guide to require declaring transition-behavior: allow-discrete as a standalone property after the transition shorthand, setting explicit text colors with backgrounds, and keeping ::picker(select) scrollable by avoiding overflow: hidden.
  • Updated the **[autofill-address-form](https://github.com/GoogleChrome/modern-web-guidance/blob/v1.0.0/skills...
Read more

v0.0.197

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 02 Nov 14:56

Release Notes: v0.0.197

🆕 New Guides

  • Introduced a new guide for content-first-noise-reduction detailing techniques to eliminate visual clutter, reduce intrusive interface distractions, and prioritize core content for a more focused user experience.

🔄 Updated Guides

  • Updated the modern-web-guidance skill to streamline triggering conditions, improve instructions for handling large retrieved guide files, and clarify custom browser policy guidelines.
  • Updated the accessible-generated-content guide to provide a single-value content fallback before declarations using / alternative text syntax so older parsers do not discard the rule, and recommended moving required text to DOM elements.
  • Updated the language-model guide to format guidance on supplying initialPrompts during session creation as a standardized callout.
  • Updated the prompt-api guide to format guidance on supplying initialPrompts during session creation as a standardized callout.
  • Updated the ime-safe-enter-submit guide to explain how browsers emit keyCode: 229 during composition to help avoid premature form submissions when migrating key handlers to event.key === 'Enter'.
  • Updated the slider guide to recommend anchoring tooltips to slider thumbs using CSS anchor positioning and reference position-aware-tooltips.
  • Updated the efficient-background-processing guide to format event handling requirements for non-bubbling contentvisibilityautostatechange events as a standardized callout.
  • Updated the faster-spa-view-transitions guide to require toggling the inert attribute alongside content-visibility: hidden to ensure inactive views are removed from the keyboard tab order.
  • Updated the performance guide to ensure deferred third-party script examples specify secure HTTPS URLs.
  • Updated the passkey-management guide to fix code block formatting for dynamically importing WebAuthn polyfills.
  • Updated the security guide to set frame-ancestors 'none' and X-Frame-Options: DENY as default clickjacking defenses and clarify when to omit X-Frame-Options for cross-origin CSP allowlists.
  • Updated the trusted-types guide to format limitations regarding character-level HTML escaping as a standardized callout.
  • Updated the scroll-position-aware-elements guide to format layout padding recommendations for sticky and floating controls as a standardized callout.
  • Updated the same-document-transitions guide to correct phrasing regarding unique view-transition names across list items.
  • Updated the scoped-component-transitions guide to format notes on nested view transition group overflow clipping as a standardized callout.
  • Updated the swipe-to-remove guide to format row direction terminology notes as a standardized callout.
  • Updated the scrollspy guide to use the unescaped target-current class name across fallback JavaScript and CSS :is() selectors.
  • Updated the custom-text-decorations guide to prune external cross-references and focus directly on native CSS text decoration and outline techniques.
  • Updated the equal-width-text-lines guide to clarify applying text-fit directly to single-line elements versus container multi-line lockups.
  • Updated the visually-texture-content guide to format mask mode customization guidance as a standardized callout.
  • Updated the cpp-on-the-web guide to expand Emscripten best practices, including modern modular flags, clean CLI flag formatting, buffer-based memory passing across the JS-Wasm boundary, and main-thread offloading strategies.

🌐 Browser Support Updates

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-6.1-sol) 205 / 1729 55% → 82% +27pp
claude_code (claude-opus-5-5) 205 / 1729 58% → 90% +32pp
antigravity_cli (gemini-4-argon) 205 / 1705 61% → 96% +35pp

Full Changelog: v0.0.196...v0.0.197

v0.0.196

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 26 Oct 15:30

Release Notes: v0.0.196

🆕 New Guides

  • Added a new guide for sort-high-precision-timestamps explaining how to accurately sort microsecond- and nanosecond-level timestamps in JavaScript without precision loss or floating-point comparison errors.
  • Added a new guide for secure-external-subresources covering techniques such as Subresource Integrity (SRI), Content Security Policy (CSP), and CORS to safeguard third-party scripts and assets against tampering.
  • Added a new guide for card providing implementation patterns for responsive, accessible card components with robust layout structures and accessible whole-card click behaviors.
  • Added a new guide for dialog detailing how to build accessible modal and non-modal dialogs using the native <dialog> element with proper focus management, keyboard interaction, and backdrop styling.
  • Added a new guide for menu demonstrating how to create accessible application and navigation menus with proper ARIA roles, arrow-key keyboard navigation, and focus handling.
  • Added a new guide for custom-text-decorations explaining how to style accessible, modern text underlines and decorations using CSS properties like text-underline-offset and text-decoration-thickness.

🔄 Updated Guides

  • Updated the accessibility guide with formal WCAG criteria mappings and expanded best practices for semantic landmarks, heading hierarchies, explicit <label for> associations, aria-disabled event suppression, and minimum target sizing.
  • Updated the autofill-address-form guide with patterns for multi-line street addresses, specifying address-line1 and address-line2 autocomplete tokens and marking only the first line as required.
  • Updated the autofill-payment-form guide to advise placing format hints above inputs linked via aria-describedby and using unmasked type="text" with inputmode="numeric" for card security codes.
  • Updated the autofill-sign-in-form guide to clarify that password managers differentiate existing credentials via autocomplete="current-password" rather than requiring a specific element ID.
  • Updated the autofill-sign-up-form guide to clarify that new credential creation relies on autocomplete="new-password" rather than specific element ID naming conventions.
  • Updated the calculate-event-differentials guide to demonstrate DST-safe duration calculations with Temporal.ZonedDateTime, calendar-aware comparisons using Temporal.Duration.compare() with a relativeTo anchor, and localized formatting via Intl.DurationFormat.
  • Updated the capture-location-agnostic-data guide to cover selecting the narrowest Temporal "Plain" type, configuring calendar parameters, and managing month-end arithmetic using overflow: 'constrain' versus 'reject'.
  • Updated the coordinate-global-events guide to recommend temporal-polyfill and clarify explicit global scope assignment when polyfilling Temporal.
  • Updated the support-global-calendar-systems guide to demonstrate localized date formatting with the era: 'long' option for era-based calendars like Japanese, alongside updated polyfill guidance.
  • Updated the conditional-async-dependencies guide to detail module evaluation order with top-level await, warning against concurrent sibling static imports and recommending chained dynamic import() calls when bootstrapping application modules.
  • Updated the identify-inp-causes guide to use Long Animation Frames API metrics to distinguish between style recalculation (styleDuration, forcedStyleDuration) and layout work (layoutDuration, forcedLayoutDuration) when diagnosing interaction delays.
  • Updated the security guide to warn against regex-based HTML post-processing for CSP nonce injection and to recommend SHA-384 or SHA-512 hashes for Subresource Integrity on external scripts and stylesheets.
  • Updated the trusted-types guide to introduce an entity-escaping policy with strict security caveats regarding attribute injection, alongside examples of declaring multiple named policies in Content-Security-Policy.
  • Updated the position-aware-tooltips guide to clarify that popovers triggered by popovertarget establish implicit anchor connections natively without requiring explicit anchor-name or position-anchor declarations.
  • Updated the viewport-aware-dropdowns guide to highlight that popovertarget triggers provide implicit anchor associations for positioning dropdown panels without needing manual anchor-name or position-anchor attributes.
  • Updated the custom-button-actions guide to specify required ARIA states for custom invoker buttons, including aria-expanded, aria-pressed, aria-haspopup, and preserving focus with aria-disabled="true".
  • Updated the interest-triggered-tooltips guide to streamline native anchor positioning using position-area and position-try-fallbacks on implicit interestfor anchors, reserving explicit anchor names for polyfill fallbacks.
  • Updated the agentic-forms guide to instruct Angular developers to configure Signal Forms using provideExperimentalWebMcpForms() and the experimentalWebMcpTool option instead of adding declarative attributes to avoid duplicate tool registrations.
  • Updated the agentic-javascript-tools guide to mandate using official framework adapters (use-webmcp-tool in React, @angular/core in Angular, and @vueuse/core in Vue) rather than invoking document.modelContext.registerTool() directly within UI components.
  • Updated the webmcp guide to mandate registering tools via official framework integrations (use-webmcp-tool, @angular/core, and @vueuse/core) instead of calling registerTool() directly inside components.

🗑️ Removed Guides

  • Removed the format-human-readable-durations guide.
  • Removed the manage-recurring-intervals guide.
  • Removed the model-partial-time-concepts guide.
  • Removed the sequence-distributed-events guide.
  • Removed the stabilize-reactive-state guide.

🌐 Browser Support Updates

Read more

v0.0.195

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 19 Oct 20:17

Release Notes: v0.0.195

🆕 New Guides

  • Added a new guide for sequence-distributed-events detailing how to reliably coordinate, order, and synchronize asynchronous events across distributed application components to eliminate race conditions.
  • Added a new guide for quick-sign-ins demonstrating how to implement low-friction, secure authentication experiences using modern credential management and auto-sign-in patterns.
  • Introduced a new guide for icons outlining performant, scalable, and accessible best practices for embedding and rendering SVG icons across modern web interfaces.
  • Added a new guide for 2d-panning explaining how to implement smooth, responsive pointer- and touch-driven two-dimensional navigation for large viewports, maps, and canvas interfaces.
  • Introduced a new guide for scoped-component-transitions showing how to craft isolated, localized view transitions and component state animations without causing page-wide layout recalculations.
  • Added a new guide for progress providing guidance on creating semantic, accessible, and customizable determinate and indeterminate loading indicators.

🔄 Updated Guides

  • Updated the modern-web-guidance skill with guidance on crafting 2–5 word action-oriented queries, evaluating results by descriptions rather than similarity scores, and cleanly adapting platform features into framework code.
  • Updated the css-layout guide to update masonry grid terminology and cross-reference the renamed dropdown guidance for anchored layouts.
  • Updated the ime-safe-enter-submit guide to clarify that isComposing checks and default action suppression apply to custom Enter-key handlers on single-line inputs as well as multiline textareas.
  • Updated the calculate-event-differentials guide to recommend chaining Temporal methods when combining dates and times, balancing calendar units with largestUnit, formatting durations via .toLocaleString(), and checking status via duration .sign.
  • Updated the capture-location-agnostic-data guide to recommend reading date fields directly from PlainDate properties instead of formatting to parts, explicitly converting via Temporal.Instant, and comparing plain dates with .equals().
  • Updated the coordinate-global-events guide to recommend native .toLocaleString() formatting for user-facing localized times rather than manual hour and minute string arithmetic.
  • Updated the batch-analytics-events guide to explicitly recommend deferring and batching Core Web Vitals telemetry alongside low-priority analytics using fetchLater().
  • Updated the full-session-analytics guide to explicitly include Core Web Vitals telemetry tracking throughout full browsing sessions using fetchLater().
  • Updated the passkeys guide to add cross-reference guidance for contextual in-place sign-ins using the quick-sign-ins pattern.
  • Updated the validate-origins guide to refine example origins to app.example.com and clarify URL normalization and MessageEvent origin validation nuances in Origin.from().
  • Updated the position-aware-tooltips guide to cross-reference viewport-aware-dropdowns for general anchor collision flipping when directional indicator restyling is unnecessary.
  • Updated the responsive-table guide to specify keyboard scrollability (tabindex="0"), region semantics (role="region"), and accessible naming on table containers while refining pseudo-element label announcements.
  • Renamed and updated the viewport-aware-dropdowns guide to clarify collision flipping for dropdown menus and cross-reference related tooltip and popover guidance.
  • Updated the motion guide to advise against globally applying near-zero animation durations and demonstrated scoping reduced motion adaptations per-component using nested media queries.
  • Updated the checkbox guide to detail cross-browser color contrast variations when applying accent-color to checkboxes and radio buttons.
  • Updated the spinner guide to hoist @keyframes definitions out of nested selector blocks into top-level declarations.
  • Updated the apply-webgl-shaders guide to adopt content="drawable", texture pre-allocation via texImage2D, texElementSubImage2D uploads, and geometry synchronization via canvas.updateElementGeometry().
  • Updated the browser-ui-theming guide to recommend excluding range inputs (:not(input[type="range"])) from global :user-valid styling to prevent unwanted slider borders and backgrounds.
  • Updated the dark-mode guide to highlight rendering differences for accent-color across browsers and emphasize verifying indicator contrast in Safari.
  • Updated the export-html-media-from-canvas guide to use content="drawable" attributes, manage pre-allocated textures in WebGL and WebGPU, and coordinate hit-testing geometry via canvas.updateElementGeometry().
  • Updated the expose-canvas-content-to-browser-features guide to transition HTML-in-Canvas implementations to content="drawable", modern texture upload methods, and geometry synchronization with canvas.updateElementGeometry().
  • Updated the interactive-content-in-3d-scenes guide to reflect the latest HTML-in-Canvas attributes, texture handling patterns, updateElementGeometry() hit testing, and Three.js InteractionManager integration.
  • Updated the agentic-forms guide to advise keeping tooldescription and toolparamdescription focused on intent and semantic meaning instead of repeating input names, options, or constraints already captured in the schema.
  • Updated the agentic-javascript-tools guide to emphasize concise descriptions without duplicating schema metadata, recommend manual argument validation and defaults in execute, and guide configuring `webmcp-typ...
Read more

v0.0.194

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 12 Oct 20:17

Release Notes: v0.0.194

🆕 New Guides

  • Introduced a new guide for slider covering best practices for building accessible, custom-styled range inputs for numeric value selection.
  • Introduced a new guide for switch detailing how to create accessible toggle switch components using semantic form controls and modern styling techniques.
  • Introduced a new guide for client-side-encryption explaining how to encrypt and decrypt sensitive data directly in the browser using the Web Crypto API prior to transmission or storage.
  • Introduced a new guide for digital-signatures demonstrating how to generate and verify cryptographic signatures client-side to ensure payload integrity and authenticity.
  • Introduced a new guide for prevent-page-scroll-under-modal-dialog outlining robust methods to lock background scrolling without layout shift while modal overlays are active.
  • Introduced a new guide for scroll-completion-effects showing how to detect scroll boundaries and trigger contextual animations or UI state updates upon reaching the end of scrollable areas.
  • Introduced a new guide for swipe-to-reveal guiding developers on implementing touch-friendly horizontal swipe gestures to uncover contextual actions in list-based interfaces.
  • Introduced a new guide for checkbox covering patterns for accessible, custom-styled multi-state checkboxes including support for the indeterminate state.
  • Introduced a new guide for hovercard detailing how to implement accessible, delay-managed preview popovers triggered by hover and focus interactions.

🔄 Updated Guides

  • Updated the modern-web-guidance skill to require responses consulting the skill to conclude with a structured summary explaining applied implementation choices or clarifying why retrieved guidance was not applicable.
  • Updated the css-layout guide to recommend flex-wrap: balance for compact item lists, correct the container shorthand syntax to container-name / container-type, and detail using overscroll-behavior: chain on intermediate scroll wrappers.
  • Updated the autofill-payment-form guide to clarify that the standard autocomplete token for street addresses is address-line1 without a hyphen before the digit.
  • Updated the accessible-web-components guide to specify setting tabindex="0" on interactive custom element hosts in connectedCallback rather than the constructor, and clarified when to use host tab order versus delegatesFocus: true.
  • Updated the custom-elements guide to mandate calling super() first in constructors to avoid ReferenceError, document reflecting numeric attributes, and establish standardized naming conventions for custom elements, properties, and attributes.
  • Updated the form-associated-custom-elements guide to recommend disabling internal controls within formDisabledCallback rather than setting the host element's disabled attribute to prevent getting permanently stuck when parent <fieldset> elements toggle.
  • Updated the prerendering-custom-elements guide to recommend attaching declarative shadow DOM hydration listeners once during setup instead of within connectedCallback, and modernised feature detection using Object.hasOwn().
  • Updated the shadow-dom guide to clarify that delegatesFocus: true forwards <label> clicks to internal controls for form-associated custom elements while preserving host :focus styling.
  • Updated the styling-web-components guide to document managing :state() via ElementInternals.states and emphasize applying display: block to custom elements when using container queries because size containment does not apply to inline boxes.
  • Updated the local-network-access guide to clarify that WebSocket constructors accept only subprotocol strings rather than a targetAddressSpace dictionary, explaining URL-based mixed content exemptions for local IP literals, localhost, and .local hostnames.
  • Updated the sanitize-untrusted-html guide to configure DOMPurify fallback options with ALLOW_ARIA_ATTR: false and ALLOW_DATA_ATTR: false to accurately match native Sanitizer API stripping behavior.
  • Updated the trusted-types guide to demonstrate creating policies delegating to sanitizer libraries, highlight using Document.parseHTMLUnsafe(), and note including dompurify in the trusted-types Content Security Policy directive.
  • Updated the resilient-context-menus-and-nested-dropdowns guide to include flip-block flip-inline in position-try-fallbacks so anchored panels can flip across both axes simultaneously in viewport corners.
  • Updated the interest-triggered-action-previews guide to document polyfill fallback requirements, including feature detection via HTMLButtonElement.prototype.interestForElement, class-based :is() selectors, and CSS variable delay overrides.
  • Updated the interest-triggered-tooltips guide to detail polyfill handling with HTMLButtonElement.prototype.interestForElement detection, class-based styling selectors, and CSS variable fallbacks for interest delay timings.
  • Updated the motion guide to explain accessing triggering Animation objects directly via the event.animation property on animation and transition events to avoid ambiguity and limitations when filtering getAnimations().
  • Updated the swipe-to-remove guide to cross-reference the swipe-to-reveal pattern for interactive action reveal mechanics that do not auto-commit single actions on swipe completion.

🌐 Browser Support Updates

🔌 Plugins

  • Added a marketplace description to the Claude Code plugin catalog.

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-6.1-sol) 153 / 1284 58% → 77% +19pp
claude_code (claude-...
Read more

v0.0.193

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 07 Oct 16:22

Release Notes: v0.0.193

🆕 New Guides

  • restrict-outbound-connections: Restrict a page or worker to communicating only with an explicit allowlist of network endpoints to prevent unauthorized third-party requests and client-side data exfiltration.
  • validate-origins: Compare and validate web origins and sites safely across cross-document messages and URLs without error-prone string parsing.
  • verify-email-ownership: Verify that a user owns an email address during account creation, sign-in, or recovery without sending a one-time passcode or magic link email.
  • drag: Support dragging to move a floating element around the page.

🔄 Updated Guides

🌐 Browser Support Updates

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-5.6-sol) 132 / 1124 59% → 81% +22pp
claude_code (claude-sonnet-5) 132 / 1124 54% → 87% +33pp
antigravity_cli (gemini-3.8-flash-medium) 132 / 1124 65% → 91% +26pp

Full Changelog: v0.0.192...v0.0.193

v0.0.192

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 05 Oct 22:14

Release Notes: v0.0.192

🆕 New Guides

  • Added a new guide for accessible-generated-content covering techniques to ensure CSS-generated content with pseudo-elements remains accessible and properly announced by screen readers.
  • Added a new guide for respect-os-text-scale explaining how to design layouts and size typography using relative units so web interfaces honor user-defined operating system text zoom settings.
  • Added a new guide for atrule-support-conditionals detailing how to use @supports queries to conditionally test for and progressively enhance modern CSS at-rules.
  • Added a new guide for responsive-design outlining modern layout strategies, container queries, and fluid sizing techniques for building resilient cross-device web interfaces.
  • Added a new guide for selector-atrule-combinations demonstrating how to effectively nest and combine advanced CSS selectors within at-rules to streamline complex stylesheets.
  • Added a new guide for sms-otp-form showing how to build secure, frictionless SMS one-time passcode verification forms using the WebOTP API and standardized autocomplete attributes.
  • Added a new guide for interaction-paint-timing providing optimization strategies to minimize input latency and improve Interaction to Next Paint (INP) across user interactions.
  • Added a new guide for lazy-load-video-and-audio covering best practices to defer non-critical media resources and boost initial page load performance.
  • Added a new guide for motion offering guidance on crafting purposeful, accessible web animations while respecting user preferences for reduced motion.
  • Added a new guide for dark-mode-toggle illustrating how to implement accessible, persistent theme switchers that harmonize user preferences with system color schemes.
  • Added a new guide for browser-ui-theming explaining how to customize browser chrome, theme colors, and system status bars to deliver a cohesive, app-like visual experience.
  • Added a new guide for color exploring modern CSS color spaces, relative color syntax, and contrast considerations for dynamic design systems.
  • Added a new guide for equal-width-text-lines demonstrating layout and typographic techniques to balance headline lengths and achieve balanced, equal-width lines of text.
  • Added a new guide for typography detailing best practices for web font loading, variable fonts, font metric overrides, and fluid typographic hierarchies.
  • Added a new guide for visual-effects showcasing modern CSS graphical capabilities like backdrop filters, blend modes, clipping paths, and shadows to enhance UI depth.

🔄 Updated Guides

  • Updated the accessibility guide with guidance on touch target sizing via logical properties (min-block-size/min-inline-size), explicit :focus-visible styling with outline-offset, and references to dedicated guides for color, typography, and motion.
  • Updated the css-layout guide to direct responsive design patterns, dynamic viewport units, and space reservation to the dedicated responsive-design guide.
  • Updated the css guide to streamline core cascading rules (including using revert-layer for layered fallback overrides) while modularizing theming, motion, typography, and responsiveness into standalone guides.
  • Updated the autofill-sign-in-form guide to advise disabling browser text corrections via spellcheck="false", autocorrect="off", and autocapitalize="off" on username and email identifier fields.
  • Updated the autofill-sign-up-form guide to recommend setting spellcheck="false", autocorrect="off", and autocapitalize="off" to prevent browsers from modifying usernames and email addresses during registration.
  • Updated the forms guide to add recommendations for disabling text correction on identifier inputs and using autocomplete="one-time-code" with the WebOTP API for SMS one-time passcode verification.
  • Updated the accessible-web-components guide to clarify outward cross-root label referencing using reflected ARIA element properties like ariaLabelledByElements alongside fallback strategies.
  • Updated the performance guide to recommend calculating contain-intrinsic-size from content dimensions using relative units such as lh, ch, or rem to prevent Cumulative Layout Shift.
  • Updated the passkey-management guide to detail synchronizing user account profile updates (name and displayName) with password managers using PublicKeyCredential.signalCurrentUserDetails(), separating user profile updates from server-only credential nickname edits.
  • Updated the animate-element-entry-exit guide to introduce reliable runtime feature detection for discrete display transitions and a [data-closing] state pattern to coordinate smooth exit animations before hiding or removing DOM elements.
  • Updated the animate-to-from-top-layer guide with a fallback approach utilizing [data-closing] and getAnimations() to ensure dialog and popover exit transitions play completely before closing or light-dismissal.
  • Updated the dark-mode guide to detail image switching using light-dark() alongside an image-set() MIME-type fallback strategy, and deferred toggle controls to the dedicated dark-mode-toggle guide.
  • Updated the interactive-content-in-3d-scenes guide to clarify and renumber the implementation steps for rendering HTML to WebGL/WebGPU canvas textures and synchronizing CSS transforms.
  • Updated the agentic-forms guide to document that toolactivated and toolcancel lifecycle events dispatch on document.modelContext and provide a backward-compatible listener helper.
  • Updated the agentic-javascript-tools guide to advise returning structured error payloads from tool execute functions instead of throwing exceptions, ensuring AI agents receive actionable diagnostic context for recoverable failures.

🗑️ Removed Guides

...

Read more

v0.0.191

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 28 Sep 23:21

Release Notes: v0.0.191

🆕 New Guides

  • accessible-web-components: Make custom elements accessible by default, setting roles and ARIA state via the ElementInternals ARIA mixin, managing focus with delegatesFocus, and keeping ARIA relationships within a single shadow root.
  • custom-elements: Define, register, and manage the lifecycle of autonomous custom elements, covering constructor rules, lifecycle callbacks, upgrade timing, attribute/property reflection, and naming conventions.
  • form-associated-custom-elements: Make a custom control participate natively in forms with formAssociated and ElementInternals, submitting its own value, integrating with constraint validation, and reacting to reset, disable, and state-restore.
  • prerendering-custom-elements: Server-render a custom element, then hydrate it in place without re-rendering or a flash of unstyled content.
  • shadow-dom: Encapsulate a component's DOM and styles with Shadow DOM, construct the tree efficiently with HTML templates, and project consumer content with slots.
  • styling-web-components: Style across the shadow boundary with :host selectors, inherited and custom properties for theming, ::slotted and ::part, and cascade layers and container queries inside components.
  • web-components: Orientation and cross-cutting principles for authoring and using Web Components, covering Custom Elements, Shadow DOM, templates and slots, Declarative Shadow DOM, styling across the shadow boundary, Form-Associated Custom Elements, and accessibility requirements. Use this guide when building reusable UI components, design systems, or server-rendered custom elements.
  • avoid-redundant-large-asset-downloads: Avoid re-downloading and re-storing large shared assets, such as AI models, Wasm modules, or fully-bundled JavaScript libraries, that a visitor's browser may already hold from an unrelated site.
  • load-shared-resources-declaratively: Serve popular, unmodified scripts, stylesheets, and JavaScript modules from a shared cross-origin cache using markup or import syntax alone, without writing custom caching logic.
  • share-web-fonts-across-origins: Serve large, popular web fonts from a shared cross-origin cache instead of re-downloading them from a font CDN on every site that references them.
  • migrate-web-app-origin: Transfer an installed web app to a new origin while preserving user configuration and OS-level shortcuts.
  • local-network-access: Access resources on a user's local network or loopback interface from a public web application.
  • trusted-types: Help prevent DOM-based XSS attacks by ensuring all untrusted content is sanitized before being inserted into the page.
  • responsive-table: Build a data table that presents tabular data with proper header semantics, and remains readable and navigable on small screens and with assistive technologies.
  • spatial-navigation: Implement accessible spatial navigation using arrow keys that works correctly in different layout modes (grid etc)
  • cpp-on-the-web: Compile C/C++ to WebAssembly using Emscripten

🔄 Updated Guides

  • Updated the animated-select-picker guide to advise using standard value attributes on <option> elements to ensure standard form submission behavior.
  • Updated the branded-select-styling guide to emphasize retaining standard value attributes on <option> elements to preserve default form submission behaviors.
  • Updated the custom-select-picker-layouts guide with guidance on using :open::picker(select) selectors, customizing the ::checkmark pseudo-element, wrapping <selectedcontent> in a <button>, and managing keyboard navigation and accessibility constraints for grid layouts.
  • Updated the rich-media-picker guide to clarify that standard value attributes should be maintained on <option> elements to preserve form submission functionality.
  • Updated the out-of-order-html-streaming guide to document the full suite of static and streaming DOM insertion methods, detailing built-in sanitizer behaviors, WritableStream integration, and processing instruction marker practices.
  • Updated the sanitize-untrusted-html guide to detail node manipulation patterns using Document.parseHTML() to avoid mutation XSS, explain child preservation rules via replaceWithChildrenElements, and provide aligned DOMPurify fallback configurations.
  • Updated the security guide to streamline Trusted Types guidance, emphasizing framework dependency audits and incremental rollouts using Content-Security-Policy-Report-Only.
  • Updated the consistent-cross-document-transitions guide to advise against applying blocking="render" to third-party scripts, analytics, or tag managers to avoid triggering view transition timeouts.
  • Updated the agentic-javascript-tools guide to clarify WebMCP producer/consumer roles, detail frame-level discovery controls with exposedTo and fromOrigins, enforce AbortSignal cancellation patterns, and document consequentialHint and debugging tool annotations.

🗑️ Removed Guides

  • Removed the prevent-text-wrapping guide.

🌐 Browser Support Updates

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-5.6-sol) 132 / 1124 59% → 81% +22pp
claude_code (claude-sonnet-5) 132 / 1124 54% → 87% +33pp
antigravity (gemini-3.8-flash-medium) 132 / 1124 65% → 91% +26pp

Full Changelog: v0.0.190...v0.0.191

v0.0.190

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 21 Sep 20:25

Release Notes: v0.0.190

🆕 New Guides

  • Introduced a new guide for out-of-order-html-streaming explaining how to improve perceived performance by streaming initial shell markup and asynchronously injecting deferred content fragments.
  • Introduced a new guide for sanitize-untrusted-html detailing strategies to safely clean user-provided HTML markup and prevent cross-site scripting (XSS) vulnerabilities.
  • Introduced a new guide for contrast-color demonstrating how to automatically select accessible, high-contrast foreground colors for dynamic backgrounds in CSS.

🔄 Updated Guides

  • Updated the ime-safe-enter-submit guide to clarify that the isComposing bug affects Safari versions older than 27.
  • Updated the performance guide to recommend serving JPEG XL as a modern image format alongside AVIF and WebP to achieve optimal compression and quality.
  • Updated the security guide to include the focus-without-user-activation Permissions Policy directive as a best practice for preventing third-party iframes from stealing focus.

🌐 Browser Support Updates

🔌 Plugins

  • Updated the Codex plugin metadata with brand logo assets, a refined short description, and set the category to "Developer Tools".
  • Updated the category classification to "Developer Tools" in the Agent Marketplace catalog.

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-5.6-sol) 132 / 1124 59% → 81% +22pp
claude_code (claude-sonnet-5) 132 / 1124 54% → 87% +33pp
antigravity (gemini-3.8-flash-medium) 132 / 1124 65% → 91% +26pp

Full Changelog: v0.0.189...v0.0.190

v0.0.189

Choose a tag to compare

@chrome-devrel-infra chrome-devrel-infra released this 14 Sep 20:15

Release Notes: v0.0.189

📊 Benchmark Evaluations

Agent + Model Tasks / Assertions Unguided → Guided Pass Rate Uplift
codex_cli (gpt-5.6-sol) 132 / 1124 59% → 81% +22pp
claude_code (claude-sonnet-5) 132 / 1124 54% → 87% +33pp
antigravity (gemini-3.8-flash-medium) 132 / 1124 65% → 91% +26pp

Full Changelog: v0.0.188...v0.0.189