GoogleChrome/modern-web-guidance-srcPublic

AI summary: Open-source project by GoogleChrome

Stars
1.4K
Forks
129
Watchers
31
Open issues
300
Open PRs
57
Contributors
~69
Commits
1.6K
Branches
132

TypeScriptApache-2.0Created Jan 27, 2026Last push today

Quick answers

What is modern-web-guidance-src?
Open-source project by GoogleChrome
What does modern-web-guidance-src do?
GoogleChrome/modern-web-guidance-src is an open-source project written primarily in TypeScript, published under the Apache-2.0 license.
How do I get started with modern-web-guidance-src?
Visit the repository README on GitHub for installation and usage instructions.
How popular is modern-web-guidance-src on GitHub?
GoogleChrome/modern-web-guidance-src has 1,443 stars and 129 forks on GitHub.
What license does modern-web-guidance-src use?
GoogleChrome/modern-web-guidance-src is released under the Apache-2.0 license.

Star history

since Nov 11, 2026

Star history is still being collected for this repository.

Contribution activity

commits per day, last 52 weeks
NovDecJanFebMarAprMayJunJulAugSepOctNovMonWedFri2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 1 commit2025-12-12: 2 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 2 commits2025-12-17: 0 commits2025-12-18: 6 commits2025-12-19: 4 commits2025-12-20: 2 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 13 commits2026-01-06: 15 commits2026-01-07: 4 commits2026-01-08: 1 commit2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 2 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 4 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 2 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 2 commits2026-01-29: 0 commits2026-01-30: 1 commit2026-01-31: 21 commits2026-02-01: 7 commits2026-02-02: 2 commits2026-02-03: 17 commits2026-02-04: 8 commits2026-02-05: 5 commits2026-02-06: 13 commits2026-02-07: 2 commits2026-02-08: 0 commits2026-02-09: 4 commits2026-02-10: 2 commits2026-02-11: 3 commits2026-02-12: 1 commit2026-02-13: 4 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 2 commits2026-02-18: 6 commits2026-02-19: 2 commits2026-02-20: 0 commits2026-02-21: 4 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 35 commits2026-02-25: 7 commits2026-02-26: 3 commits2026-02-27: 7 commits2026-02-28: 2 commits2026-03-01: 2 commits2026-03-02: 4 commits2026-03-03: 2 commits2026-03-04: 8 commits2026-03-05: 4 commits2026-03-06: 13 commits2026-03-07: 1 commit2026-03-08: 5 commits2026-03-09: 6 commits2026-03-10: 4 commits2026-03-11: 10 commits2026-03-12: 2 commits2026-03-13: 6 commits2026-03-14: 2 commits2026-03-15: 0 commits2026-03-16: 6 commits2026-03-17: 15 commits2026-03-18: 11 commits2026-03-19: 4 commits2026-03-20: 8 commits2026-03-21: 3 commits2026-03-22: 2 commits2026-03-23: 5 commits2026-03-24: 6 commits2026-03-25: 4 commits2026-03-26: 8 commits2026-03-27: 7 commits2026-03-28: 2 commits2026-03-29: 2 commits2026-03-30: 13 commits2026-03-31: 2 commits2026-04-01: 1 commit2026-04-02: 11 commits2026-04-03: 14 commits2026-04-04: 7 commits2026-04-05: 1 commit2026-04-06: 12 commits2026-04-07: 3 commits2026-04-08: 7 commits2026-04-09: 7 commits2026-04-10: 6 commits2026-04-11: 5 commits2026-04-12: 1 commit2026-04-13: 1 commit2026-04-14: 7 commits2026-04-15: 4 commits2026-04-16: 12 commits2026-04-17: 34 commits2026-04-18: 2 commits2026-04-19: 1 commit2026-04-20: 3 commits2026-04-21: 8 commits2026-04-22: 8 commits2026-04-23: 5 commits2026-04-24: 3 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 3 commits2026-04-28: 3 commits2026-04-29: 12 commits2026-04-30: 6 commits2026-05-01: 7 commits2026-05-02: 1 commit2026-05-03: 0 commits2026-05-04: 6 commits2026-05-05: 6 commits2026-05-06: 10 commits2026-05-07: 10 commits2026-05-08: 8 commits2026-05-09: 1 commit2026-05-10: 2 commits2026-05-11: 12 commits2026-05-12: 20 commits2026-05-13: 7 commits2026-05-14: 34 commits2026-05-15: 11 commits2026-05-16: 3 commits2026-05-17: 2 commits2026-05-18: 7 commits2026-05-19: 5 commits2026-05-20: 3 commits2026-05-21: 2 commits2026-05-22: 2 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 2 commits2026-05-27: 1 commit2026-05-28: 1 commit2026-05-29: 1 commit2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 2 commits2026-06-02: 4 commits2026-06-03: 3 commits2026-06-04: 0 commits2026-06-05: 7 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 3 commits2026-06-09: 2 commits2026-06-10: 2 commits2026-06-11: 1 commit2026-06-12: 1 commit2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 1 commit2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 1 commit2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 3 commits2026-06-23: 1 commit2026-06-24: 0 commits2026-06-25: 2 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 4 commits2026-06-30: 0 commits2026-07-01: 1 commit2026-07-02: 1 commit2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 8 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 6 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 1 commit2026-07-14: 4 commits2026-07-15: 2 commits2026-07-16: 0 commits2026-07-17: 2 commits2026-07-18: 1 commit2026-07-19: 1 commit2026-07-20: 0 commits2026-07-21: 1 commit2026-07-22: 2 commits2026-07-23: 2 commits2026-07-24: 3 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 4 commits2026-07-28: 0 commits2026-07-29: 2 commits2026-07-30: 0 commits2026-07-31: 1 commit2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 2 commits2026-08-04: 7 commits2026-08-05: 8 commits2026-08-06: 2 commits2026-08-07: 4 commits2026-08-08: 0 commits2026-08-09: 2 commits2026-08-10: 3 commits2026-08-11: 4 commits2026-08-12: 4 commits2026-08-13: 2 commits2026-08-14: 6 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 4 commits2026-08-18: 3 commits2026-08-19: 0 commits2026-08-20: 1 commit2026-08-21: 1 commit2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 2 commits2026-08-25: 1 commit2026-08-26: 1 commit2026-08-27: 2 commits2026-08-28: 2 commits2026-08-29: 0 commits2026-08-30: 2 commits2026-08-31: 9 commits2026-09-01: 3 commits2026-09-02: 3 commits2026-09-03: 3 commits2026-09-04: 2 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 2 commits2026-09-08: 3 commits2026-09-09: 1 commit2026-09-10: 3 commits2026-09-11: 2 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 4 commits2026-09-16: 2 commits2026-09-17: 6 commits2026-09-18: 3 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 9 commits2026-09-22: 5 commits2026-09-23: 1 commit2026-09-24: 8 commits2026-09-25: 15 commits2026-09-26: 3 commits2026-09-27: 1 commit2026-09-28: 7 commits2026-09-29: 10 commits2026-09-30: 4 commits2026-10-01: 6 commits2026-10-02: 12 commits2026-10-03: 1 commit2026-10-04: 3 commits2026-10-05: 15 commits2026-10-06: 13 commits2026-10-07: 17 commits2026-10-08: 18 commits2026-10-09: 9 commits2026-10-10: 5 commits2026-10-11: 4 commits2026-10-12: 12 commits2026-10-13: 18 commits2026-10-14: 6 commits2026-10-15: 13 commits2026-10-16: 4 commits2026-10-17: 3 commits2026-10-18: 4 commits2026-10-19: 17 commits2026-10-20: 14 commits2026-10-21: 2 commits2026-10-22: 14 commits2026-10-23: 0 commits2026-10-24: 1 commit2026-10-25: 2 commits2026-10-26: 42 commits2026-10-27: 8 commits2026-10-28: 11 commits2026-10-29: 5 commits2026-10-30: 7 commits2026-10-31: 2 commits2026-11-01: 2 commits2026-11-02: 27 commits2026-11-03: 31 commits2026-11-04: 28 commits2026-11-05: 24 commits2026-11-06: 34 commits2026-11-07: 15 commits2026-11-08: 33 commits2026-11-09: 59 commits2026-11-10: 20 commits2026-11-11: 0 commits2026-11-12: 0 commits2026-11-13: 0 commits2026-11-14: 0 commits
1,549 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    1,549 commits in 52 weeks

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What modern-web-guidance-src does

