Sass Breaking Changes
Sass has added support for the CSS Media Queries Level 4 specification. This originally conflicted with some Sass-specific syntax, so this syntax was deprecated and is now interpreted according to the CSS standard.
Compatibility: Dart Sass since 1.56.0 LibSass ✗ Ruby Sass ✗
Because Sass supports almost any Sass expression in parenthesized media conditions, there were a few constructs whose meaning was changed by adding full support for Media Queries Level 4. Specifically:
@media (not (foo)) was historically interpreted by Sass as meaning @media (#{not (foo)}), and so compiled to @media (false).
@media ((foo) and (bar)) and @media ((foo) or (bar)) were similarly interpreted as SassScript’s logical operators, compiling to @media (bar) and @media (foo) respectively.
Fortunately, these came up very infrequently in practice. Transition Period Transition Period permalink
Compatibility: Dart Sass since 1.54.0 LibSass ✗ Ruby Sass ✗
First, we emitted deprecation warnings for the previous ambiguous cases. These will have suggestions for how to preserve the existing behavior or how to use the new CSS syntax. Can I Silence the Warnings? Can I Silence the Warnings? permalink
Sass provides a powerful suite of options for managing which deprecation warnings you see and when. Terse and Verbose Mode Terse and Verbose Mode permalink
By default, Sass runs in terse mode, where it will only print each type of deprecation warning five times before it silences additional warnings. This helps ensure that users know when they need to be aware of an upcoming breaking change without creating an overwhelming amount of console noise.
If you run Sass in verbose mode instead, it will print every deprecation warning it encounters. This can be useful for tracking the remaining work to be done when fixing deprecations. You can enable verbose mode using the --verbose flag on the command line, or the verbose option in the JavaScript API.
Created @ 1/19/2025, 04:25:45