<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Web Weekly</title>
    <description>The latest articles on DEV Community by Web Weekly (@webweekly).</description>
    <link>https://dev.to/webweekly</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10338%2Fa3a6cc35-bef2-480a-94b8-ef65ab4849c1.png</url>
      <title>DEV Community: Web Weekly</title>
      <link>https://dev.to/webweekly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/webweekly"/>
    <language>en</language>
    <item>
      <title>Web Weekly 171 — ::details-content goes baseline, the `closed-by` attribute, and `field-sizing: content`.</title>
      <dc:creator>Stefan Judis</dc:creator>
      <pubDate>Tue, 21 Oct 2025 04:10:00 +0000</pubDate>
      <link>https://dev.to/webweekly/web-weekly-171-details-content-goes-baseline-the-closed-by-attribute-and-field-sizing-4f5c</link>
      <guid>https://dev.to/webweekly/web-weekly-171-details-content-goes-baseline-the-closed-by-attribute-and-field-sizing-4f5c</guid>
      <description>&lt;h2&gt;
  
  
  Guten Tag! Guten Tag! 👋
&lt;/h2&gt;

&lt;p&gt;Do you know what core web vitals metrics work across browsers? Have you used the &lt;code&gt;closed-by&lt;/code&gt; attribute? And is AI really saving time?&lt;/p&gt;

&lt;p&gt;Turn on the Web Weekly tune and find some answers below. Enjoy!&lt;/p&gt;




&lt;p&gt;Kate listens to &lt;a href="https://www.youtube.com/watch?v=VgakpSoHEiE" rel="noopener noreferrer"&gt;"Dick Around" by Sparks&lt;/a&gt; and says:&lt;/p&gt;

&lt;p&gt;"I'm not saying this is my work anthem, but every day, every day, every night, every night..."&lt;/p&gt;

&lt;p&gt;Do you want to share your favorite song with the Web Weekly community? &lt;a href="//mailto:stefan@webweekly.email"&gt;Hit reply&lt;/a&gt;; there are &lt;strong&gt;five more songs&lt;/strong&gt; left in the queue.&lt;/p&gt;




&lt;p&gt;Last week, &lt;a href="https://www.stefanjudis.com/blog/web-weekly-170/" rel="noopener noreferrer"&gt;I opened Web Weekly with CSS functions (&lt;code&gt;@function&lt;/code&gt;)&lt;/a&gt; and how they can be used to create a custom &lt;code&gt;--light-dark()&lt;/code&gt; function. I learned some things from the reactions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/light-dark" rel="noopener noreferrer"&gt;The existing &lt;code&gt;light-dark()&lt;/code&gt; function&lt;/a&gt; only works with color values. Why's that?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bram.us/2023/10/09/the-future-of-css-easy-light-dark-mode-color-switching-with-light-dark/#schemed-value" rel="noopener noreferrer"&gt;Bramus blogged about it back in 2023&lt;/a&gt; and the answer is to ship &lt;em&gt;something&lt;/em&gt;. The main idea that led to &lt;code&gt;light-dark()&lt;/code&gt; was to have a flexible &lt;code&gt;schemed-value()&lt;/code&gt; function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc4nzmvq1kzbx6c1l2n2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc4nzmvq1kzbx6c1l2n2.png" alt="Screenshot 2025-10-20 at 13.59.23:root {   color-scheme: dark light custom; }  body {   color: schemed-value(     light hotpink,                dark lime,                    --custom rebeccapurple      ); }" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specifications are complicated and folks preferred to ship &lt;code&gt;light-dark()&lt;/code&gt; over figuring out how to have a highly dynamic function which might have taken "a while". If you want to follow further conversations, here's a spec issue discussing &lt;a href="https://github.com/w3c/csswg-drafts/issues/12513" rel="noopener noreferrer"&gt;how &lt;code&gt;light-dark()&lt;/code&gt; could work for images&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But are there other ways to change non-color styles based on the current color scheme? &lt;a href="https://bsky.app/profile/anatudor.bsky.social/post/3m3at3skvnk2w" rel="noopener noreferrer"&gt;Ana advocated for a boolean toggle trick&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kzk72gllvwcq9wb1smr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kzk72gllvwcq9wb1smr.png" alt=".my-elem {   border: solid;   border-width: calc(var(--dark)*var(--b1) + var(--light)*var(--b0));   background: url(light.svg), url(dark.svg);   background-size: calc(var(--light)*100%), calc(var(--dark)*100%) }" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To be honest, I'm not the biggest fan of these because they're unreadable in my opinion, but hey... use what works for you.&lt;/p&gt;




&lt;p&gt;If you enjoy Web Weekly, share it with your friends and family.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🦋 &lt;a href="https://bsky.app/profile/stefanjudis.com/post/3m3ofwmibtk2z" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐘 &lt;a href="https://front-end.social/@stefan/115410072903641500" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 &lt;a href="https://www.linkedin.com/posts/stefan-judis_with-a-bit-of-delay-because-the-internet-activity-7386245409985277954-wUEs" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick "repost" really helps this indie newsletter out. Thank you! ❤️&lt;/p&gt;