GoogleChrome/modern-web-guidance-src is an open-source project written primarily in TypeScript, published under the Apache-2.0 license.

README

main branch

Modern Web Guidance Modern Web Guidance (Source)

This repo is the source repository for GoogleChrome/modern-web-guidance and includes the code and documentation for authoring, calibrating, and evaluating its contents.

Modern Web Guidance is a set of skills that embed web platform expertise, best practices, and browser compatibility data directly into your coding agents. It helps to steer your coding agents away from legacy patterns, and instead toward solutions that harness the power and capabilities of the modern web platform.

See CONTRIBUTING.md and GOVERNANCE.md for how we work on the project and orientation of the codebase.


Stewarded by the Google Chrome, Microsoft Edge, Mozilla Firefox, and MDN teams, alongside the web development community.

Documentation · Eval Dashboard · Source Code · Report an Issue

Quickstart

npx modern-web-guidance@latest install

This command runs an interactive wizard to install Modern Web Guidance. See Alternative Installation Methods below.

Try it out (without installing)
# Search for relevant guides
npx modern-web-guidance@latest search "animate a dialog modal backdrop"

# Retrieve a guide by ID
npx modern-web-guidance@latest retrieve "animate-to-from-top-layer"

# Scan a codebase for legacy patterns to modernize
npx modern-web-guidance@latest legacy-scan .

Why?

Coding agents often default to older patterns because LLM training data contains vast amounts of legacy code. This often leads them to generate bloated JavaScript for tasks that now have native, high-performance web platform solutions.

Even if a model knows an API exists, it often lacks the density of real-world, modern implementation patterns required for production-ready code.

Modern Web Guidance bridges this gap. Our skill's CLI returns targeted, expert-curated guidelines directly into your agent's context window, focusing on:

  • Modern Browser APIs: Helping models correctly structure APIs they frequently misuse.
  • Performance & Accessibility: Preferring platform-level APIs that can be optimized by the browser and include built-in accessibility affordances.
  • Responsible Fallbacks: Guiding models to use sensible, lightweight fallbacks instead of heavy polyfills or legacy libraries.

What's Included?

We cover the past several years of the web platform's new features, all the way up to the cutting edge. The guides are designed to be token-efficient; we run evals enabling us to prune lowest-common-denominator content that models already know.

Core Disciplines

🎨 User Experience

Smooth visual states (View Transitions, entry/exit animations, parallax scroll, CSS scrollbar-color).

📐 CSS Layout

Modern layout systems (container queries, subgrid, modern color spaces like oklch, text-wrap tuning, and line-height trimming).

