npm / linaria
linaria
What changed in linaria 1 to 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-14.
24 breaking12 new APIs and options1 performance7 behavior and defaults5 tooling4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initlinaria 87 changes
Breaking changes 4
Babel config and Babel resolver plugins are no longer implicit module-resolution fallbacks during WyW evaluation; move build-time alias handling to WyW configuration.
Cascade ties with identical specificity may emit in a different order; make precedence explicit where order matters.
Migrate top-level evaluate configuration to eval.strategy; hybrid is the default, execute keeps evaluator-only compatibility, and static rejects evaluator fallback.
Linaria 8 requires Node.js 22.12 or newer.
Performance 1
Hybrid mode moves more style computation into analytical static evaluation, reducing evaluator startup and module execution work.
Behavior and default changes 1
The default hybrid mode resolves statically provable values first, then falls back to the evaluator.
Fixes and other changes 1
The updated transform avoids duplicate CSS for certain same-file processor bindings and keeps mixed static/processor object-member interpolations statically resolvable.
linaria 76 changes
Breaking changes 2
WyW 1.x can re-evaluate modules when cached exports are incomplete, so cached export values might not be reused.
Linaria 7 requires Node.js 20 or later, aligned with WyW 1.x.
Behavior and default changes 2
WyW 1.x promotes fully-statically-evaluatable modules to
only: ['*'].WyW 1.x serializes
transform()by default; Rollup users encountering an early exit or deadlock can set this option tofalse.
Fixes and other changes 2
When importing JSON from code evaluated by WyW, add
.jsontoextensionsso JSON imports can be handled correctly.When importing JSON from code evaluated by WyW, ensure
.jsonis ignored by evaluation rules so it is parsed as JSON, not by Babel.
linaria 615 changes
Breaking changes 13
Discontinued; its functionality is now part of @wyw-in-js/transform, installed automatically with bundler plugins.
Discontinued.
Replaces @linaria/babel-preset as part of the move of tooling to the @wyw-in-js scope.
Replaces @linaria/cli as part of the move of tooling to the @wyw-in-js scope.
Replaces @linaria/esbuild as part of the move of tooling to the @wyw-in-js scope.
Base classes for processors and most helpers have moved to this package.
Replaces @linaria/rollup as part of the move of tooling to the @wyw-in-js scope.
Replaces @linaria/vite as part of the move of tooling to the @wyw-in-js scope.
Replaces @linaria/webpack5-loader as part of the move of tooling to the @wyw-in-js scope.
Replaces linaria.config.js as the configuration file name.
Replaces linariarc as the configuration file name.
Replaces the __linaria field for storing meta information in runtime.
Replaces __linariaPreval as the export with all interpolated values.
Tooling 2
Replaces linaria as the caller name in Babel.
Now includes the shaker functionality and is installed automatically with the bundler plugins.
linaria 51 changes
Behavior and default changes 1
Dependency tree processing now supports wildcard re-exports.
linaria 422 changes
Breaking changes 3
Babel removes CSS-related code from the runtime.
Custom properties are no longer hyphenated.
The Babel package was renamed to @linaria/babel-preset.
New APIs and options 12
Babel supports asynchronous resolvers.
Atomic CSS supports at-rules, keyframes, and pseudo classes.
Atomic CSS supports property priorities.
Atomic CSS can be used with the styled API.
CSS template literals can be renamed.
CSS extraction logic from an AST is exposed for use by developers.
An API for custom template tags was added.
Linaria can interoperate with traditional CSS-in-JS libraries.
A package providing an atomic version of the css API was added.
A custom resolver option was added to support re-exporting Linaria libraries.
Basic support was added for tags of any type.
A new CLI flag, --transform, was added.
Behavior and default changes 3
classNameSlug resolution now includes file, name, dir, and ext.
The shaker package became optional.
Support for tags other than tagged templates was improved.
Tooling 3
An esbuild integration was added.
A loader for webpack 5 was added.
A universal webpack loader was added.
Fixes and other changes 1
Babel now supports dynamic keys in objects with css as values.
linaria 21 changes
Breaking changes 1
core-js has been removed from dependencies, which may affect developers relying on it being installed transitively.
linaria 11 changes
Breaking changes 1
Invalid interpolations now throw an error at build time to avoid mistakes.