&lt;h2&gt;
  
  
  Something that made me smile this week
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13vek9p9204iwri2javk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13vek9p9204iwri2javk.png" alt="Previews of multiple 3d web portfolios" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I admire people that take the time and effort to create truly unique online portfolios. This post highlights 6 personal websites of which I really don't want to know how long it took to create them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mattcool.tech/posts/amazing-web-portfolios" rel="noopener noreferrer"&gt;Stand out&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  No code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tetralogical.com/blog/2025/10/14/common-misconceptions-about-screen-readers/" rel="noopener noreferrer"&gt;Common misconceptions about screen readers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/blog/2025/w3c-logo-refresh-more-than-a-cosmetic-change-a-small-step-towards-durable-and-sustainable-success/" rel="noopener noreferrer"&gt;The W3C has a new logo!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://herman.bearblog.dev/being-present/" rel="noopener noreferrer"&gt;Smartphones and being present&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Are editor themes too "loud"?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhudc8w5ffjyk12e6smi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzhudc8w5ffjyk12e6smi.png" alt="Limit the number of different color to what you can remember." width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've been happily using the seti theme for years because it's colorful and bright. Niki argues that most themes out there highlight too much. And what should I say, I think he's right and I'll give another theme a try!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tonsky.me/blog/syntax-highlighting/" rel="noopener noreferrer"&gt;Calm your editor&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;closed-by=any&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//images.ctfassets.net/f20lfrunubsq/1aM0fGLHBo6GwKRC1oUTfn/dd610ec93f01bfd92d4ba39fed0a856d/Screenshot_2025-10-20_at_14.50.55.png" class="article-body-image-wrapper"&gt;&lt;img src="//images.ctfassets.net/f20lfrunubsq/1aM0fGLHBo6GwKRC1oUTfn/dd610ec93f01bfd92d4ba39fed0a856d/Screenshot_2025-10-20_at_14.50.55.png" alt="&amp;lt;dialog closedBy=&amp;quot;any&amp;quot;&amp;gt;   &amp;lt;p&amp;gt;Hi, I'm a dialog.&amp;lt;/p&amp;gt; &amp;lt;/dialog&amp;gt;"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adam argues that there aren't enough people talking about &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy" rel="noopener noreferrer"&gt;the &lt;code&gt;closed-by&lt;/code&gt; attribute&lt;/a&gt;. And he's right!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;closed-by&lt;/code&gt; is the declarative way to tell open dialogs when they should close. The property doesn't work in Safari yet, but you can bring in a short JS snippet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nerdy.dev/closedby-any" rel="noopener noreferrer"&gt;Declare&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When the virtual keyboard messes with your viewport
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fggqohbg72bv1me2dyitq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fggqohbg72bv1me2dyitq.png" alt='&amp;lt;meta name="viewport"    content="width=device-width,             initial-scale=1.0,             interactive-widget=resizes-content"&amp;gt;' width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Maybe you know the problem, you're on your phone, want to edit some data, the virtual keyboard opens and whoops, important fixed-positioned elements are gone. Where did they go?&lt;/p&gt;

&lt;p&gt;Bramus explained how the different viewports (yes, multiple!) are affected by the keyboard and how the fairly new &lt;code&gt;interactive-widget&lt;/code&gt; meta element value can help.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://htmhell.dev/adventcalendar/2024/4/" rel="noopener noreferrer"&gt;Embrace the view(port)&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;header&lt;/code&gt; and &lt;code&gt;footer&lt;/code&gt; elements change their roles
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3ag5k3gq074oycn273x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3ag5k3gq074oycn273x.jpg" alt="Footer elements on the root level get  raw `contentinfo` endraw  assigned whereas  raw `footer` endraw  elements in a  raw `main` endraw  element get  raw `sectionfooter` endraw , " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You're probably using &lt;code&gt;header&lt;/code&gt; and &lt;code&gt;footer&lt;/code&gt; elements to improve HTML semantics and accessibility, but do you know that the elements don't always get their initial ARIA roles assigned?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/header-and-footer-elements-lose-their-roles-in-sectioning-content/" rel="noopener noreferrer"&gt;Give some structure&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Wowza! Would you enjoy getting &lt;a href="https://www.webweekly.email" rel="noopener noreferrer"&gt;Web Weekly&lt;/a&gt; straight to your inbox?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The wonderful weird web – spurious correlations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcsdlndcce81zzh8p58x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcsdlndcce81zzh8p58x.png" alt="Correlation between " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've got nothing but love for the person maintaining this site highlighting correlations that don't look "quite right".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tylervigen.com/spurious-correlations" rel="noopener noreferrer"&gt;Check the numbers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;field-sizing&lt;/code&gt; works for &lt;code&gt;input&lt;/code&gt; and &lt;code&gt;select&lt;/code&gt; elements, too!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhveyhux56eqaz795o8l2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhveyhux56eqaz795o8l2.gif" alt="Input, select and textarea elements expanding depending on the content." width="626" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a quick one: have you heard about the &lt;code&gt;field-sizing&lt;/code&gt; property? The new prop allows form controls to grow depending on their content. I thought this will only be about &lt;code&gt;textarea&lt;/code&gt;s, but it works for &lt;code&gt;input&lt;/code&gt; and &lt;code&gt;select&lt;/code&gt; elements, too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/field-sizing-is-about-more-than-textareas/" rel="noopener noreferrer"&gt;Grow!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  25 CSS you should know
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59jatoaxnoybla70lvuv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59jatoaxnoybla70lvuv.png" alt="Adam on stage next to his slides showing @property" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's Adam giving a whirlwind tour about the latest and greatest CSS features. It'll be well worth your time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=QW6GECIzvsw" rel="noopener noreferrer"&gt;Watch the talk&lt;/a&gt; &lt;a href="https://cascadiajs-2025.netlify.app/" rel="noopener noreferrer"&gt;Check the slides&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Is AI really saving time?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9l90jrhje1tqf431xsk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9l90jrhje1tqf431xsk.png" alt="But whenever someone uses an LLM to generate text, images or code in seconds, their time saving (if real at all) could cost someone else hours." width="800" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Theoretically, this post belongs in the "No code" section but Hidde phrased all my thoughts way better than I could, so that I want to highlight it. If you question AI time savings, you should read it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hidde.blog/time-saving-time-wasting/" rel="noopener noreferrer"&gt;Evaluate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  More perf metrics in more browsers!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufx6clh585u1riti5ruk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufx6clh585u1riti5ruk.png" alt="Core Web Vitals and their support info. LCP (Chromium, Firefox, Safari TP), INP (Chromium, Firefox, Safari TP) and CLS (Chromium)" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When Google started pushing the Core Web Vitals metrics, they were pretty much a Chromium-only thing. Which was a bummer, because then we couldn't measure the experience of people using other browsers.&lt;/p&gt;

