A polyfill brings the CSS random() function to Chrome and Firefox
Lee Meyer published css-random-polyfill on CSS-Tricks on August 31, 2026. Only Safari implements CSS random() today, and it has since Safari 26.2 on December 12, 2025. The polyfill asks for a naming convention in exchange, and what you write stays valid CSS that keeps working once the script is removed.
Source
Let's Use the Emergent CSS random() Function in all the BrowsersCSS-Tricks · Original published August 31, 2026
CSS random() returns a random value from a range you declare, with no JavaScript involved. So far you could only use it in Safari. On August 31, 2026, Lee Meyer published css-random-polyfill on CSS-Tricks, a script that runs the same declarations in Chrome and Firefox.
Where support actually stands
Checked against webstatus.dev on August 31, 2026, random() is implemented in Safari and Safari on iOS and nowhere else. It arrived in Safari 26.2, released on December 12, 2025, alongside sibling-index() and sibling-count(). Chrome, Edge and Firefox have nothing shipping in stable, and the Baseline status of the feature is limited.
Meyer writes that there are signs of work on it in both Chrome and Firefox, but no dates and no guarantee of a flag to try it behind. The specification itself is an editor's draft in what it calls an early exploration phase, with major breaking changes expected.
What the script asks for in return
The polyfill does not scan for the function wherever it appears. It works by convention: every random value goes into an intermediate custom property whose name starts with --random, and every element that should be processed carries a randomized class. That is what keeps the rest of the stylesheet valid CSS in a browser that has never heard of the function.
- The optional third argument works, so
random(1px, 7px, 1px)picks whole pixels only. - Keyed values work, so
random(--side, 40px, 100px)hands the same result to two properties. - Units may be mixed as long as they resolve to the same data type, which is why
random(2turn, 10turn, 20deg)is accepted. - Where the browser implements the function natively, the script processes nothing and steps out of the way.
The two limits worth knowing before you commit
The supported surface is narrower than the native one. The spec allows the function in place of any part of any property's value, the way calc() and min() work; the polyfill needs the detour through a custom property. Meyer calls this a compromise he can live with, because the declarations stay compatible with the native implementation and the script can be deleted later without touching the styles.
The second limit is a matter of timing. The script only processes computed styles that are applied to elements when the page first loads. One of the demos had to be reworked because of it: the random value was moved out of a keyframes animation and into a class applied at load time. Anything that changes after that is outside what the script covers.
„the polyfill is supporting a subset of what we will get with native random()“
Sources
Related

Safari 27.0 ships an MCP server, so a coding agent can drive the browser itself
WebKit published the feature list on September 17, 2026, and it is the longest the team has written: 83 features, up from 58 at the first beta in June, and 844 quality fixes against the 525 announced at WWDC. The headline for anyone who builds with a coding agent is the Safari MCP server, which hands the agent the DOM, network requests, screenshots and console output from a real Safari window. Customizable Select turns the real select element into something you can fully restyle, and scroll anchoring stops the page from jumping when content loads in above what you are reading.
WebKit Blogverified
Safari Technology Preview 252 adds named-feature() and lets SVG reach a filter in another file
The preview build came out on September 11, 2026 and covers WebKit changes between 319252@main and 320112@main. Eleven features are new, and two of them extend the same job: how a stylesheet, and then a script, finds out what the engine underneath can do. The named-feature() function asks about a behavior that has no syntax of its own, and the registry behind it holds exactly two entries today. SVG also gained external resources, so the url() reference can finally point at a filter, mask or gradient stored in another document.
WebKitverified
Interop 2027 proposals close on September 23, and untested ideas do not qualify
The call for Interop 2027 Focus Area proposals opened on September 3, 2026 and closes on September 23, 2026. Proposals are filed as issues on the web-platform-tests/interop repository, and two conditions decide almost everything: the technology must already have a mature standard, and it must be testable, because the test results are what the dashboard scores. Anything that fails the second condition is steered toward an Interop Investigation instead. Twenty days is the whole window, and the evidence a good proposal needs takes longer than an evening to assemble.
WebKitverified
