Upgrade to v7
Upgrade from Ultracite v6 to v7 to adopt multi-linter support, updated presets, and the latest generated config structure.
Ultracite v7 introduces support for multiple linting providers: Biome, ESLint + Prettier + Stylelint, and Oxlint + Oxfmt.
What Changed
Multi-Provider Support
Ultracite now supports three linting toolchains:
- Oxlint + Oxfmt — The fastest option, recommended and the default since v7.11
- Biome — The modern, all-in-one toolchain (the default before v7.11)
- ESLint + Prettier + Stylelint — The most mature ecosystem
Updated Preset Paths
Preset paths now include the provider name to distinguish between linters:
| v6 Path | v7 Path |
|---|---|
ultracite/core |
ultracite/biome/core |
ultracite/react |
ultracite/biome/react |
ultracite/next |
ultracite/biome/next |
ultracite/solid |
ultracite/biome/solid |
ultracite/vue |
ultracite/biome/vue |
ultracite/svelte |
ultracite/biome/svelte |
ultracite/qwik |
ultracite/biome/qwik |
ultracite/angular |
ultracite/biome/angular |
ultracite/remix |
ultracite/biome/remix |
ultracite/astro |
ultracite/biome/astro |
New CLI Flag
The --linter flag allows you to specify which provider to use:
npx ultracite init --linter biome
npx ultracite init --linter eslint
npx ultracite init --linter oxlint
Migration
For Biome Users
Update your biome.jsonc to use the new preset paths. A v6 config like this:
{
"extends": ["ultracite/core", "ultracite/react", "ultracite/next"],
}
becomes:
{
"extends": [
"ultracite/biome/core",
"ultracite/biome/react",
"ultracite/biome/next",
],
}
Switching to ESLint
If you’d like to switch to ESLint + Prettier + Stylelint:
npx ultracite init --linter eslint
This will create eslint.config.mjs, prettier.config.mjs, and stylelint.config.mjs files:
import core from "ultracite/eslint/core";
import react from "ultracite/eslint/react";
import next from "ultracite/eslint/next";
export default [...core, ...react, ...next];
Switching to Oxlint
If you’d like to switch to the fastest option:
npx ultracite init --linter oxlint
This will create oxlint.config.ts and oxfmt.config.ts files (.mts if your package.json doesn’t set "type": "module"):
import { defineConfig } from "oxlint";
import core from "ultracite/oxlint/core";
import next from "ultracite/oxlint/next";
import react from "ultracite/oxlint/react";
export default defineConfig({
extends: [core, react, next],
ignorePatterns: core.ignorePatterns,
});
import { defineConfig } from "oxfmt";
import ultracite from "ultracite/oxfmt";
export default defineConfig({
...ultracite,
});
Quick Upgrade
For the fastest upgrade path, run:
npx ultracite init
When prompted, select your preferred linting provider. Ultracite will update your configuration files automatically.