⚡ Performance

Speed optimizations (instant preloading, Interaction to Next Paint (INP) diagnostics, and scheduling tasks via scheduler.yield).

📝 Forms & UI

Native components (Anchor Positioning for tooltips, Popover API, dialogs, :user-invalid validation, and auto-sizing fields).

♿ Accessibility

Important considerations (screen reader and keyboard operability, content navigation and discoverability).

🤖 Built-in AI

Local client models (native translation, summarization, and language detection APIs).

View an example: the navigation-drawer guide.

The full list
250 modern web features

CSS & Layout (140 features)

::backdrop content-visibility progress()
::details-content contrast-color() reading-flow
::file-selector-button Cross-document view transitions Relative colors
::placeholder currentColor rem
::selection Custom highlights resize (CSS property)
:dir() Custom properties revert
:focus-visible display animation revert-rule
:focus-within Element-scoped view transitions Safe area inset environment variables
:has() em unit Scroll marker target pseudo-classes
:host-context() field-sizing Scroll method promises
:is() filter Scroll snap
:modal flex-wrap: balance Scroll snap events
:not() Flexbox scroll-axis-lock
:nth-child() of <selector> font-size scroll-behavior
:placeholder-shown font-size-adjust Scroll-driven animations
:user-valid and :user-invalid Forced colors scroll-initial-target
:where() Gradient interpolation scroll-target-group
@function Gradients scrollbar-color
@scope Grid scrollbar-gutter
@starting-style Grid lanes scrollbar-width
@supports Hyphenation scrollend
abs() and sign() image-set() scrollIntoView()
accent-color Individual transform properties Shadow parts
Active view transition inherit sibling-count() and sibling-index()
Alt text for generated content initial Sticky positioning
Anchor position container queries Interaction media queries Subgrid
Anchor positioning interpolate-size System colors
Animations (CSS) isolation Text overflow
appearance Lab and LCH Text stroke and fill (compatibility prefixes)
aspect-ratio light-dark() text-box
at-rule() line-clamp text-decoration
attr() line-height text-decoration-skip-ink
background-blend-mode linear() easing text-decoration-skip-ink: all
background-clip: border-area Logical properties text-decoration-skip-spaces
border-radius Masks text-wrap
box-shadow min(), max(), and clamp() text-wrap: balance
calc-size() mix-blend-mode text-wrap: pretty
Cascade layers Nesting transition-behavior
ch unit Oklab and OkLCh Transitions (CSS)
clip-path overflow-clip-margin Trigonometric functions (CSS)
color-mix() overflow-wrap unset
color-scheme overflow: clip user-select
Conic gradients overlay View transitions
Container queries (size) overscroll-behavior view-transition-class
Container scroll-state queries prefers-color-scheme media query Viewport units
Container style queries prefers-contrast media query Web animations
Content prefers-reduced-motion media query

HTML & DOM (36 features)

:autofill <slot> HTML streaming setters
:indeterminate <video> HTML-in-canvas
<audio> Autonomous custom elements inert
<details> blocking="render" Interest invokers
<dialog closedby> Customizable <select> Invoker commands
<dialog> Declarative shadow DOM Lazy-loading media
<input type="checkbox" switch> Email, telephone, and URL <input> types moveBefore()
<input type="range"> Fetch priority MutationObserver
<input> focusgroup Mutually exclusive <details> elements
<link rel="expect"> Form-associated custom elements Popover
<link rel="preload"> hidden="until-found" popover="hint"
<progress> HTML setter methods Shadow DOM

JavaScript & APIs (74 features)

<install> integrity() for url() Sanitizer API
<meta name="text-scale"> Interaction contentful paint performance entries Scheduler API
<template for> Intersection observer Small, large, and dynamic viewport units
AbortController and AbortSignal Intl.DurationFormat Soft navigation performance entries
ARIA attribute reflection Keyboard events Speculation rules
ariaNotify() Language detector Subresource integrity
Async clipboard LanguageModel Summarizer
autocorrect Lazy-loading images and iframes SVG
beforeinstallprompt light-dark() image values Temporal
border-shape Local network access text-decoration-inset
Connection allowlists Long animation frames performance entries text-fit
corner-shape long-animation-frames-style-layout Top-level await
Credential management Navigation API touch-action
cross-origin() for url() navigator.install() Translator
document.modelContext Origin Trusted types
email-verification Page visibility User agent client hints
enterkeyhint Page visibility state performance entries Web app manifest
Event timing performance entries Partitioned cookies Web app origin migration
Federated credential management Password credentials Web authentication
Fetch Permissions policy Web authentication signal methods
fetchLater Pointer Events Web Cryptography
Form-associated WebMCP attributes Referrer policy WebAssembly
HTML processing instructions referrer-policy() for url() webcrypto-modern-algos
image() Registered custom properties WebOTP
inputmode Resize observer
203 real-world developer use cases

accessibility

  • accessible-error-announcement: Synchronize programmatic accessibility states (like aria-invalid) with the visual :user-invalid state to ensure screen reader users receive error feedback only after interaction, mirroring the visual experience.
  • accessible-generated-content: Use CSS generated content (::before/::after) in ways that stay accessible, including alternative text for decorative content.
  • respect-os-text-scale: Respect the operating system's text scale preference for a page so font sizes, layout, and rem-based measurements follow the user's accessibility settings.

