VulCode

Autoprefixer: our changes to an open source project

A PostCSS plugin that adds browser prefixes to CSS based on Can I Use data.

All contributions
Language
JavaScript
GitHub stars
22,209
3merged changes
From 15 Sep 2026 to 7 Oct 2026.
Number 6 of the 64 GitHub projects with our changes, by stars. First is Zed (91,587).

The changes merged into Autoprefixer

Grid gaps set with the row-gap and column-gap longhands are inherited correctly, and grid prefixes get the right source in source maps.

How we tested #1557

The grid-gap.css test cases gained a pair of rules, .longhand-gap and .longhand-gap.modifier, with gaps set through the longhand properties. The expected output is -ms-grid-columns: 1fr 50px 1fr and -ms-grid-rows: 100px 40px 100px in both rules.

TypeScript, React and Node

Our projects in this technology, their screens and when we choose it.

The bug, the fix and the lesson

A summary of our Tech news write-up: what was broken, what we changed and what it means for our own work.

What was broken

An inherited grid lost its gap

When grid areas were inherited, Autoprefixer looked for the gap only in the grid-gap shorthand. If the container set grid-row-gap and grid-column-gap, the rule got a grid without its gap.

What we changed

One rule for both paths

The expression that recognises the shorthand and the longhands moved into a shared constant, and inheritance now applies it the same way getGridGap does.

const GAP_PROPS = /^(grid-)?((row|column)-)?gap$/
// find gap values, set either by the shorthand or by the longhands
r.walkDecls(GAP_PROPS, d => (gridGap = getGridGap(d)))
What it taught us

Shorthand and longhand CSS properties must produce the same result after processing.

A tool that rewrites CSS must keep the source map right too.

Other projects with our changes: TypeScript, React and Node

5 projects in this technology have our merged changes. The bar is the repository's stars, next to it the number of our changes. Each row leads to the project's page.

Questions about our changes to Autoprefixer

Where these changes come from, who merged them and whether we can fix something in your library.

Using Autoprefixer in your project?

If something in it does not work, we fix it at the source and leave a workaround until the release. We reply within an hour.