&lt;p&gt;The competition is slowly catching up though! Let me share some web vitals news:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/144#apis" rel="noopener noreferrer"&gt;Firefox 144 shipped &lt;code&gt;interactionId&lt;/code&gt;&lt;/a&gt; as part of the PerformanceEventTiming so that you can now evaluate the INP metric&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webkit.org/blog/17447/release-notes-for-safari-technology-preview-229/" rel="noopener noreferrer"&gt;Safari TP 229 supports INP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webkit.org/blog/17504/release-notes-for-safari-technology-preview-230/" rel="noopener noreferrer"&gt;Safari TP 230 supports LCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you now want to gather all these metrics across browsers, use &lt;a href="https://github.com/GoogleChrome/web-vitals" rel="noopener noreferrer"&gt;Google's &lt;code&gt;web-vitals&lt;/code&gt; library&lt;/a&gt; which should work for all browsers. Happy measuring!&lt;/p&gt;

&lt;h2&gt;
  
  
  Yet another CSS reset
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yn91agmnbqajdjg63om.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yn91agmnbqajdjg63om.png" alt=":where(div, article, header, footer) {   /* ...and other block elements */   display: flex;   flex-direction: column; } 2025-10-20 at 14.22.11" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paweł joined the club of people blogging about their CSS reset preferences (I'm still flying without... 🫣). The post includes some good opinions and lots of links to go deeper! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://pawelgrzybek.com/the-css-reset-again/" rel="noopener noreferrer"&gt;Reset&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Random MDN – &lt;code&gt;Object.freeze()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fhffg7jhc5jl3w44kzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fhffg7jhc5jl3w44kzz.png" alt="// Freeze. const o = Object.freeze(obj);  // The object has become frozen. Object.isFrozen(obj); // === true" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the unlimited MDN knowledge archive...&lt;/p&gt;

&lt;p&gt;Did you know that you can freeze JavaScript objects? Now you do. 🫵&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze" rel="noopener noreferrer"&gt;Freeze!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New on the baseline
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyk1symg36i2bz0t7lpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyk1symg36i2bz0t7lpt.png" alt="details::details-content {   opacity: 0;   transition:     opacity 600ms,     content-visibility 600ms allow-discrete; }  details[open]::details-content {   opacity: 1; }" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you already celebrate that &lt;code&gt;::details-content&lt;/code&gt; went into the baseline with Firefox 143? If not, now's the time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/::details-content" rel="noopener noreferrer"&gt;Spice up all these details&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three valuable projects to have a look at
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/bodadotsh/npm-security-best-practices" rel="noopener noreferrer"&gt;bodadotsh/npm-security-best-practices&lt;/a&gt; – How to stay safe from NPM supply chain attacks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/lirantal/npq" rel="noopener noreferrer"&gt;lirantal/npq&lt;/a&gt; – Safely install npm packages by auditing them pre-install stage.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/bgreenwell/doxx" rel="noopener noreferrer"&gt;bgreenwell/doxx&lt;/a&gt; – Expose the contents of &lt;code&gt;.docx&lt;/code&gt; files without leaving your terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A new Tiny Helper
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zm412ls9t0a9nxwyxvj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zm412ls9t0a9nxwyxvj.png" alt="Create Beautiful Charts and Graphs Online  Transform your data into stunning visualizations with our free, powerful chart maker. No downloads, no sign-ups—just beautiful charts in seconds." width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I must admit, this one is really cool! You can enter "Make Graph" put some data in and get some graphs out. I can totally see myself using this to create visualizations without code or Excel!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://makegraph.app/" rel="noopener noreferrer"&gt;Graph it!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find more single-purpose online tools on &lt;a href="https://tiny-helpers.dev/" rel="noopener noreferrer"&gt;tiny-helpers.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thought of the week
&lt;/h2&gt;

&lt;p&gt;You've probably noticed that I'm an RSS fan boy, so it's no surprise that Molly's post &lt;a href="https://www.citationneeded.news/curate-with-rss/" rel="noopener noreferrer"&gt;"Curate your own newspaper with RSS"&lt;/a&gt; was right down my alley.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Using RSS is a way to regain control over the information you read online.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Do you enjoy Web Weekly? | Did you learn something from this issue?
&lt;/h2&gt;

&lt;p&gt;❤️ If so, &lt;strong&gt;join 25 other Web Weekly supporters&lt;/strong&gt; and give back with a small monthly donation on &lt;a href="https://www.patreon.com/stefanjudis" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt; or &lt;a href="https://github.com/sponsors/stefanjudis/" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is all, friends!
&lt;/h2&gt;

&lt;p&gt;Loved this email? Hated this email? I want to hear about it!&lt;/p&gt;

&lt;p&gt;If you think something needs improvement or something sparked some joy, &lt;a href="//mailto:stefan@webweekly.email"&gt;reply to this email because I want to know more&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;And with that, take care of yourself - mentally, physically, and emotionally.&lt;/p&gt;

&lt;p&gt;I'll see you next week! 👋&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>css</category>
    </item>
    <item>
      <title>🧢 Web Weekly newsletter 152 — Interop 2025, console.context() and Number.POSITIVE_INFINITY</title>
      <dc:creator>Stefan Judis</dc:creator>
      <pubDate>Wed, 19 Feb 2025 04:14:43 +0000</pubDate>
      <link>https://dev.to/webweekly/web-weekly-newsletter-152-interop-2025-consolecontext-and-numberpositiveinfinity-27o6</link>
      <guid>https://dev.to/webweekly/web-weekly-newsletter-152-interop-2025-consolecontext-and-numberpositiveinfinity-27o6</guid>
      <description>&lt;h2&gt;
  
  
  Guten Tag! Guten Tag! 👋