built-in-ai

  • language-detection: Detect the language of user-generated content or already present site content.
  • language-model: Run on-device natural language inference in the browser using the Prompt API, with streaming output, structured JSON responses, and multi-turn session management.
  • summarizer: Summarize text content using the on-device Summarizer API.
  • translator: Translate text between languages using the on-device Translator API.

css

  • animate-to-intrinsic-sizes: Smoothly animate interactive components (like accordions, menus, and expanding cards) to and from their natural dimensions.
  • atrule-support-conditionals: Conditionally apply certain CSS rules or declarations only if a certain at-rule is supported by the browser.
  • calculate-with-intrinsic-sizes: Calculate the size of an element based on its intrinsic size, while ensuring it fits within given design constraints.
  • child-state-based-styling: Build a component that changes its styling based on the state of one of its child elements. For example, a component that renders in light or dark mode based on whether a theme toggle is checked (or not).
  • content-based-styling: Build a component that changes its layout based on whether it contains specific child elements (or not). For example, if the component contains an image, use a multi-column layout, otherwise default to a single-column layout.
  • css: Action-oriented guidelines for modern CSS architecture, including the cascade, selectors, scoping, nesting, and design tokens. Use this guide when authoring styles or managing design systems.
  • css-layout: Modern CSS layouts such as flexbox, grid, subgrid, container queries, anchor positioning, and intrinsic sizing. Use this skill when architecting responsive UI components or page layouts.
  • design-token-reactivity: Define higher-order design tokens, like density modes (compact, comfortable, spacious) or themes and have descendant components react to changes directly and in component-appropriate ways.
  • dynamic-sibling-styling: Create dynamic visual spectrums or layout arrangements that automatically adapt to the number of elements in a group.
  • fluid-scaling: Scale items like font size, spacing, and media sizes smoothly based on the parent container's size rather than using fixed breakpoints
  • individual-transform-properties: Animate or override individual CSS transform properties (e.g. translate, rotate, scale) independently of other transform properties on a single element.
  • overflow-clipping-control: Adjust the visible clipping boundary of an element to align with the content edge, padding edge, or border edge—or a specified offset from any of these—offering finer-grained control over how content is clipped.
  • reduce-style-repetition: Reduce excessive style repetition by encapsulating complex or dynamic styling logic into reusable functions (such as a function that computes a gradient based on a set of input parameters).
  • responsive-design: Build UI that adapts to container and viewport size, including container queries, dynamic viewport units, aspect ratios, and responsive typography.
  • selector-atrule-combinations: Target elements based on the intersection or union of selectors and conditional @-rules while minimizing repetition.
  • size-aware-styling: Build a component whose styles can be conditionally dependent on its own width or height, rather than the width or height of the viewport. For example a card component that can change its layouts depending on how large it is, or a call-to-action button that can conditionally display helper text based on its width.
  • style-parent-with-has: Style parent elements of a form field (e.g. labels or fieldsets) when the field is invalid.
  • usage-aware-component-variations: Build components that adapt visual logic based on semantic context using CSS container style queries.

forms

  • animated-select-picker: Create a custom select component whose dropdown is animated. For example, the menu fades or slides into view, or the options animate upon selection.
  • autofill-address-form: Build an address form with correct autocomplete attributes and autofill support.
  • autofill-highlight-inputs: Customize the styling of form fields that have been autofilled and not edited by the user
  • autofill-payment-form: Build a payment form that collects card details with correct autocomplete values and autofill support.
  • autofill-sign-in-form: Build a sign-in form with correct autocomplete values and autofill support.
  • autofill-sign-up-form: Build a sign-up form with correct autocomplete values and autofill support.
  • brand-consistent-forms: Match checkboxes, radio buttons, range sliders, and progress bars to your site's color palette without replacing them with custom components.
  • branded-select-styling: Create custom select elements whose button, picker, arrow icon, and checkmark all seamlessly match your brand or design system's typography, colors, spacing, and border treatments.
  • custom-select-picker-layouts: Create custom select pickers whose options are positioned in unique or interesting ways, rather than the traditional stacked list of options.
  • form-fields-automatically-fit-contents: Allow form fields to grow and shrink to fit the user input, e.g. as the user types or selects a different option. Apply maximum and minimum size limits to create dynamic and responsive form fields that conform with the page design.
  • ime-safe-enter-submit: Implement Enter-to-submit in textareas and single-line inputs (chat, search, inline rename) safely for IME (Input Method Editor) users to prevent submitting incomplete text.
  • required-field-feedback: Provide error message for required form fields that were skipped or left empty only after user interaction, to avoid preemptive errors and ensure feedback is timely and contextually relevant to the user's flow.
  • rich-media-picker: Create a custom select component whose options can contain complex HTML formatting (e.g. images, icons, and other rich formatting) rather than just plain text.
  • select-menu-interaction: Validate that a non-default option has been chosen in a select menu only after the user has interacted with the control.
  • slider: Style a native range slider with custom track, thumb, fill, and focus states while preserving native functionality and accessibility.
  • sms-otp-form: Verify user phone numbers and one-time passcodes delivered over SMS with automatic code extraction and accessible form input.
  • switch: Build an accessible switch with the native HTML switch attribute, falling back to a styled checkbox when not supported.
  • validate-input-after-interaction: Show form field validation feedback (e.g. password complexity or email format requirements) only after the user has finished their initial interaction, avoiding premature errors on page load or while the user is typing.

html

  • 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.

