Skip to content
ClearedGet the next issue

A monthly letter about the browser platformNext issue · Monday 3 August · 6:40 a.m. Pacific

Cleared to use. Cleared to delete.

The web platform grows. Your codebase doesn’t have to.

Every month I read what changed on the browser platform, pick the three to five things that actually matter, and give each one a verdict: Cleared, Hold, or Skip. When a fallback can finally come out of your codebase, that’s the lead story. Under five minutes to read.

Or just read this month’s issue, in full, below

The difference

Baseline tells you a feature shipped. It doesn’t tell you whether to bother.

webstatus.dev will tell you that mask-image passed 30 months of browser support in June. It will not tell you that Safari fails every SVG variant of the mask-repeat tests while passing the raster ones, or that a mask which fails does not degrade politely, it hides the wrong thing. So: Hold. That sentence is what this is for. Google’s team cannot write it about a feature Google shipped. I can.

  • Cleared

    Do it now.

  • Hold

    Real, but not yet, and here is the specific reason.

  • Skip

    Works fine. Not worth your afternoon.

How a verdict gets made

Issue 06

Cleared 06 · June 2026 · Cleared to use. Cleared to delete. Five minutes.

Nesting cleared: delete a build step

Published 6 July 2026 · covers June 2026 · 4 Cleared·1 Hold

June was a deletion month. A single Firefox release produced exactly one new arrival, while sixteen features quietly finished their 30 months of support. The best of them is nesting: your CSS can nest itself now, and a build step can go.

01Cleared

Nesting

Safe everywhere as of 11 June 2026

CSS rules can nest inside other rules, natively.

Delete: the build step that exists only to expand nesting. The source stays as written.

One seam. A nested rule resolves the way :is() does: & takes the specificity of the most specific selector in the parent list. A preprocessor expands the same source into a plain selector list, where each branch keeps its own.

CSS
#a, b {
  & c { color: blue; } /* & is [1,0,0] for both, so [1,0,1] */
}

/* Your build step expanded that to: */
#a c { } /* [1,0,1], same */
b c  { } /* [0,0,2], weaker than the native version */

The two agree until a parent selector list mixes specificity levels. Before switching, search your source for comma-separated parent selectors containing an ID.

02Cleared

Lazy-loading images and iframes

Safe everywhere as of 19 June 2026

loading="lazy" defers offscreen images and iframes until the user scrolls near them.

Delete: the lazy-loading script and its data-src markup.

HTML · before after
<img data-src="chart.png" class="lazyload">
<script>/* a script you no longer need */</script>

<img src="chart.png" loading="lazy">

The core image and iframe cases pass their tests in every browser. What still fails anywhere is edge cases: an image whose URL is changed repeatedly from script, base-URL changes mid-load, lazy iframes during unusual navigations. Keep the image at the top of the page eager; deferring what is already on screen only delays it.

03Cleared

:has()

Safe everywhere as of 19 June 2026

The parent selector: style an element by what it contains. It appears on about one in two hundred page loads.

Delete: the JavaScript that watches children and toggles state classes on their parents.

CSS · before after
/* a script adds .has-error to the form */
form.has-error { border-color: firebrick; }

form:has(input:invalid) { border-color: firebrick; }

One boundary, from Safari’s current test run. Parent, ancestor, adjacent and sibling positions all match Chrome exactly: 211 of 211, 337 of 337, 295 of 295, 295 of 295. The gap is re-matching while a script inserts and removes siblings: 14 of 28. If a :has() rule watches a sibling list under live mutation, keep the class for that one case.

04Cleared

field-sizing

New this month, 16 June 2026

field-sizing: content makes inputs and textareas grow and shrink with what is typed. June’s only new arrival, completed by Firefox 152.

Delete: the textarea autosize script, on new work.

CSS
textarea {
  field-sizing: content;
  min-height: 4rem;
  max-height: 16rem;
}

Textarea sizing and resizing pass in every current browser run. The one failure anywhere is Firefox re-fitting a number input after a script changes its value; textareas are unaffected. A month of Baseline means some of your users are still catching up, and for them the failure is the one you already ship: a fixed-size box with a scrollbar.

05Hold

Masks

Not yet

CSS masks crossed 30 months of support on 7 June, and appear on about 0.4% of page loads. The label says delete your fallbacks. The tests say not yet.

In Safari 26.5.2’s current run, masks repeat correctly from a raster image and fail the same three tests when the mask source is an SVG: mask-repeat-1-svg, -2-svg and -3-svg. Chrome passes all six. An SVG source is the common case, and a mask that fails to apply does not degrade: it reveals or hides the wrong thing. Keep whatever fallback you have until Safari’s SVG path catches up.

Deleted something because of this? Got a correction? . I read every one.

Subscribe
What clears next

I already know what you can delete in November

Widely available means exactly 30 months after a feature became newly available. It is arithmetic, not a committee, so the deletions in every issue for the next year are already determined. Four features clear in November 2026, including light-dark(), which removes a duplicated custom-property block per theme.

See the twelve-month calendar

Who writes this

One person, one opinion

I’m Yann. I run minimal design (opens in a new tab), I’ve been building for the web for over twenty years, and I maintain mCSS (opens in a new tab), an open-source CSS framework other developers build with. I write Cleared because every publication covering this platform is additive, and the more useful half of the story is what you get to take away.

More about Cleared and why it exists

Closing