&lt;/h2&gt;

&lt;p&gt;What can we expect from Interop 2025? How can you give your &lt;code&gt;console.log&lt;/code&gt; statements more &lt;code&gt;context()&lt;/code&gt;? Is using gifs generally a good idea?&lt;/p&gt;

&lt;p&gt;Turn on the Web Weekly tune and find all the answers below. Enjoy!&lt;/p&gt;




&lt;p&gt;&lt;a href="https://pawelgrzybek.com/" rel="noopener noreferrer"&gt;Pawel&lt;/a&gt; listens to &lt;a href="https://youtu.be/Osy54f7FQno" rel="noopener noreferrer"&gt;“9th Wonder - LoveKiss”&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can listen to this beat in a loop for the whole day. Just so good!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you want to share your favorite song with the Web Weekly community? &lt;a href="//mailto:stefan@webweekly.email"&gt;Hit reply&lt;/a&gt;; there are &lt;strong&gt;three more songs&lt;/strong&gt; left in the queue.&lt;/p&gt;




&lt;p&gt;If you enjoy Web Weekly, let others know by reposting it on your favorite social network. It really helps me grow this newsletter into something "real". 🫣&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🦋 &lt;a href="https://bsky.app/profile/stefanjudis.com/post/3lifu75igyc2z" rel="noopener noreferrer"&gt;Bluesky&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐘 &lt;a href="https://front-end.social/@stefan/114021739969444684" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 &lt;a href="https://www.linkedin.com/posts/stefan-judis_you-might-know-that-im-running-this-small-activity-7297392706404700160-Xkpo" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you! 💙&lt;/p&gt;




&lt;p&gt;The browser makers came together and decided on the focus areas of Interop 2025. &lt;/p&gt;

&lt;p&gt;And if you now think, "Oh well... again, new stuff!?", I get it. However, the features included in Interop aren't browser APIs working in a single browser for the next decade. The promise is that all browsers support the listed features this year. These Interop features are supposed to enter the web soon'ish. For realz.&lt;/p&gt;

&lt;p&gt;The Interop focus areas this year include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CSS anchor positioning&lt;/li&gt;
&lt;li&gt;Core Web Vitals&lt;/li&gt;
&lt;li&gt;&lt;code&gt;::details-content&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;import ... with { type: "json" }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;CSS &lt;code&gt;@scope&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;View Transitions&lt;/li&gt;
&lt;li&gt;and many more things...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/web-platform-tests/interop/blob/main/2025/README.md#modules" rel="noopener noreferrer"&gt;The "official Interop 2025 docs" are a good read&lt;/a&gt;, so check them out!&lt;/p&gt;

&lt;p&gt;But what's the current state and where are we today?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdzjaabcs71sgju180vr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdzjaabcs71sgju180vr.png" alt="Interop 2025 Dashboard showing that chromium is on a score 88 - 91, Firefox 52 and Safari at 55." width="800" height="761"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unsurprisingly, Chromium is leading the way in terms of new features, but I expect that things will move fast.&lt;/p&gt;

&lt;p&gt;I'm quite happy with Interop 2025, but if you're game for some critical thoughts, of course, &lt;a href="https://bsky.app/profile/infrequently.org/post/3li4ig3bjmsqf" rel="noopener noreferrer"&gt;Alex Russel never disappoints and shares some spicy takes&lt;/a&gt;.🌶️&lt;/p&gt;




&lt;h2&gt;
  
  
  Something that made me smile this week
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0j9bge60a0ykcjcg0e3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0j9bge60a0ykcjcg0e3.png" alt="GitHub contribution graph stickers forming the word " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I resisted for over a year and didn't put stickers on my computer, but these are just too good!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.etsy.com/listing/1855699284/fake-developer-github-contribution-graph" rel="noopener noreferrer"&gt;Be a fake developer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New on the blog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TIL: &lt;a href="https://www.stefanjudis.com/today-i-learned/iterate-typescript-union-type/" rel="noopener noreferrer"&gt;How to iterate over TypeScript union types&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let's stop using animated gifs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Far9mpafxhmhb6yomwi26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Far9mpafxhmhb6yomwi26.png" alt="Animated GIFs are everywhere you look: from social media and messaging services, to email and even on websites. So how do we use them accessibly? I’m afraid to say, the most accessible way to use animated GIFs is probably not to use them at all." width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oldie but goldie: Martin makes some good points against using animated gifs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tempertemper.net/blog/accessible-animated-gifs-are-pointless" rel="noopener noreferrer"&gt;Reconsider&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  LCP !== LCP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxbg5ei2pji0gsksozr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxbg5ei2pji0gsksozr9.png" alt="Matt explaining LCP metrics" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did you know that not every element is considered a valid LCP element? Or are you aware that Chromium and Firefox evaluate the LCP elements differently? Matt explains the details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=aX7VRto8gVE" rel="noopener noreferrer"&gt;Understand LCP&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we should consider searchability
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61f9allqhgbxb4lj18x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61f9allqhgbxb4lj18x3.png" alt='&amp;lt;a href="https://draft.community" aria-label="Slack"&amp;gt;   &amp;lt;svg.../&amp;gt;   &amp;lt;span class="hidden-until-found" hidden="until-found"&amp;gt;Slack&amp;lt;/span&amp;gt; &amp;lt;/a&amp;gt;' width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do you search for things on a web page? You might &lt;code&gt;CMD+f&lt;/code&gt; all the things. If you do, you've probably also encountered situations when a simple text search doesn't work.&lt;/p&gt;

