v157 · css · anchor positioning

Deprecation is not removal

This proposal ships the singular names and deprecates the plurals — explicitly “but not removing them”. Those are different states with different consequences for your stylesheet, and only the last one breaks anything. Step through them, and check which state this browser is actually in.

Probing this browser…

Where this browser sits right now

Each position-visibility value, whether it parses in this browser, and how its spelling reads
valueparses herespellingreading
Determining the current state…

The four states a value moves through

Pick a stage to see what each stylesheet does in it.

the three words, precisely

Deprecated means “still works, stop writing it”. The value parses, applies, and behaves identically; you may get a console warning or a use-counter entry. No page breaks.

Aliased means the old name is mapped onto the new one. It parses, but it serialises as the new name — so getComputedStyle and CSSOM round-trips start returning a string you did not write. Tooling that string-matches on the old name breaks here, even though rendering does not.

Removed means the parser no longer recognises it. The declaration is dropped, the property falls back to its initial value, and anchored elements silently stop hiding themselves. This is the only state that changes what users see, and it is explicitly not part of this proposal.

what to actually do

/* Safe in every stage above, including stage 4. */
.tip {
  position-visibility: anchors-visible;  /* stages 1-3 */
  position-visibility: anchor-visible;   /* stages 2-4 */
}

One extra line per rule makes the stylesheet stage-independent. There is no urgency — deprecation does not break pages — but there is also no reason to wait, since the dual-write costs nothing and removes the need to track which stage any given browser is in.

see also