js

  • calculate-event-differentials: Calculate elapsed or remaining time between dates and times, balance duration units, and format human-readable localized durations using Temporal.Duration and Intl.DurationFormat.
  • capture-location-agnostic-data: Model location-agnostic calendar dates, wall-clock times, partial dates (recurring birthdays, credit card expirations), and recurring monthly intervals without time zone drift using Temporal Plain types.
  • coordinate-global-events: Schedule future meetings or events by explicitly binding them to a geographical IANA time zone so that event times remain accurate regardless of Daylight Saving Time (DST) transitions, "skipped" or "repeated" hours during clock changes.
  • sort-high-precision-timestamps: Parse, sort, and measure intervals between sub-millisecond or nanosecond ISO 8601 timestamps without Date truncation collisions using Temporal.Instant.
  • support-global-calendar-systems: Display and calculate dates in non-Gregorian calendar systems (e.g., Islamic, Hebrew, or Chinese) accurately for international users.

performance

  • batch-analytics-events: Debounce and batch multiple analytics, telemetry, and Core Web Vitals events together in a single beacon to minimize network contention and reduce server load, while still delivering real-time updates.
  • break-up-long-tasks: Break up heavy synchronous processing (complex computations and/or long loops) or DOM updates to improve Interaction to Next Paint (INP) responsiveness and let the browser handle user input and repaint the screen.
  • calculate-total-foreground-time: Calculate the total time a user actually spent viewing a page, excluding periods when the tab was in the background.
  • conditional-async-dependencies: Conditionally load or initialize async dependencies (such as importing polyfills for missing web features) without requiring complex orchestration across all of a page's script dependencies.
  • defer-rendering-heavy-content: Reduce rendering times in content-heavy web pages (e.g. pages with long feeds, lots of articles, or complex dashboards), by deferring rendering for any content that is not immediately visible to the user.
  • defer-work-until-scroll-ends: Defer expensive operations like DOM updates, data fetching, analytics tracking, or layout recalculation until after scrolling completes to maintain smooth scroll performance.
  • deliver-optimized-decorative-images: Deliver optimized decorative images (such as backgrounds, UI icons, or complex masks) by simultaneously providing next-generation image formats (like AVIF or WebP) alongside multiple pixel densities (like 1x and 2x) so the browser can dynamically negotiate the best combination of file size and visual quality for the user's device capabilities.
  • deprioritize-background-fetches: Deprioritize background data fetches made with the Fetch API to prevent network contention with user-initiated requests.
  • detect-initial-visibility-state: Reliably determine whether a page was initially loaded in the background, even in cases where the script is loaded asynchronously after the user foregrounded the page.
  • efficient-background-processing: Conserve system resources and battery life by pausing background JavaScript execution (such as &lt;canvas&gt; animations, WebGL rendering, or high-frequency WebSocket data polling) when the component is off-screen and then resume them just-in-time when they scroll back into view.
  • faster-spa-view-transitions: Enable faster transitions back to previously visited views in a Single-Page Application (SPA) by preserving their structural DOM state instead of destroying and rebuilding them on every navigation.
  • flicker-free-client-side-ab-testing: Deliver and render A/B tests, multi-variate tests, or other experiments using client-side JavaScript to alter or inject HTML, CSS, and JavaScript without the original content showing first before flickering or flashing to show the experiment content.
  • full-session-analytics: Reliably track analytics, Core Web Vitals, errors, and telemetry data across the user's entire page visit, and defer sending of the data until the user leaves the page.
  • identify-heavy-scripts: Identify the scripts most responsible for long animation frames
  • identify-inp-causes: Identify slow-running JavaScript and other causes of poor Interaction to Next Paint (INP) responsiveness.
  • improve-next-page-load-performance: Improve page load performance by prefetching or prerendering pages that the user is likely to visit next.
  • interaction-paint-timing: Measure the time it takes for user interactions and client-side navigations to render new contentful updates on screen.
  • interactions-in-complex-layouts: Make interactions snappier and more responsive (reducing Interaction to Next Paint (INP) scores) by avoiding layout re-calculations in complex layouts, such as data-heavy dashboards or spreadsheet-style grids.
  • lazy-load-video-and-audio: Defer downloading offscreen video and audio assets, including video poster images and preloaded media data, until the media player approaches the viewport to conserve bandwidth and reduce network contention during initial page load.
  • optimize-image-priority: Optimize the loading priority of Largest Contentful Paint (LCP) candidate images and deprioritize non-critical images to reduce critical resource load delays.
  • optimize-preload-priority: Optimize the relative priority of preloaded content to reduce critical resource load delays.
  • optimize-script-priority: Optimize the loading priority of scripts by boosting critical asynchronous scripts and deprioritizing non-essential or late-body scripts to improve sequencing and reduce delays.
  • out-of-order-html-streaming: Declaratively update a page with content streamed later into the same HTML document or via imperative JavaScript APIs.
  • resolution-optimized-pseudo-elements: Use resolution-optimized images in CSS pseudo-elements (such as ::before and ::after) to reduce the number of DOM nodes.
  • schedule-tasks-by-priority: Schedule tasks with different priorities to ensure critical work runs first while background work is deferred.

privacy

  • privacy: Action-oriented guidelines for web developers to implement privacy by design, data minimization, third-party audits, and secure data handling. Use this skill when designing applications, integrating third-party services, handling user data, or configuring security headers.

pwa

  • install-web-app: Install web applications from a page using browser-controlled consent UI.
  • migrate-web-app-origin: Transfer an installed web app to a new origin while preserving user configuration and OS-level shortcuts.