&lt;p&gt;Schepp explains how to make content findable for the built-in browser search and assistive technology using &lt;code&gt;hidden="until-found"&lt;/code&gt; and some CSS trickery.&lt;/p&gt;

&lt;p&gt;It's an excellent post, and I wonder if this approach will become a &lt;code&gt;.sr-only&lt;/code&gt; class replacement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://schepp.dev/posts/rethinking-find-in-page-accessibility-making-hidden-text-work-for-everyone/" rel="noopener noreferrer"&gt;Make things searchable&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;console.context()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstcfdp5t8anhs6ocwhuk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstcfdp5t8anhs6ocwhuk.png" alt="// let's create a custom logger const myLogger = console.context('my-logger') myLogger.log('hello from my logger')" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today I learned that the Chromium &lt;code&gt;console&lt;/code&gt; includes a &lt;code&gt;context()&lt;/code&gt; method that allows you to create loggers, which you can easily filter in the JavaScript console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devtoolstips.org/tips/en/create-contextual-console-loggers/" rel="noopener noreferrer"&gt;Filter your logs&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;You're halfway through! Would you enjoy getting &lt;a href="https://www.webweekly.email" rel="noopener noreferrer"&gt;Web Weekly&lt;/a&gt; straight to your inbox?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The wonderful weird web – Floor796
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl529sho1cpyc0bhpxvqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl529sho1cpyc0bhpxvqw.png" alt="Scene from Floor796" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Floor796 is an absolute classic created in 2018, and the animated space station includes areas with a gazillion tiny details. The fun thing: the project is still being worked on and extended.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://floor796.com" rel="noopener noreferrer"&gt;Discover things&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Is AI hindering new tech adoption?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxta1iyr7d4u3szggh34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxta1iyr7d4u3szggh34.png" alt="The cutoff means that models are strictly limited in knowledge up to a certain point. For instance, Anthropic’s latest models have a cutoff of April 2024, and OpenAI’s latest models have cutoffs of late 2023." width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm really trying to lean into some AI coding features, but with all these new browser features shipping daily, I would be lying if I said I'm not concerned about the AI knowledge cut-off.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vale.rocks/posts/ai-is-stifling-tech-adoption" rel="noopener noreferrer"&gt;Be aware of the new stuff&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Speculation rules on &lt;code&gt;google.com&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdygtl4rf3yc44f5ehak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdygtl4rf3yc44f5ehak.png" alt="{ " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might have heard of the Chromium-only &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API" rel="noopener noreferrer"&gt;Speculation Rules&lt;/a&gt;. They're supposed to be a &lt;code&gt;prefetch&lt;/code&gt; / &lt;code&gt;prerender&lt;/code&gt; alternative.&lt;/p&gt;

&lt;p&gt;I learned that Google Search ships them in production, and their implementation includes many tips and tricks about things to consider. I mean look at this snippet, &lt;code&gt;"anonymous-client-ip-when-cross-origin"&lt;/code&gt;, what? 🤯&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.chrome.com/blog/search-speculation-rules" rel="noopener noreferrer"&gt;Speculate&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A 💙 for CSS grid
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u1bj9gporo7as16juwc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u1bj9gporo7as16juwc.png" alt="An extensive definition of grid-template-areas." width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just love it when I see CSS grids being used for more than putting columns next to each other.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloudfour.com/thinks/faux-containers-in-css-grids/" rel="noopener noreferrer"&gt;Power up your grids&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A massive Node.js ecosystem update
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhx5mtmprlampmzrfbfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhx5mtmprlampmzrfbfs.png" alt="This change means that when Node.js 18 reaches end-of-life (EOL) in April 2025, library maintainers can finally drop their CJS builds and ship ESM-only packages with confidence." width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This news might only be important for package maintainers, but after all these years of dancing the endless CommonJS vs ECMAScript modules dance, it's finally time to embrace modules.&lt;/p&gt;

&lt;p&gt;Node.js 20 and higher versions can now &lt;code&gt;require&lt;/code&gt; ECMAScript modules, which means that when Node.js 18 reaches the end of life in April, everybody can drop all these build steps compiling multiple module systems and "just ship" modules.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://socket.dev/blog/require-esm-backported-to-node-js-20" rel="noopener noreferrer"&gt;Go all-in with modules&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Random MDN – &lt;code&gt;Number.POSITIVE_INFINITY&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hl7i6tusiqjck1v35em.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hl7i6tusiqjck1v35em.png" alt="function checkNumber(bigNumber) {   if (bigNumber === Number.POSITIVE_INFINITY) {     return " width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the unlimited MDN knowledge archive...&lt;/p&gt;

&lt;p&gt;Here's one of the many famous JavaScript quirks: did you know there's a static data property called &lt;code&gt;POSITIVE_INFINITY&lt;/code&gt;? Now you do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY" rel="noopener noreferrer"&gt;Discover infinity&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TIL recap – media query boolean contexts
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F664y3wg9lsf5lcx5vg4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F664y3wg9lsf5lcx5vg4z.png" alt="@media screen and (prefers-contrast) { }" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a trick question: what values will be matched for the &lt;code&gt;prefers-contrast&lt;/code&gt; media feature query when you omit the value and use the so called "boolean context"?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/user-preference-feature-queries-have-a-boolean-context/" rel="noopener noreferrer"&gt;Query features!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find more short web development learnings in &lt;a href="https://www.stefanjudis.com/today-i-learned/" rel="noopener noreferrer"&gt;my "Today I learned" section&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New on the baseline — Styling scrollbars
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpl7x1j999191mubgje5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpl7x1j999191mubgje5.png" alt="Demo showing the scrollbar styling options" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Short'n'sweet: if styling the scrollbar is your jam, &lt;code&gt;scrollbar-color&lt;/code&gt; and &lt;code&gt;scrollbar-width&lt;/code&gt; work across modern browsers now!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://web.dev/blog/baseline-scrollbar-props" rel="noopener noreferrer"&gt;Be on brand&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three valuable projects to have a look at
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/yassinebenaid/bunster" rel="noopener noreferrer"&gt;yassinebenaid/bunster&lt;/a&gt; – Compile shell scripts to static binaries.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/GyulyVGC/sniffnet" rel="noopener noreferrer"&gt;GyulyVGC/sniffnet&lt;/a&gt; – Comfortably monitor your Internet traffic.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/PatrickJS/awesome-cursorrules" rel="noopener noreferrer"&gt;PatrickJS/awesome-cursorrules&lt;/a&gt; – A list of awesome &lt;code&gt;.cursorrules&lt;/code&gt; files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A new Tiny Helper
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju74dh62ek0x4wfem0d7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju74dh62ek0x4wfem0d7.png" alt="Video Compressor — Compress videos right in the browser by up to 90% for free. No upload needed." width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Addy continues his tooling journey! There are now &lt;a href="https://bg.addy.ie/" rel="noopener noreferrer"&gt;a tool to remove backgrounds from images&lt;/a&gt;, &lt;a href="https://squish.addy.ie/" rel="noopener noreferrer"&gt;a tool to compress images&lt;/a&gt; and the newest member — a tool to compress videos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://compress.addy.ie/" rel="noopener noreferrer"&gt;Compress your videos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find more single-purpose online tools on &lt;a href="https://tiny-helpers.dev/" rel="noopener noreferrer"&gt;tiny-helpers.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thought of the week
&lt;/h2&gt;

&lt;p&gt;In the spirit of the web platform, &lt;a href="https://csswizardry.com/2025/01/build-for-the-web-build-on-the-web-build-with-the-web/" rel="noopener noreferrer"&gt;here's some wisdom from Harry&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every layer of abstraction made in the browser moves you further from the platform, ties you further into framework lock-in, and moves you further away from fast.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Did you learn something from this issue?
&lt;/h2&gt;

&lt;p&gt;💙 If so, &lt;strong&gt;join 21 other Web Weekly readers&lt;/strong&gt; and give back with a small monthly donation on &lt;a href="https://www.patreon.com/stefanjudis" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt; or &lt;a href="https://github.com/sponsors/stefanjudis/" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is all, friends!
&lt;/h2&gt;

&lt;p&gt;Loved this email? Hated this email? I want to hear about it!&lt;/p&gt;

&lt;p&gt;If you think something needs improvement or something sparked some joy, &lt;a href="//mailto:stefan@webweekly.email"&gt;reply to this email because I want to know more&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;And with that, take care of yourself - mentally, physically, and emotionally.&lt;/p&gt;

&lt;p&gt;I'll see you next week! 👋&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>🧢 Web Weekly 151 — `popover` enters the baseline!</title>
      <dc:creator>Stefan Judis</dc:creator>
      <pubDate>Wed, 12 Feb 2025 18:49:33 +0000</pubDate>
      <link>https://dev.to/webweekly/web-weekly-popover-enters-the-baseline-240p</link>
      <guid>https://dev.to/webweekly/web-weekly-popover-enters-the-baseline-240p</guid>
      <description>&lt;h2&gt;
  
  
  Guten Tag! Guten Tag! 👋
&lt;/h2&gt;

&lt;p&gt;Do you know what the European Accessibility Act will mean to you? Are view transitions (SPA or MPA) ready for production yet? Have you heard that &lt;code&gt;popover&lt;/code&gt; is now on the baseline?&lt;/p&gt;

&lt;p&gt;Turn on the Web Weekly tune and find all the answers below. Enjoy!&lt;/p&gt;




&lt;p&gt;Khaled listens to &lt;a href="https://www.youtube.com/watch?v=bjjc59FgUpg" rel="noopener noreferrer"&gt;"Cinematic Orchestra feat. Patrick Watson - To Build A Home"&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I listen to this song every now and then for about 14 years now!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you want to share your favorite song with the Web Weekly community? &lt;a href="//mailto:stefan@webweekly.email"&gt;Hit reply&lt;/a&gt;; there are &lt;strong&gt;two more songs&lt;/strong&gt; left in the queue.&lt;/p&gt;




&lt;p&gt;I'm a day late, so I'll keep this week's intro short, but I want to &lt;strong&gt;welcome all the new subscribers who joined last week&lt;/strong&gt;! 👋&lt;/p&gt;

&lt;p&gt;It's great to see Web Weekly growing, and if you have any comments, questions, or want to send over "good web stuff"™, let me know! &lt;/p&gt;

&lt;p&gt;I'm all ears (eyes? 🤷) and enjoy every bit of webdev chatter in my inbox!&lt;/p&gt;

&lt;p&gt;With that — let's go!&lt;/p&gt;




&lt;h2&gt;
  
  
  Something that made me smile this week
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwob23nw3t9lt8nu4dsz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwob23nw3t9lt8nu4dsz3.png" alt="Add random jumpscares to sites you're trying to avoid " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm unsure if getting scared is the right approach to breaking social media addiction, but if you try TabBoo let me know how it went. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://tabboo.xyz" rel="noopener noreferrer"&gt;Break bad habits&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New on the blog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.stefanjudis.com/today-i-learned/global-git-commit-templates/" rel="noopener noreferrer"&gt;How to apply a global Git commit template&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.stefanjudis.com/blog/a-well-known-avatar-url-would-be-dang-cool/" rel="noopener noreferrer"&gt;A well-known avatar URL would be dang cool&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.stefanjudis.com/today-i-learned/the-difference-ts-ignore-and-ts-expect-error/" rel="noopener noreferrer"&gt;The difference between &lt;code&gt;@ts-ignore&lt;/code&gt; and &lt;code&gt;@ts-expect-error&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The European Accessibility Act (EAA)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//images.ctfassets.net/f20lfrunubsq/46oMg7Ofr7nX2EBWK4Ndwv/7a7a72bce2e6f1c1db36e3ac9c91aeda/Screenshot_2025-02-10_at_20.45.31.png" class="article-body-image-wrapper"&gt;&lt;img src="//images.ctfassets.net/f20lfrunubsq/46oMg7Ofr7nX2EBWK4Ndwv/7a7a72bce2e6f1c1db36e3ac9c91aeda/Screenshot_2025-02-10_at_20.45.31.png" alt="The European Accessibility Act for websites and apps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The European Accessibility Act will go into effect on June 28, 2025, and Martijn shares what you need to know.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://martijnhols.nl/blog/the-european-accessibility-act-for-websites-and-apps" rel="noopener noreferrer"&gt;Understand the EAA&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  On native CSS nesting
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vqjjn1rabqlqlatcauf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vqjjn1rabqlqlatcauf.png" alt="CSS nesting: use with caution" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Andy argues that browsers shouldn't have shipped native CSS nesting because it's a solely developer convenience feature that also comes with some footguns. &lt;/p&gt;

&lt;p&gt;I'm unsure if I agree with this statement, but the article includes wise words worth pinning on your monitor. When you write code, ask yourself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Could a junior developer understand this code?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;💯 Future me will smartass the heck out of this idea. Get ready!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://piccalil.li/blog/css-nesting-use-with-caution/" rel="noopener noreferrer"&gt;Understand nesting&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It's about people
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywnod1ccwdz8048noutk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywnod1ccwdz8048noutk.png" alt="Stories of Web Users in - How People with Disabilities Use the Web — " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This page isn't new, but it's so valuable. The WEC Web Accessibility Initiative put together user stories about making digital products more accessible.&lt;/p&gt;

&lt;p&gt;Bookmark it for the next time when someone tells you that accessibility is "about X".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.w3.org/WAI/people-use-web/user-stories/" rel="noopener noreferrer"&gt;Build for people&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to favicon in 2025
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fjx2ab0j9m376p861fh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fjx2ab0j9m376p861fh.png" alt="Three HTML lines showing how to best include a favicon" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's the time of the year again when the wonderful Martians research how to load a favicon the best way. 👆 Do the necessary spring cleaning if your sites include more HTML than this to load a favicon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs" rel="noopener noreferrer"&gt;Clean up your favicons&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The wonderful weird web – Stripe's Black Friday stats
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge877mm81i8xptvh6wr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge877mm81i8xptvh6wr9.png" alt="A box with LED number displays." width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stripe must be doing very well when they have the time and money to build info pages like this one. 👆 Either way, it's fun to play with all the Black Friday stripe transaction data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bfcm.stripe.com/" rel="noopener noreferrer"&gt;Check the stats&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Stripe also released &lt;a href="https://stripe.dev/" rel="noopener noreferrer"&gt;this fabulous developer portal&lt;/a&gt; not too long ago.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Replace your animation libs with &lt;code&gt;startViewTransition()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1xztiz12exnvaedt1uh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1xztiz12exnvaedt1uh.png" alt="Stefan next to navigation UI components and the text " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my opinion, view transitions are the biggest update the web has seen in many years because we can build so many cool effects with so little effort now.&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/startViewTransition" rel="noopener noreferrer"&gt;&lt;code&gt;startViewTransition()&lt;/code&gt;&lt;/a&gt; to &lt;strong&gt;rebuild a navigation component that relied on a heavy JS animation lib with ~50 lines of CSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.builder.io/blog/view-transitions" rel="noopener noreferrer"&gt;Read the post&lt;/a&gt; &lt;a href="https://www.youtube.com/watch?v=prAHP9miQDY" rel="noopener noreferrer"&gt;Watch the video&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Get started with MPA view transitions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzcu6fplkrn1n3f3ni1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzcu6fplkrn1n3f3ni1y.png" alt="Cross-document view transitions deep dive!" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cross-document view transitions allow us to animate and transition elements across good old HTML navigations. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@view-transition" rel="noopener noreferrer"&gt;The new &lt;code&gt;@view-transition&lt;/code&gt; at-rule&lt;/a&gt; has been supported in Chromium for a while, and Safari started supporting it last December.&lt;/p&gt;

&lt;p&gt;If you want to spice up your static HTML sites, Kevin and Bramus live coding session will get you up to speed!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bram.us/2025/01/26/mpa-view-transitions-deep-dive/" rel="noopener noreferrer"&gt;Transition across pages&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Managing focus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fry5dwbjsdtxh7arpopc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fry5dwbjsdtxh7arpopc9.png" alt="button.focus({focusVisible: false});" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ollie explains the differences between &lt;code&gt;:focus&lt;/code&gt; and &lt;code&gt;:focus-visible&lt;/code&gt;, and why the &lt;code&gt;focus()&lt;/code&gt; DOM method needs an update.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fullystacked.net/programmatic-focus-styles/" rel="noopener noreferrer"&gt;Focus!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Some WebDev Trivia...
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4bsywkfbp5mtxgiikgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4bsywkfbp5mtxgiikgd.png" alt="Why does target=" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I admit I've never thought about this and didn't know. But do you know?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kyrylo.org/html/2024/10/25/why-does-target-blank-have-an-underscore-in-front.html" rel="noopener noreferrer"&gt;Travel in time&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to start a blog
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnt6n67kgyo6n4zof44n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnt6n67kgyo6n4zof44n.png" alt="Advice for a friend who wants to start a blog" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unsurprisingly, blogging had a huge impact on my career (heck, my life even?).&lt;/p&gt;

&lt;p&gt;Blogging helps me order my thoughts, learn new things, become a better writer, get invited to more job interviews, connect with people — the list goes on and on. I should probably blog about the benefits of blogging.&lt;/p&gt;

&lt;p&gt;If that sounds convincing and you wonder how to get started, here's &lt;a href="https://www.henrikkarlsson.xyz/p/start-a-blog" rel="noopener noreferrer"&gt;some solid advice&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;And don't forget to send me your RSS feed if you kick things off and start a new blog.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Random MDN – &lt;code&gt;:user-valid&lt;/code&gt; / &lt;code&gt;:user-invalid&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tscgaj1k0ua3qlu2jmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tscgaj1k0ua3qlu2jmx.png" alt="input:user-invalid {   border: 2px solid red; }" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the unlimited MDN knowledge archive...&lt;/p&gt;

&lt;p&gt;Do you know that there are CSS classes that match valid/invalid form elements only after the user interacts with them? Now you do!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:user-invalid" rel="noopener noreferrer"&gt;Validate at the right time&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TIL recap – table &lt;code&gt;caption&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//images.ctfassets.net/f20lfrunubsq/7IsBzcE4a6dWfWfb8fKLJV/bc6f838fae5716d631f33e31c899309e/Screenshot_2025-02-10_at_20.23.49.png" class="article-body-image-wrapper"&gt;&lt;img src="//images.ctfassets.net/f20lfrunubsq/7IsBzcE4a6dWfWfb8fKLJV/bc6f838fae5716d631f33e31c899309e/Screenshot_2025-02-10_at_20.23.49.png" alt="HTML table including a  raw `caption` endraw  element"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be honest. Do all your HTML tables include the required caption element? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/the-for-accessibility-required-caption-element-in-html-tables/" rel="noopener noreferrer"&gt;Give your tables a proper name&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find more short web development learnings in &lt;a href="https://www.stefanjudis.com/today-i-learned/" rel="noopener noreferrer"&gt;my "Today I learned" section&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New on the baseline — &lt;code&gt;popover&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbx1a2m6oyllazat03m0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbx1a2m6oyllazat03m0c.png" alt="HTML code that includes  raw `popovertarget` endraw  and  raw `popover` endraw  attributes." width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Big news: the popover API is now "newly available" on the baseline, and if you're now thinking, "Hold on! Wasn't it baseline ready last year already?", that's right.&lt;/p&gt;

&lt;p&gt;But webdev, spec work and browser implementations are hard. Rachel explained what happened and shared insights on how the baseline baseline evaluation works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://web.dev/blog/popover-baseline" rel="noopener noreferrer"&gt;Pop over!&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Classifieds &amp;amp; friends
&lt;/h2&gt;

&lt;p&gt;If you can't get enough of WebDev news, I can highly recommend &lt;a href="https://weeklyfoo.com/" rel="noopener noreferrer"&gt;Adam's WeeklyFoo newsletter&lt;/a&gt;. It pairs wonderfully with Web Weekly to catch all the relevant web dev news!&lt;/p&gt;

&lt;h2&gt;
  
  
  Three valuable projects to have a look at
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/sindresorhus/emittery" rel="noopener noreferrer"&gt;sindresorhus/emittery&lt;/a&gt; –  A simpl and modern async event emitter.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/localsend/localsend" rel="noopener noreferrer"&gt;localsend/localsend&lt;/a&gt; –  An open-source cross-platform alternative to AirDrop.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/yamadashy/repomix" rel="noopener noreferrer"&gt;yamadashy/repomix&lt;/a&gt; – A tool to pack your entire repository into a single, AI-friendly file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A new Tiny Helper
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w5agl4d4ok3fahtra1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w5agl4d4ok3fahtra1n.png" alt="Modern Font Stacks - System font stack CSS organized by typeface classification for every modern OS. The fastest fonts available. No downloading, no layout shifts, no flashes — just instant renders." width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/blog/load-the-default-os-font-with-css/" rel="noopener noreferrer"&gt;When I blogged about &lt;code&gt;font-family: system-ui&lt;/code&gt;&lt;/a&gt;, a few people pointed me to &lt;strong&gt;Modern Font Stacks&lt;/strong&gt;. What is it?&lt;/p&gt;

&lt;p&gt;Modern operating systems come with more installed fonts than &lt;code&gt;Arial&lt;/code&gt;. Modern Font Stacks lets you play and test available fonts, so you don't have to deal with optimal font loading strategies. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://modernfontstacks.com/" rel="noopener noreferrer"&gt;Use what's already there&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find more single-purpose online tools on &lt;a href="https://tiny-helpers.dev/" rel="noopener noreferrer"&gt;tiny-helpers.dev&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Thought of the week
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://addyo.substack.com/p/the-70-problem-hard-truths-about" rel="noopener noreferrer"&gt;Addy shared his thoughts on all this AI for coding madness happening right now&lt;/a&gt;, and his opinion might surprise you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI tools help experienced developers more than beginners.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Did you learn something from this issue?
&lt;/h2&gt;

&lt;p&gt;💙 If so, &lt;strong&gt;join 21 other Web Weekly readers&lt;/strong&gt; and support this small indie newsletter with a small monthly donation on &lt;a href="https://www.patreon.com/stefanjudis" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt; or &lt;a href="https://github.com/sponsors/stefanjudis/" rel="noopener noreferrer"&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is all, friends!
&lt;/h2&gt;

&lt;p&gt;Loved this email? Hated this email? I want to hear about it!&lt;/p&gt;

&lt;p&gt;If you think something needs improvement or something sparked some joy, &lt;a href="//mailto:stefan@webweekly.email"&gt;reply to this email because I want to know more&lt;/a&gt;!&lt;/p&gt;




&lt;p&gt;And with that, take care of yourself - mentally, physically, and emotionally.&lt;/p&gt;

&lt;p&gt;I'll see you next week! 👋&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
