The reference implementation of Sass, a CSS preprocessor that adds powerful features like variables, nesting, and mixins.
Dart Sass is the reference implementation of Sass, a CSS preprocessor that extends CSS with features like variables, nesting, mixins, and functions. It compiles .scss and .sass files into standard CSS, solving the problem of writing repetitive, hard-to-maintain stylesheets. It's the canonical version that replaced Ruby Sass, offering better performance and portability.
Frontend developers, web designers, and teams building modern websites or applications who want to write more maintainable, organized, and dynamic CSS.
Developers choose Dart Sass because it's the official, actively maintained implementation with strong performance, cross-platform support (standalone, npm, Dart), and full compatibility with the Sass language. Its portability and regular updates make it a reliable choice over older implementations.
The reference implementation of Sass, written in Dart.
Built on the optimized Dart VM, Dart Sass compiles stylesheets significantly faster than Ruby Sass, with performance benchmarks detailed in the repository's perf.md file.
As the primary implementation that replaced Ruby Sass, it is the standard for Sass language compliance and receives active updates, ensuring long-term reliability.
Installable via npm, standalone binaries, package managers like Homebrew and Chocolatey, and Docker, making it accessible in virtually any development or production environment.
Supports all core Sass features like variables, nesting, mixins, modules, and control directives, enabling maintainable and dynamic stylesheets as highlighted in the key features.
The JavaScript API compatible with Node Sass is deprecated and will be removed in Dart Sass 2.0.0, forcing users to migrate to the new compile() functions, which can break existing integrations.
Due to a Jest bug breaking instanceof, additional configuration with jest-environment-node-single-context is required for unit tests, adding setup complexity and potential maintenance overhead.
Intentional differences from Ruby Sass, such as stricter @extend rules and changes to color arithmetic, can silently break legacy stylesheets without clear migration paths.
:rainbow: Node.js bindings to libsass
OctoLinker — Links together, what belongs together
A C/C++ implementation of a Sass compiler
Compiles Sass to CSS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.