NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #568 most downloaded on npm
Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website
Last release 17 days ago
15 Sep 2026
Release timing varies
gaps range from 8 days to 8 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
260 releases · first in 2013
Autoprefixer 2.2 is based on PostCSS 2.1 with Safe Mode and brings control comments to disable Autoprefixer in some part of CSS.
<img src="https://upload.wikimedia.org/wikipedia/commons/c/cf/20000_mobilis_in_mobili.jpg" width="200" height="94" align="right">
Autoprefixer 2.2 is based on PostCSS 2.1 with Safe Mode and brings control comments to disable Autoprefixer in some part of CSS.
New version of PostCSS was totally rewritten from CoffeeScript to ES6, but Autoprefixer users will see only 2 features: Safe Mode and better error messages.
Now Autoprefixer had special Safe Mode, which try to fix broken CSS. For example, it will parse a { as a {}. It will be useful for live input tool or to parse old legacy code.
autoprefixer.process('a {'); // will throw "Unclosed block"
autoprefixer.process('a {', { safe: true }); // process CSS as a {}
You can now try Safe Mode on live input in Autoprefixer interactive demo by @simevidas.
Also by @jonathanong idea CSS syntax error messages now include broken source line:
> autoprefixer.process('a {\n b { }\n}')
Can't parse CSS: Unexpected { in decls at line 2:5
a {
b { }
^
}
PostCSS will try to detect environment and use colors in error output if they are supported.
Autoprefixer was designed without any interface. You just write CSS and Autoprefixer process it in background.
For example, it detects hacks automatically, when you use outdated prefix to control special browser:
a {
transform: scale(0.5);
-moz-transform: scale(0.6)
}
But sometimes we need control. Now you can disable Autoprefixer for some rules and write prefixes manually. Just put /* autoprefixer: off */ control comment inside rule:
a {
transition: 1s; /* it will be prefixed */
}
b {
/* autoprefixer: off */
transition: 1s; /* it will not be prefixed */
}
Also you can use control comments recursively:
/* autoprefixer: off */
@support (transition: all) {
/* autoprefixer: on */
a {
/* autoprefixer: off */
}
}
One column per quarter.
Fix -webkit-background-size hack for contain and cover values.
-webkit-background-size hack for contain and cover values.-webkit- prefix to filter with SVG (by @iamvdo).-webkit-background-size hack for contain and cover values.-webkit- prefix to filter with SVG (by Vincent De Oliveira).Add support for clip-path and mask properties.
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Coat_of_arms_of_Greece.svg/500px-Coat_of_arms_of_Greece.svg.png" width="200" height="196" align="right">
clip-path and mask properties.-webkit- prefix to filter with SVG URI. Thanks to @iamvdo for notice.Add readable names for new browsers from 2.0 release.
-webkit- prefix to filter with SVG URI.-o- prefix 3D transforms.Save declaration style, when clone declaration to prefix.
There is map: 'inline' shortcut if you want to set only map: { inline: true }. Old options are deprecated and will print warnings.
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Emblem_of_South_Korea.svg/479px-Emblem_of_South_Korea.svg.png" width="200" height="200" align="right">
This version based on PostCSS 1.0, supports @supports and enable visual cascade by default.
New PostCSS release has a lot of improvements, but source map API update is most important for Autoprefixer’s users.
@lydell suggested great plan to clean up options. Now all map options will be inside map object.
inlineMap: true was renamed to map: { inline: true }.mapAnnotation: false was renamed to map: { annotation: false }.map: { prev: prevMap } instead of old map: prevMap.There is map: 'inline' shortcut if you want to set only map: { inline: true }. Old options are deprecated and will print warnings.
Also there is two API improvements for plugin’s popular needs:
map: { sourcesContent: true } option.map: { annotation: '../maps/app.css.map' } option. Note that path in annotation must be relative to output CSS file.Property result.map will contains SourceMapGenerator object (from Mozilla’s source-map) instead of string. It will allow to change something in generated map:
var result = autoprefixer.process(css, { map: true });
result.map.applySourceMap(otherMap, 'undetected.css');
console.log('map: ' + result.map) // SourceMapGenerator has toString() method,
// so old code should work
result.map.toJSON().file // But also you can access to generated map properties
Check out all changes in PostCSS docs.
By idea from @paulirish, Autoprefixer from 1.1 version has option for prefixes cascade. But this feature was disabled by default, because old Autoprefixer can’t restore own cascade, when it removes prefixes.
New Autoprefixer can restore prefixes cascade, when it remove unnecessary prefixes. So, now we can enable visual cascade by default.
a {
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px
}
b {
user-select: none
}
will be processed to:
a {
border-radius: 4px;
}
b {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none
}
Cascade will be used, only if you process uncompressed CSS. Use cascade: false option to disable cascade, if you don’t like it.
@supports At-ruleCSS 3 added new @supports at-rule to use some styles, only if browser supports properties and values in at-rule conditions.
For example, we can set some styles only for browsers, which support fit-content width:
.menu {
width: 400px
}
@supports (width: fit-content) {
/* content will be used, only if browser supports fit-content */
.menu {
width: fit-content
}
}
But Chrome doesn’t know fit-content, it knows only -webkit-fit-content. So we need to use prefixed properties and values in @support.
@callumacrae suggested this feature and explained how it should works. And now Autoprefixer 2.0 supports this at-rule and adds prefixes inside it conditions:
@supports ((width: -webkit-fit-content) or (width: -moz-fit-content) or (width: fit-content)) {
/* content will be used, only if browser supports fit-content */
.menu {
width: -webkit-fit-content;
width: -moz-fit-content;
width: fit-content
}
}
ie_mob, and_chr, and_ff, op_mob and op_mini."autoprefixer": "ai/autoprefixer" in your npm’s package.json.--no-cascade, --annotation and --sources-content options and deprecates<br>-c and --cascade.Fix gradient hack, when background property contains color.
background property contains color.Add background-size to support Android 2.
<img src="http://magistatic.com/crests/1047-1273245021.png" align="right" width="180" height="180">
text-size-adjust support.background-size to support Android 2.Autoprefixer uses Can I Use data. Previous versions contain Can I Use dump inside npm package and I had special script to update this data from Can I
<img src="https://upload.wikimedia.org/wikipedia/commons/3/37/Imperial_Seal_of_Japan.svg" width="180" height="180" align="right">
Autoprefixer uses Can I Use data. Previous versions contain Can I Use dump inside npm package and I had special script to update this data from Can I Use repo. I manually run this scripts every day. It was a hack, not a good solution.
Few month ago @Fyrd started to publish official caniuse-db npm package. Autoprefixer 1.2 start to use this official data instead of local copy.
This changes made Autoprefixer’s maintaining much easier, but also it gives a few benefits to end-users:
1.1.20140605 versions with dump date in minor part. Now it will be normal versions like 1.2.0.npm update caniuse-db.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →