← Back to all briefs
CSS55s read

Firefox 155: CSS attr() returns any type, Promise.allKeyed lands

attr() drops its string-only limit, new progress() and alpha() functions grow the CSS math and color toolkit, and Promise.allKeyed plus allSettledKeyed land.

Firefox 155 shipped September 1, and the CSS story is attr(). The function has long been stuck returning string values inside the content property; now it returns values of any type. A data-* attribute can carry a length, a number, or a color that CSS resolves directly, deleting a whole class of stringified markup and parsing hacks.

Two additions round out the author-facing CSS. progress() computes an intermediate value between two endpoints, handy when you need a step between values. alpha() works as a relative-color function on the alpha channel, so you can pull transparency from an existing color instead of hardcoding a new one.

The JavaScript side earns a skim. Promise.allKeyed and Promise.allSettledKeyed hand results back keyed to the values you passed, so parallel fan-out over a known set needs no manual index-pairing pass. A failed dynamic import() is no longer cached as a failure in the module map, so a transient network error no longer poisons retries. DevTools can emulate prefers-reduced-motion from the Rules view, and the JSON viewer renders NDJSON logs.

Safe to skip: CSS nesting caps at 75 levels, font-width becomes the standard name for font-stretch, and Wasm gains compact import sections and 128-bit arithmetic. One real caveat: on networks that block UDP, the QUIC v2 upgrade can slow page loads, with a fix planned for 155.0.1 by September 8.