Updates to Popover and CSS Anchor Positioning Polyfills
hint
popovers, position-area
and more
We have been busy updating the Popover and CSS Anchor Positioning Polyfills, but there is still more we can do with your help.
A quick guide to adopting the modern Sass API
Sass compilation can be a speed bottleneck in your build, but it doesn’t have to be anymore.
Vite comes with built in support for Sass, as well as other CSS preprocessors.
Just npm install sass
, import a .scss
file, and it works.
However, this came with a catch. For every Sass import, a new instance of Sass
would spin up, compile, and spin down. If you have a single imported Sass entry
point file that imports other Sass files, this isn’t a big deal. But if you’re
using Vue’s Single File
Components (SFCs) with
lang="scss"
, you were spinning
up a new Sass instance for every single SFC.
That can add up.
Earlier this year, OddBird helped Sass add a new Compiler
API that allows you
to reuse a single instance of Sass for multiple compilations. While you can
adopt the new API in your own bespoke Sass compilation setup, we were excited to
see the Vite team add support in version 5.4.0.
sass
to sass-embedded
by running npm uninstall sass; npm install -D sass-embedded
.Wait – what’s sass-embedded
?
Sass is written in Dart. The sass
package is transpiled to pure-Javascript,
and sass-embedded
exposes the same API, but around a native Dart executable.
In many situations, sass-embedded
is faster.
vite.config.js
file, set css.preprocessorOptions.scss.api
to modern-compiler
....
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
}
}
}
...
If you’re using the indented syntax, you’ll need to use the sass
key
instead of scss
.
legacy
API options to the modern
API
options. In my case, I needed to update pkgImporter
to importers: [new NodePackageImporter()]
and change the import of NodePackageImporter
from
sass
to sass-embedded
.And you’re done. Now your Vite compilation time should be even faster!
Webpack’s sass-loader
also has support for the Compiler API.
sass
to sass-embedded
by running npm uninstall sass; npm install -D sass-embedded
.webpack.config.js
, set the options.api
to modern-compiler
for
the sass-loader
rule....
{
loader: "sass-loader",
options: {
api: "modern-compiler",
},
}
...
The benefit here is going to be very project-dependent. In our codebases,
we saw vite build
times improving from ~4.7s to ~3.9s in a smaller project,
and from ~5.9s to ~3.8s in a larger project.
Others have
seen up to an 8x speed improvement. Incremental dev builds should also be
faster.
Let us know what kind of speed improvements you see in your projects!
hint
popovers, position-area
and more
We have been busy updating the Popover and CSS Anchor Positioning Polyfills, but there is still more we can do with your help.
Display color gamut ranges and more
OddContrast, OddBird’s color format converter and contrast checker, gets new features – including the ability to swap background and foreground colors, and display color gamut ranges on the color sliders. Contrast ratios now incorporate foreground color alpha values.
Start using author-defined functions
There’s been a lot of progress in the CSS Working Group lately, but I want to draw your attention to a prototype that landed in Chromium ‘Canary’ (v136+) browsers with the experimental platform features flag enabled. Author-defined Functions are coming to CSS, and you can start to experiment with them…