security

  • client-side-encryption: Establish shared secrets using public-key encapsulation or key agreement—including hybrid and post-quantum protection—and encrypt sensitive data in the browser with authenticated encryption.
  • digital-signatures: Sign and verify messages, tokens, or artifacts in the browser using classical or quantum-resistant (post-quantum) asymmetric keys to ensure data integrity and authenticity.
  • local-network-access: Access resources on a user's local network or loopback interface from a public web application.
  • passkey-authentication: Authenticate a returning user with a passkey for primary sign-in.
  • passkey-conditional-create: Silently register a passkey for an existing user after a successful password login.
  • passkey-management: Let users view and manage the passkeys registered to their account.
  • passkey-reauthentication: Verify a signed-in user's identity using their existing passkeys before a sensitive action.
  • passkey-registration: Register a passkey for an existing user account.
  • passkeys: Comprehensive orientation and cross-cutting principles for implementing WebAuthn and Passkeys in web applications. Use this guide when handling passkey registration, authentication, management, or reauthentication.
  • quick-sign-ins: Authenticate returning users in place with their saved passkeys or passwords before navigating to a sign-in page or interrupting their workflow.
  • 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.
  • sanitize-untrusted-html: Safely parse and display untrusted HTML content from user input by removing unsafe elements and attributes.
  • secure-external-subresources: Verify the cryptographic integrity of external scripts, stylesheets, fonts, and images loaded from third-party origins, and control whether those requests send credentials or referrer URLs.
  • trusted-types: Prevent DOM-based XSS attacks by defining a Trusted Types policy to sanitize untrusted HTML, using the policy when writing to DOM sinks like innerHTML, and enforcing Trusted Types via Content Security Policy.
  • 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.

ui-atoms

  • carousel-slide-effects: Create a carousel of slides with images or other visual elements, where each slide animates as they enter/center/exit their scroller. For example, the slides may fade-in/fade-out, rotate, get bigger or smaller, etc.
  • component-specific-light-dark-theme: Force certain elements to be in light mode or dark mode (e.g. code blocks, media players, etc) independently of the page's color-scheme.
  • icons: Display and manage icons that can be set and parameterized from CSS, are fast to load, crisp at any resolution and are properly exposed to (or hidden from) assistive technologies.
  • position-aware-tooltips: Build tooltips and popovers with directional arrows (or other visual styling) that automatically point the correct way when the element flips to a fallback position.
  • pull-to-reveal: Build a pull-to-reveal feature that would enable the user to pull down on the screen to reveal more content, like a search bar.
  • 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.
  • scroll-position-aware-elements: Build floating buttons or widgets (back-to-top, scroll-to-bottom, chat launchers, etc.) that appear and disappear based on whether the user has scrolled at all.
  • scroll-progress-indicator: Create a scroll progress bar, stepped progress tracker, or any visual affordance that communicates how far through a page or section the user has scrolled.
  • scrollability-affordance-hints: Build scroll shadows or fading edges that appear only when there's actually more content to scroll to in that direction.
  • shrinking-header-on-scroll: Smoothly animate a fixed header or full-page cover on scroll to dynamically shrink, gain shadows, and transform its layout over a predefined scroll distance.
  • single-line-overflow: Show text that must stay on one line, such as a tab label, table cell, navigation item, or file name, in a space it may not fit, without breaking the layout or losing the text.
  • state-aware-sticky-headers: Build sticky section headers or navbars that visually transform when they're actually "stuck" at the top, changing their color scheme or gaining a shadow.
  • viewport-aware-dropdowns: Position dropdowns, flyouts, or contextual action panels tethered to a trigger button so they automatically flip axes at viewport edges instead of getting clipped.

ui-behaviors

  • 2d-panning: Allow users to freely pan or scroll two-dimensional surfaces—such as maps, zoomed images, infinite canvases, or large data grids—across both directions (whether diagonally or changing direction mid-gesture) without the gesture locking to a single horizontal or vertical axis.

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

1 total
  1. Audit data (machine-readable snapshots)audit-dataOct 14, 2026pre-release25 downloads

    Machine-readable audit snapshots for the pipeline tracker issue #1815 in GoogleChrome/modern-web-guidance-src.

Code frequency

additions and deletions
+432.5K-432.5KWeek of 2025-12-07: +4,494 linesWeek of 2025-12-07: -150 linesWeek of 2025-12-14: +2,703 linesWeek of 2025-12-14: -202 linesWeek of 2025-12-21: +0 linesWeek of 2025-12-21: -0 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +180,185 linesWeek of 2026-01-04: -99,729 linesWeek of 2026-01-11: +2 linesWeek of 2026-01-11: -2 linesWeek of 2026-01-18: +289,951 linesWeek of 2026-01-18: -125,317 linesWeek of 2026-01-25: +389,754 linesWeek of 2026-01-25: -325,160 linesWeek of 2026-02-01: +134,373 linesWeek of 2026-02-01: -104,787 linesWeek of 2026-02-08: +214,223 linesWeek of 2026-02-08: -126,996 linesWeek of 2026-02-15: +14,952 linesWeek of 2026-02-15: -4,583 linesWeek of 2026-02-22: +11,920 linesWeek of 2026-02-22: -432,494 linesWeek of 2026-03-01: +8,194 linesWeek of 2026-03-01: -3,084 linesWeek of 2026-03-08: +12,704 linesWeek of 2026-03-08: -3,246 linesWeek of 2026-03-15: +19,652 linesWeek of 2026-03-15: -3,577 linesWeek of 2026-03-22: +17,305 linesWeek of 2026-03-22: -3,806 linesWeek of 2026-03-29: +21,439 linesWeek of 2026-03-29: -13,850 linesWeek of 2026-04-05: +11,270 linesWeek of 2026-04-05: -5,045 linesWeek of 2026-04-12: +20,040 linesWeek of 2026-04-12: -2,762 linesWeek of 2026-04-19: +5,197 linesWeek of 2026-04-19: -2,220 linesWeek of 2026-04-26: +9,840 linesWeek of 2026-04-26: -1,780 linesWeek of 2026-05-03: +8,912 linesWeek of 2026-05-03: -11,903 linesWeek of 2026-05-10: +32,076 linesWeek of 2026-05-10: -19,672 linesWeek of 2026-05-17: +4,813 linesWeek of 2026-05-17: -2,522 linesWeek of 2026-05-24: +432 linesWeek of 2026-05-24: -127 linesWeek of 2026-05-31: +24,225 linesWeek of 2026-05-31: -536 linesWeek of 2026-06-07: +1,566 linesWeek of 2026-06-07: -108 linesWeek of 2026-06-14: +860 linesWeek of 2026-06-14: -102 linesWeek of 2026-06-21: +1,880 linesWeek of 2026-06-21: -1,044 linesWeek of 2026-06-28: +127 linesWeek of 2026-06-28: -20 linesWeek of 2026-07-05: +56,367 linesWeek of 2026-07-05: -55,987 linesWeek of 2026-07-12: +55,698 linesWeek of 2026-07-12: -54,133 linesWeek of 2026-07-19: +2,951 linesWeek of 2026-07-19: -1,206 linesWeek of 2026-07-26: +3,558 linesWeek of 2026-07-26: -1,119 linesWeek of 2026-08-02: +6,565 linesWeek of 2026-08-02: -2,906 linesWeek of 2026-08-09: +3,259 linesWeek of 2026-08-09: -2,483 linesWeek of 2026-08-16: +4,892 linesWeek of 2026-08-16: -467 linesWeek of 2026-08-23: +3,865 linesWeek of 2026-08-23: -265 linesWeek of 2026-08-30: +11,435 linesWeek of 2026-08-30: -5,551 linesWeek of 2026-09-06: +3,788 linesWeek of 2026-09-06: -522 linesWeek of 2026-09-13: +1,427 linesWeek of 2026-09-13: -1,876 linesWeek of 2026-09-20: +11,931 linesWeek of 2026-09-20: -3,559 linesWeek of 2026-09-27: +50,908 linesWeek of 2026-09-27: -3,742 linesWeek of 2026-10-04: +98,164 linesWeek of 2026-10-04: -71,715 linesWeek of 2026-10-11: +28,551 linesWeek of 2026-10-11: -6,854 linesWeek of 2026-10-18: +25,895 linesWeek of 2026-10-18: -16,416 linesWeek of 2026-10-25: +71,764 linesWeek of 2026-10-25: -8,241 linesWeek of 2026-11-01: +73,521 linesWeek of 2026-11-01: -15,468 linesWeek of 2026-11-08: +107,623 linesWeek of 2026-11-08: -64,182 linesDec 7, 2025Nov 8, 2026
+2.1M lines added, -1.6M removed over the last year.

Commits per week

