30 comments

  • surround4 hours ago
    Here&#x27;s a list of browser features the skills will tell your agent to use that are stable in Chrome but not supported by Firefox and Safari:<p><pre><code> CSS @function CSS calc-size() CSS interpolate-size CSS corner-shape CSS border-shape CSS flex-wrap: balance CSS text-fit CSS text-decoration-skip-spaces CSS scroll-axis-lock CSS scroll-target-group CSS :target-current CSS scroll-initial-target CSS container scroll-state queries scrollsnapchange event scrollsnapchanging event HTML focusgroup Element.startViewTransition() CSS view-transition-scope Interest Invokers (interestfor) LanguageModel (Prompt API) LanguageDetector Translator Summarizer API Window.fetchLater() Speculation Rules API Long Animation Frames API VisibilityStateEntry PerformanceSoftNavigation InteractionContentfulPaint Connection-Allowlist CSS url() integrity() modifier HTML meta name=&quot;text-scale&quot; HTML template for HTML processing instructions PasswordCredential Promise-returning scroll methods Web App Origin Migration Local Network Access permissions Request.targetAddressSpace beforeinstallprompt event </code></pre> To be fair, the skills also recommend ~11 features not supported by Chrome itself. And the project does seem concerned with compatibility: &quot;Guiding models to use sensible, lightweight fallbacks.&quot;
    • philipwalton3 hours ago
      &gt; Here&#x27;s a list of browser features the skills will tell your agent to use that are stable in Chrome but not supported by both Firefox and Safari:<p>To be clear, the skills <i>document</i> how to use these features to solve common use cases, and then they give your agent a full browser support table for any APIs mentioned that are not Baseline Widely available -- and then your agent can decide whether to use them or not, based on your site&#x27;s browser support requirements.<p>In most of these cases a cross-browser fallback is also documented.
      • lelandfe29 minutes ago
        The default behavior for this &quot;web best practices&quot; tool which steers people away from &quot;legacy patterns&quot; has agents using Limited Availability features with complex and nuanced[0] fallbacks?<p>This would be deeply surprising to me, and I am the target audience for this repo. I&#x27;d expect the default here to be Widely Available <i>only</i> with some opt-in for the courageous. I don&#x27;t know that I&#x27;d even enable it.<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance&#x2F;blob&#x2F;4dd968349e54ca45a05dd5c818fb035c9054b022&#x2F;skills&#x2F;modern-web-guidance&#x2F;guides&#x2F;performance&#x2F;detect-initial-visibility-state.md#fallback-strategies" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance&#x2F;blob&#x2F;4dd...</a>
      • surround3 hours ago
        The line between <i>documenting</i> and <i>instructing</i> is blurry in many cases. For example, these statements are meant to document best practices to the agent, but they sound like instructions:<p>&quot;DO use fetchLater()...&quot;<p>&quot;Your own code MUST call fetchLater() directly...&quot;<p><a href="https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance&#x2F;blob&#x2F;main&#x2F;skills&#x2F;modern-web-guidance&#x2F;guides&#x2F;performance&#x2F;full-session-analytics.md#L52-L65" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance&#x2F;blob&#x2F;mai...</a><p>But yes, the skills do document compatibility and fallbacks well.
        • philipwalton3 hours ago
          Agreed the line can be blurry, but I want to stress that the goal of this project is NOT to push Chrome-only APIs on users.<p>The mental model we&#x27;ve been using on the team is:<p><i>If you hired an expert web development consultant to build X, what would they recommend as a best practice? When does it make sense to use the new API (because it provides real benefits) vs. when does it make sense to wait until it&#x27;s available everywhere?</i><p>To use your `fetchLater()` example, this is a case where the `fetchLater()` API legitimately solves a very real problem for people trying to build accurate analytics or telemetry features, see: <a href="https:&#x2F;&#x2F;nicj.net&#x2F;beaconing-in-practice&#x2F;" rel="nofollow">https:&#x2F;&#x2F;nicj.net&#x2F;beaconing-in-practice&#x2F;</a><p>And lots of companies actually are already using `fetchLater()` in production now because of its increased reliability.
          • cma2 hours ago
            I think I can guess from corporate incentives why Chrome supports fetchLater and some others don&#x27;t.
            • philipwalton1 hour ago
              It&#x27;s currently being added to WebKit: <a href="https:&#x2F;&#x2F;github.com&#x2F;WebKit&#x2F;WebKit&#x2F;pull&#x2F;73271" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;WebKit&#x2F;WebKit&#x2F;pull&#x2F;73271</a><p>Regarding corporate incentives: I was involved in the design of this API, so I know the history. It was proposed many years ago as a solution to make it easier for RUM analytics providers to measure Core Web Vitals metrics that needed to account for more than just page load (e.g. layout shifts and slow interactions can happen any time, not just during page load).<p>The RUM providers we worked with were reluctant to wait until page <i>unload</i> to send telemetry data because it resulted in too many lost beacons, so what they do instead is send beacons every few seconds with the most up-to-date payload.<p>The `fetchLater()` API enables them to send just one beacon, which is good for users and also reduces their server load.
              • ricardobeat3 minutes ago
                Why was &#x27;fetchLater&#x27; chosen over a reliable way to trigger fetch from &#x27;unload&#x27; or a similar event, or inversely, adding a &#x27;sendLater&#x27; option to sendBeacon? Feels like a bolted-on API for a very specific use case, when the same thing could be built from better primitives?<p>It&#x27;s a bit sad that browsers now have two different, &quot;standard&quot; APIs created entirely for the purpose of user tracking, as if things weren&#x27;t already bloated enough.
      • hatthew2 hours ago
        In my experience, it&#x27;s difficult to suggest something to an LLM in a way that it doesn&#x27;t interpret as a command, unless I explicitly list conditions (which it will take as law rather than guidance).
    • hackingonempty3 hours ago
      How about details&#x2F;summary?
      • philipwalton1 hour ago
        The details&#x2F;summary features are covered in the accordion guide here: <a href="https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides&#x2F;ui-components&#x2F;accordion" rel="nofollow">https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides...</a><p>If you scan to the bottom of the guide under the &quot;Fallback strategies&quot; section, you can see the recommendations for how to deal with the aspects of details&#x2F;summary that aren&#x27;t Baseline widely available (e.g. mutually exclusive details).
  • simonw5 hours ago
    Distribution suggestion: in addition to the npm packages you have right now, set up GitHub Pages to publish a markdown index document of the skills at <a href="https:&#x2F;&#x2F;googlechrome.github.io&#x2F;modern-web-guidance-src&#x2F;skills&#x2F;" rel="nofollow">https:&#x2F;&#x2F;googlechrome.github.io&#x2F;modern-web-guidance-src&#x2F;skill...</a> (currently a 404)<p>That index page should link to plain markdown versions of all of the documents, and should be designed for search with grep to find the right answers.<p>That way I don&#x27;t have to install anything at all - provided my agent has the ability to make HTTP requests I can tell it &quot;Look for tips on <a href="https:&#x2F;&#x2F;googlechrome.github.io&#x2F;modern-web-guidance-src&#x2F;skills&#x2F;" rel="nofollow">https:&#x2F;&#x2F;googlechrome.github.io&#x2F;modern-web-guidance-src&#x2F;skill...</a>&quot; and it will fetch the index, then navigate to the most relevant documents - no MCP or npm or installation required at all.
    • kinlan5 hours ago
      <a href="https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides.md.txt" rel="nofollow">https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides...</a><p>(we could make this clearer though)
      • paulirish5 hours ago
        Aye. I like the idea, Simon. The token cost of the index is high enough I wouldn&#x27;t suggest the technique for regular use but.. agree that for occasional users it should suffice.<p>We&#x27;ll make this happen. :)
      • kohukohunui4 hours ago
        It looks like the markdown has cross references that assume that the cli approach is used, it would be nice to separate the content from the tooling to access.
      • jph005 hours ago
        If you rename that file to &quot;llms.txt&quot; it&#x27;ll be a bit more discoverable.
        • kinlan4 hours ago
          yeah that&#x27;s fair. the infrastructure we are on isn&#x27;t the most flexible (we will soon move to a newer more custom platform but that&#x27;s a little way a way)
    • nico5 hours ago
      &gt; That way I don&#x27;t have to install anything at all<p>It feels that something like this would be the holy grail of agents. A small agent that has only the minimum necessary built in knowledge. The rest, it just retrieves on the fly when it needs (+ caching)<p>It’s like storing pointers&#x2F;links instead of the contents
      • mtrovo4 hours ago
        If created properly, skills are already something like that. You have a front matter summary always available to the agent. The agent can request the full skill content on demand, which might contain additional linked documents with details about APIs and schemas being used, deeper documents about niche subtopics, scripts to help with subtasks, etc.
      • paulirish5 hours ago
        In reality that&#x27;s pretty much what we got here. Very progressive disclosure centric. There&#x27;s a &#x27;install&#x27; command exists because the ecosystem doesn&#x27;t have good cross-agent ergonomics for installing skills. (Which bums me out).<p>But yeah.. big corpus of valuable context × minimal agent footprint = happy place.
    • trvz5 hours ago
      What’s the point of modern Javascript without over complicating things?
  • advisedwang5 hours ago
    Chrome already has too much power in the browser standards world. The last thing we need is everyone&#x27;s LLMs to follow Chrome team&#x27;s guidance on how to do web development. This road leads back to &quot;To view this site, please view in [DOMINANT BROWSER]&quot;
    • philipwalton5 hours ago
      Mozilla Firefox and Microsoft Edge are also contributors to this project, so this is a cross-browser initiative to help improve how agents build for the web.
      • troupo2 hours ago
        That&#x27;s why it seems to skip the most egregious of Chrome-only APIs and focuses on areas where there&#x27;s large cross-browser agreement.
        • philipwalton56 minutes ago
          Cross-browser compatibility has been a guiding principle for this project from the start. See: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;bo3i0FzDUYo?si=EqIgY_Kh_r_hSgdE&amp;t=686" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;bo3i0FzDUYo?si=EqIgY_Kh_r_hSgdE&amp;t=686</a><p>Also Mozilla only joined in the last few weeks, so they haven&#x27;t yet had a big influence on the project (though I expect they will going forward).
    • 0o7775 hours ago
      Both Mozilla and the Google Chrome team are part of the Web Baseline project and this project. They only recommend best practices supported by Chrome, Firefox, Edge, and Safari.<p><a href="https:&#x2F;&#x2F;web-platform-dx.github.io&#x2F;baseline&#x2F;" rel="nofollow">https:&#x2F;&#x2F;web-platform-dx.github.io&#x2F;baseline&#x2F;</a>
    • xnx5 hours ago
      Not my opinion, but I do wonder if sharing from a different repo would feel more neutral.
    • tonymet2 hours ago
      Let the best API win. why hold them back?
      • girvo48 minutes ago
        Because Google&#x2F;Chrome should’ve been split up under antitrust grounds, instead of the “too hard let’s not bother” judgment they ended up with.
        • tonymet19 minutes ago
          because the $200m+ spent public &amp; private on the Microsoft antitrust did a public service? talk about a farce and a waste of resources.<p>Google hardly has a monopoly. The app experience is very diverse. If anything, Apple is much more anticompetitive than Google.<p>Or is it that you resent any success?<p>Google gives away Chromium for free. Microsoft &amp; Linux distros use it.<p>Thanks, this is one of the most laughable comments of the day.
    • super2565 hours ago
      Calm your pitchfork, Mozilla and Edge are both part of Modern Web Guidance.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance-src&#x2F;blob&#x2F;main&#x2F;GOVERNANCE.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;GoogleChrome&#x2F;modern-web-guidance-src&#x2F;blob...</a>
  • ggregoire9 minutes ago
    Is there a similar project for React? There are so much bad React code and wrong&#x2F;old design patterns on the internet that surely ended in the training datasets
  • SoftTalker1 hour ago
    Remeber, the features you don&#x27;t use are the ones you don&#x27;t have to support, or scramble to replace when they are deprecated.<p>Keep your effing websites simple.
  • chalmovsky4 hours ago
    Amazing! I&#x27;m just writing an article about how Alex Russell&#x27;s quote about &#x27;React being a legacy technology&#x27; got, unfortunately, totally ignored.<p>And now this just fell in my lap! Some of the arguments I wanted to make seem to be provide here. Didn&#x27;t have a chance to take a proper look at it, but it looks very promising and nice!<p>Thank you!
  • phyzix57616 hours ago
    &quot;Best Practices&quot; are pretty much dead in the AI era. Pretty soon no one is going to read any of the code AI produces and that&#x27;s a scary thought.
    • paulirish6 hours ago
      IMO maintainability is the next frontier. If we just allow coding agents to accrete 1k-LOC solutions to problems, the codebases run quick away from our ability to maintain _some_ level of understanding.<p>So I&#x27;ll take a 1-line CSS solution over 60 lines of ResizeObserver&#x2F;setTimeout business. But.. best practices for frontend isn&#x27;t just the code.. it&#x27;s ensuring quality UX, that keyboard navigability works, that layout doesn&#x27;t shift on users.
      • noosphr3 hours ago
        You just regenerate the codebase, like how you do a recompile in C. Writing code is 2026 is worth as much as writing machine code was in 1996.
        • runeb1 minute ago
          Relevant post &quot;Regenerative Software&quot;<p><a href="https:&#x2F;&#x2F;aicoding.leaflet.pub&#x2F;3majnyfydzs2y&#x2F;l-quote&#x2F;10.0_0-10.3_30" rel="nofollow">https:&#x2F;&#x2F;aicoding.leaflet.pub&#x2F;3majnyfydzs2y&#x2F;l-quote&#x2F;10.0_0-10...</a>
      • aidos4 hours ago
        Once again, thank you for all the work you and the team have done to improve the web and the experience for developers working with it.
    • natorion6 hours ago
      Best practices are not dead if they result in better user experience. The focus is less on developer ergonomics though - true that.
    • sublinear5 hours ago
      The &quot;modern web primitives&quot; are also not even necessarily the &quot;best practice&quot;.<p>Browser-specific implementation gotchas tend to take about a decade to iron out for reasons that never have anything to do with code quality. Users are fickle and so are browser vendors, but that&#x27;s a different topic.<p>At the end of the day, there&#x27;s just no escaping lots of manual testing across device and browser combinations if your goal is a polished result and not just something that &quot;works&quot;.<p>AI has done nothing to make this problem go away. If anything, it&#x27;s made it worse because people don&#x27;t even want to look at the code now!
      • zeroq4 hours ago
        Exactly.<p>I&#x27;ve recently finished a browser game specifically targeting an old iPad Air 1 we had lying around the house.<p>I had a working version after a weekend, but it took me a month to make it run smoothly on an over 10 years old mobile device. And the most recent browser available is almost 10 years old.<p>Surprisingly I didn&#x27;t missed too many &quot;modern&quot; JS features, as these were mostly functional programming oriented which doesn&#x27;t play well with optimization anyways, and the ES6 was more than enough as a programming platform.<p>Anyway, what I&#x27;m trying to say is that &quot;the best practice&quot; should be making your apps fast and accessible - as much as you can without having to sacrifice something you value - instead of chasing the latest and shiniest.<p>Don&#x27;t be a fashion driven developer. :)
    • brlewis6 hours ago
      &gt;Pretty soon no one is going to read any of the code AI produces and that&#x27;s a scary thought.<p>This is a misconception. Have your favorite agent summarize this video for you: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;zcLPGC-tvgk?si=YR68aHlFESD053bh" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;zcLPGC-tvgk?si=YR68aHlFESD053bh</a>
      • ozim5 hours ago
        Ugh it is Uncle Bob, not going to torture AI with this guy.<p>But the fun part is that all of the proper software engineering practices are aimed at lowering amount of context a developer has to keep in his mind. So it directly applies to agent context. Less verbose code, less tokens to burn, separation of concerns, lower chance agent breaks something unrelated etc.
      • vik05 hours ago
        &gt;&gt;Pretty soon no one is going to read any of the code AI produces and that&#x27;s a scary thought.<p>&gt;This is a misconception. Have your favorite agent *summarize this video for you*: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;zcLPGC-tvgk?si=YR68aHlFESD053bh" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;live&#x2F;zcLPGC-tvgk?si=YR68aHlFESD053bh</a><p>I can&#x27;t tell if you&#x27;re joking here
        • brlewis5 hours ago
          I am not generally against using AI to reduce the amount of information you need to pay attention to, and I was not joking. There are multiple places in that interview with good articulation of the reasons why software fundamentals still matter, and what happens when you don&#x27;t look at at least some of the AI-generated code.
          • drawfloat4 hours ago
            Why don&#x27;t you just quote them then? Or quote whatever the LLM you used gave.
  • internet20003 hours ago
    NO THANK YOU. Do not want my agents to contribute to the Chrome monoculture. Chrome is the new IE6.
    • tonymet2 hours ago
      no it&#x27;s not. they publish the APIs. IE was bad because ActiveX was proprietary and private.
  • cadamsdotcom5 hours ago
    Planning to give this one a wide berth.<p>The more &quot;legacy code&quot; is getting written everyday the more the web will be forced to remain backwards compatible...
  • halflife6 hours ago
    Finally.<p>This is exactly what I need when I need it. The amount of pull requests I reviewed with a mess of codes that can be switched to 2 lines of modern features made me write such tools myself, only half assed since I have other things to do.
  • pyrolistical3 hours ago
    I asked my agent to look at that list and only apply things that work on chrome, Firefox, safari iOS and safari macos<p>Came up with a good list for my project
  • fumar5 hours ago
    I added this a few months ago and Claude Doctor has not removed it. It must be working and getting use.
  • codepoet802 hours ago
    I want the opposite of this. I want compatible code -- which is really hard, when there are so many eras to target. So far AI has done a great job of finding that sweet spot -- why would I want a tool that encourages the agent to write less compatible code?
  • adzm3 hours ago
    I find this very useful as a human as well
  • gabrieledarrigo5 hours ago
    That&#x27;s pretty cool!<p>On the other hand, a bit sad: programming nowadays is just arranging a bunch of Markdown files, possibly generated by another bunch of models.<p>Not so exciting, in the end.
  • SoftTalker1 hour ago
    &gt; We wanted receipts, so we invested heavily in eval infra to help us hill-climb, but also to identify when knowledge is common enough we can prune our guides.<p>Good god.
    • paulirish1 hour ago
      what? oh. I mean.. I wrote it all with my lil fingies, but I did pack some jargon in there. :) More plainly...<p>We built rigorous tests to verify this actually works, and to know when models no longer need the advice.
    • rewgs51 minutes ago
      &quot;hill-climb&quot; is the most aggressively LinkedIn speak I&#x27;ve ever encountered in the wild.
  • dallen333 hours ago
    Paul Irish?? There&#x27;s a name I haven&#x27;t though about in ages! I remember following you on Twitter and your website was full of amazing information. Hope you&#x27;re doing well!
  • reedlaw5 hours ago
    These skills look better than most, but running my code through the legacy scan only found two issues. So while I still think training beats skills, I&#x27;m sure this has its place, especially with weaker models.
    • paulirish5 hours ago
      Yeah. The legacy scan is tuned to 1) focus on cases where there&#x27;s a clearly detectable legacy pattern and 2) avoid false-positives. This means it only overlaps with 20% of all the skill&#x27;s docs. (We&#x27;ll probably get it to ~50% in another month).<p>In short: I 100% understand your disappointment. :) More coming soon like finding cases to update with Promise.withResolvers, the Array iterators, Object.groupBy, URLSearchParams, etc..
  • mococa3 hours ago
    More Chromish on web? No thanks.
  • zeroq5 hours ago
    What&#x27;s the best way to introduce this to a Gemini chat?
    • paulirish4 hours ago
      Gemini web? Probably simonw&#x27;s strat from the top comment.<p>There&#x27;s a plugin for Antigravity that&#x27;s listed on initial setup (yay bundleware! :) but... yeah if you&#x27;re using consumer gemini, i&#x27;d switch to the Tasks mode because it&#x27;s more agentic nature helps.<p>In fact I just did this and it works. :p It regular Gemini, it said it did but kinda liked :) So there it&#x27;d be<p>&gt; Create a perfect HTML contact form with address fields. Check <a href="https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides.md.txt" rel="nofollow">https:&#x2F;&#x2F;developer.chrome.com&#x2F;docs&#x2F;modern-web-guidance&#x2F;guides...</a> — read completely, don&#x27;t stop at truncation.
    • yh113 hours ago
      why would you ever use gemini for coding at all
      • zeroq3 hours ago
        Argon is not available in agy for Pro users.
  • dazhbog1 hour ago
    I ask my agent to write ES5 as I am more comfortable with it.. i need to read and maintain that slop somehow..
  • tonymet3 hours ago
    I recommend saying &quot;contemporary&quot; or &quot;suggested&quot; for transient proposals like this. Having modern change every few years is ambiguous and cliche .<p>These concepts are new, so no one knows if they are any good. They&#x27;re not modern -- who knows if they will even be put to use?<p>&quot;contemporary&quot;, &quot;proposed&quot;, &quot;suggested&quot;, &quot;compatible&quot; are better fit. I wouldn&#x27;t dare use &quot;advanced&quot; because many APIs and proposals actually regress earlier behavior.
  • j455 hours ago
    This is a great idea. I think while so much was being built out in the JavaScript ecosystem, awareness about the equivalent feature releases that were done to HTML, CSS, web components, and other technologies didn&#x27;t keep pace.<p>Of course, it&#x27;s not perfectly implemented the same in every browser, but that&#x27;s nothing new.
  • OneThingWell18 minutes ago
    [flagged]
  • theresanagent4 hours ago
    [flagged]
  • Cloudtheboi5 hours ago
    [flagged]
  • k0morebi4 hours ago
    [dead]
  • KallowayThayer5 hours ago
    [flagged]
  • PenguinRevolver5 hours ago
    I use Firefox after Chrome decided to become a bit of a pain to use on my powerful computers. I was unsure how bias the skills were for Chrome exclusive features, so I decided to ask ChatGPT to analyse the repo. I liked the answer it gave, so here it is: <a href="https:&#x2F;&#x2F;chatgpt.com&#x2F;share&#x2F;6af3712a-03cc-83eb-ad1f-66dd11c886bb" rel="nofollow">https:&#x2F;&#x2F;chatgpt.com&#x2F;share&#x2F;6af3712a-03cc-83eb-ad1f-66dd11c886...</a>
  • cyanydeez6 hours ago
    I treat all my code as some kind of stochastic machinery. So atleast one stage, I&#x27;d just tell an agent to go through and follow the guide.<p>But I&#x27;d not inject all this fluff into the wheels of the machine because it&#x27;d just take the &quot;average&quot; of these practices which would be just as useless.