NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm
The pure js optional dependency for sass-embedded
Last release 15 days ago
29 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 25 of 25 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
25 releases · first in 2025
One column per month.
Improve error messages for @extends across different media queries.
@extends across different media queries.Add support for first-class modules. These can be accessed using the new meta.load() and meta.get-module() functions, and may be passed as the $module
Add support for first-class modules. These can be accessed using the new
meta.load() and meta.get-module() functions, and may be passed as the
$module argument to numerous eisting sass:meta functions.
Add the meta.css() mixin, which includes CSS from a first-class module.
SassModule class and a corresponding Value.assertModule() method.SassModule class and a corresponding Value.assertModule() method.Fix a bug where loud comments before @use rules could be emitted multiple times under certain circumstances.
Fix a bug where loud comments before @use rules could be emitted multiple
times under certain circumstances.
Fix a bug in which an invalid selector at the end of an indented syntax stylesheet would cause the parser to crash instead of emitting a useful error message.
Many-to-many compilations no longer compile any files that appear in the
output directory if the output directory is also within the source directory.
This fixes a bug where --watch mode could enter an infinite loop recompiling
the same CSS file over and over.
Sass now sets the modification time of output files to the time compilation
started rather than the time it ended. This ensures that, if a source file
is modified during compilation, --watch and --update mode will recompile
the outputs to include the new source file contents.
Potentially breaking compatibility fix: Colors now convert the special values NaN and negative zero, as well as infinity and negative infinity for pol
Potentially breaking compatibility fix: Colors now convert the special values NaN and negative zero, as well as infinity and negative infinity for polar-hue channels, to 0 as per the CSS spec.
The special value negative zero is now serialized as -0 instead of 0 for
greater compatibility when using it in CSS calculations.
* No user-visible changes.
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
exports, sass, and style fields of package.json. Previously, these
files were ignored even when loaded via @import, so any code relying on
loading module-system-only files this way may break.Update Dart Sass version and release
Update Dart Sass version and release
Writing two compound selectors adjacent to one another without any whitespace
between them, such as [class]a, is now deprecated. This was always an error
in CSS and Sass only supported it by mistake.
See the Sass website for details.
Update Dart Sass version and release
Update Dart Sass version and release
Add support for parent selectors (&) at the root of the document. These are
emitted as-is in the CSS output, where they're interpreted as the scoping
root.
User-defined functions named calc or clamp are no longer forbidden. If
such a function exists without a namespace in the current module, it will be
used instead of the built-in calc() or clamp() function.
User-defined functions whose names begin with - and end with -expression,
-url, -and, -or, or -not are no longer forbidden. These were
originally intended to match vendor prefixes, but in practice no vendor
prefixes for these functions ever existed in real browsers.
User-defined functions named EXPRESSION, URL, and ELEMENT, those that
begin with - and end with -ELEMENT, as well as the same names with some
lowercase letters are now deprecated, These are names conflict with plain CSS
functions that have special syntax.
See the Sass website for details.
In a future release, calls to functions whose names begin with - and end
with -expression and -url will no longer have special parsing. For now,
these calls are deprecated if their behavior will change in the future.
See the Sass website for details.
Calls to functions whose names begin with - and end with -progid:... are
deprecated.
See the Sass website for details.
Update Dart Sass version and release
Update Dart Sass version and release
--watch mode.const Logger.defaultLogger field. This provides a logger that emits to
standard error or the browser console, but automatically chooses whether to
use terminal colors.Fix a crash when manually constructing a SassCalculation for 'calc' with
an argument that can't be simplified.
Properly emit deprecation warnings as text rather than StringBuffer objects
when running in a browser.
Emit colored warnings and other messages on the console when running in a browser.
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
Update Dart Sass version and release
if() syntax where values would be evaluated
even if their conditions didn't match.Update Dart Sass version and release
Update Dart Sass version and release
Allow numbers with complex units (more than one numerator unit or more than zero denominator units) to be emitted to CSS. These are now emitted as cal
calc() expressions, which now support complex units in plain CSS.* No user-visible changes.
The old Sass if() syntax is now deprecated. Users are encouraged to migrate to the new CSS syntax. if($condition, $if-true, $if-false) can be changed…
Add support for the CSS-style if() function. In addition to supporting the
plain CSS syntax, this also supports a sass() query that takes a Sass
expression that evaluates to true or false at preprocessing time depending
on whether the Sass value is truthy. If there are no plain-CSS queries, the
function will return the first value whose query returns true during
preprocessing. For example, if(sass(false): 1; sass(true): 2; else: 3)
returns 2.
The old Sass if() syntax is now deprecated. Users are encouraged to migrate
to the new CSS syntax. if($condition, $if-true, $if-false) can be changed to
if(sass($condition): $if-true; else: $if-false).
See the Sass website for details.
Plain-CSS if() functions are now considered "special numbers", meaning that
they can be used in place of arguments to CSS color functions.
Plain-CSS if() functions and attr() functions are now considered "special
variable strings" (like var()), meaning they can now be used in place of
multiple arguments or syntax fragments in various CSS functions.
Fix a performance regression that was introduced in 1.92.0.
Fix another error in the release process for @sass/types.
@sass/types.Fix an error in the release process for @sass/types.
@sass/types.Fix a crash when a style rule contains a nested @import, and the loaded file @uses a user-defined module as well as @includes a top-level mixin which
@import, and the loaded file
@uses a user-defined module as well as @includes a top-level mixin which
emits top-level declarations.@sass/types package which contains the type annotations used by
both the sass and sass-embedded package without any additional code or
dependencies.Fix a bug where variable definitions from one imported, forwarded module would not be passed as implicit configuration to a later imported, forwarded
Breaking change: Emit declarations, childless at-rules, and comments in the order they appear in the source even when they're interleaved with nested…
Breaking change: Emit declarations, childless at-rules, and comments in
the order they appear in the source even when they're interleaved with nested
rules. This obsoletes the mixed-decls deprecation.
Breaking change: The function name type() is now fully reserved for the
plain CSS function. This means that @function definitions with the name
type will produce errors, while function calls will be parsed as special
function strings.
Configuring private variables using @use ... with, @forward ... with, and
meta.load-css(..., $with: ...) is now deprecated. Private variables were
always intended to be fully encapsulated within the module that defines them,
and this helps enforce that encapsulation.
Fix a bug where @extend rules loaded through a mixture of @import and
@use rules could fail to apply correctly.
--watch mode, delete the source map when the associated source file is
deleted.Potentially breaking change: meta.inspect() (as well as other systems that use it such as @debug and certain error messages) now emits numbers with as…
Potentially breaking change: meta.inspect() (as well as other systems
that use it such as @debug and certain error messages) now emits numbers
with as high precision as is available instead of rounding to the nearest
1e⁻¹⁰ as we do when serializing to CSS. This better fits the purpose of
meta.inspect(), which is to provide full information about the structure of
a Sass value.
Passing a rest argument ($arg...) before a positional or named argument when
calling a function or mixin is now deprecated. This was always outside the
specified syntax, but it was historically treated the same as passing the rest
argument at the end of the argument list whether or not that matched the
visual order of the arguments.
Allow a @forwarded module to be loaded with a configuration when that module has already been loaded with a different configuration *and* the module d
@forwarded module to be loaded with a configuration when that module
has already been loaded with a different configuration and the module
doesn't define any variables that would have been configured anyway.Your coding agent can read these notes before it upgrades. Set up the MCP server →