last 52 weeks
1610Week of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 3 commitsWeek of 2025-12-14: 14 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 33 commitsWeek of 2026-01-11: 2 commitsWeek of 2026-01-18: 6 commitsWeek of 2026-01-25: 24 commitsWeek of 2026-02-01: 54 commitsWeek of 2026-02-08: 14 commitsWeek of 2026-02-15: 14 commitsWeek of 2026-02-22: 54 commitsWeek of 2026-03-01: 34 commitsWeek of 2026-03-08: 35 commitsWeek of 2026-03-15: 47 commitsWeek of 2026-03-22: 34 commitsWeek of 2026-03-29: 50 commitsWeek of 2026-04-05: 41 commitsWeek of 2026-04-12: 61 commitsWeek of 2026-04-19: 28 commitsWeek of 2026-04-26: 32 commitsWeek of 2026-05-03: 41 commitsWeek of 2026-05-10: 89 commitsWeek of 2026-05-17: 21 commitsWeek of 2026-05-24: 5 commitsWeek of 2026-05-31: 16 commitsWeek of 2026-06-07: 9 commitsWeek of 2026-06-14: 2 commitsWeek of 2026-06-21: 7 commitsWeek of 2026-06-28: 6 commitsWeek of 2026-07-05: 14 commitsWeek of 2026-07-12: 10 commitsWeek of 2026-07-19: 9 commitsWeek of 2026-07-26: 7 commitsWeek of 2026-08-02: 23 commitsWeek of 2026-08-09: 21 commitsWeek of 2026-08-16: 9 commitsWeek of 2026-08-23: 8 commitsWeek of 2026-08-30: 22 commitsWeek of 2026-09-06: 11 commitsWeek of 2026-09-13: 15 commitsWeek of 2026-09-20: 41 commitsWeek of 2026-09-27: 41 commitsWeek of 2026-10-04: 80 commitsWeek of 2026-10-11: 60 commitsWeek of 2026-10-18: 52 commitsWeek of 2026-10-25: 77 commitsWeek of 2026-11-01: 161 commitsWeek of 2026-11-08: 112 commitsNov 16, 2025Nov 8, 2026
1.5K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 3 commitsSun 1:00 — 1 commitsSun 2:00 — 1 commitsSun 3:00 — 2 commitsSun 4:00 — 1 commitsSun 5:00 — 0 commitsSun 6:00 — 2 commitsSun 7:00 — 0 commitsSun 8:00 — 1 commitsSun 9:00 — 1 commitsSun 10:00 — 1 commitsSun 11:00 — 4 commitsSun 12:00 — 6 commitsSun 13:00 — 0 commitsSun 14:00 — 7 commitsSun 15:00 — 2 commitsSun 16:00 — 6 commitsSun 17:00 — 24 commitsSun 18:00 — 4 commitsSun 19:00 — 5 commitsSun 20:00 — 2 commitsSun 21:00 — 2 commitsSun 22:00 — 1 commitsSun 23:00 — 3 commitsMon 0:00 — 1 commitsMon 1:00 — 0 commitsMon 2:00 — 2 commitsMon 3:00 — 2 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 1 commitsMon 7:00 — 3 commitsMon 8:00 — 5 commitsMon 9:00 — 12 commitsMon 10:00 — 13 commitsMon 11:00 — 33 commitsMon 12:00 — 29 commitsMon 13:00 — 22 commitsMon 14:00 — 34 commitsMon 15:00 — 36 commitsMon 16:00 — 17 commitsMon 17:00 — 17 commitsMon 18:00 — 23 commitsMon 19:00 — 15 commitsMon 20:00 — 26 commitsMon 21:00 — 19 commitsMon 22:00 — 11 commitsMon 23:00 — 11 commitsTue 0:00 — 6 commitsTue 1:00 — 5 commitsTue 2:00 — 3 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 4 commitsTue 6:00 — 1 commitsTue 7:00 — 2 commitsTue 8:00 — 3 commitsTue 9:00 — 14 commitsTue 10:00 — 30 commitsTue 11:00 — 18 commitsTue 12:00 — 22 commitsTue 13:00 — 11 commitsTue 14:00 — 18 commitsTue 15:00 — 22 commitsTue 16:00 — 32 commitsTue 17:00 — 23 commitsTue 18:00 — 12 commitsTue 19:00 — 26 commitsTue 20:00 — 18 commitsTue 21:00 — 14 commitsTue 22:00 — 22 commitsTue 23:00 — 4 commitsWed 0:00 — 8 commitsWed 1:00 — 3 commitsWed 2:00 — 3 commitsWed 3:00 — 1 commitsWed 4:00 — 2 commitsWed 5:00 — 3 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 12 commitsWed 9:00 — 10 commitsWed 10:00 — 11 commitsWed 11:00 — 6 commitsWed 12:00 — 8 commitsWed 13:00 — 14 commitsWed 14:00 — 27 commitsWed 15:00 — 23 commitsWed 16:00 — 25 commitsWed 17:00 — 21 commitsWed 18:00 — 6 commitsWed 19:00 — 9 commitsWed 20:00 — 4 commitsWed 21:00 — 10 commitsWed 22:00 — 12 commitsWed 23:00 — 3 commitsThu 0:00 — 4 commitsThu 1:00 — 0 commitsThu 2:00 — 4 commitsThu 3:00 — 4 commitsThu 4:00 — 1 commitsThu 5:00 — 3 commitsThu 6:00 — 0 commitsThu 7:00 — 2 commitsThu 8:00 — 7 commitsThu 9:00 — 8 commitsThu 10:00 — 19 commitsThu 11:00 — 20 commitsThu 12:00 — 20 commitsThu 13:00 — 19 commitsThu 14:00 — 22 commitsThu 15:00 — 17 commitsThu 16:00 — 20 commitsThu 17:00 — 14 commitsThu 18:00 — 16 commitsThu 19:00 — 11 commitsThu 20:00 — 8 commitsThu 21:00 — 18 commitsThu 22:00 — 9 commitsThu 23:00 — 1 commitsFri 0:00 — 1 commitsFri 1:00 — 1 commitsFri 2:00 — 2 commitsFri 3:00 — 2 commitsFri 4:00 — 2 commitsFri 5:00 — 0 commitsFri 6:00 — 2 commitsFri 7:00 — 2 commitsFri 8:00 — 5 commitsFri 9:00 — 10 commitsFri 10:00 — 19 commitsFri 11:00 — 16 commitsFri 12:00 — 29 commitsFri 13:00 — 19 commitsFri 14:00 — 22 commitsFri 15:00 — 22 commitsFri 16:00 — 43 commitsFri 17:00 — 11 commitsFri 18:00 — 10 commitsFri 19:00 — 11 commitsFri 20:00 — 14 commitsFri 21:00 — 11 commitsFri 22:00 — 7 commitsFri 23:00 — 6 commitsSat 0:00 — 3 commitsSat 1:00 — 4 commitsSat 2:00 — 3 commitsSat 3:00 — 2 commitsSat 4:00 — 3 commitsSat 5:00 — 2 commitsSat 6:00 — 1 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 3 commitsSat 10:00 — 2 commitsSat 11:00 — 2 commitsSat 12:00 — 6 commitsSat 13:00 — 20 commitsSat 14:00 — 13 commitsSat 15:00 — 3 commitsSat 16:00 — 2 commitsSat 17:00 — 3 commitsSat 18:00 — 1 commitsSat 19:00 — 6 commitsSat 20:00 — 6 commitsSat 21:00 — 0 commitsSat 22:00 — 3 commitsSat 23:00 — 3 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Nov 11, 2026daily#3+133
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    459K stars · TypeScript

  • morluto/rea

    Reverse engineer anything with agents, from app behavior down to native binaries.

    451.6K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    394.3K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    226.1K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    210.1K stars · TypeScript

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    200.7K stars · TypeScript