Skip to content
Ultracite
Esc
↑↓navigate↵open⌘Jpreview
On this page

Migrate from Biome

Move an existing Biome project onto Ultracite's presets without losing your single-binary workflow, editor defaults, or rule overrides.

If you’re already using Biome and want to switch to Ultracite’s preconfigured setup, this guide will help you migrate while preserving your existing configuration.

Why Migrate to Ultracite?

  • Zero Configuration: Ultracite provides a highly configured preset of rules
  • Editor Integration: Built-in support for AI-powered editors (Cursor, Windsurf, GitHub Copilot)
  • Consistent Workflow: Standardized setup across projects and teams
  • Additional Tooling: Optional Git hooks, lint-staged integration
  • Maintained Rules: Regular updates with new best practices

Before You Start

Make sure you have:

  • An existing project using Biome
  • Node.js 20.19+ (or 22.13+ on Node 22)
  • A biome.json or biome.jsonc file

Migration Options

The fastest way is to run the automatic setup script.

npx ultracite init
pnpm dlx ultracite init
yarn dlx ultracite init
bunx ultracite init
nubx ultracite init
aube dlx ultracite init

When prompted, select Biome as your linting provider (it’s preselected when init finds your Biome config). This will:

  • Install Ultracite and the Biome version it supports
  • Add Ultracite’s presets to the extends list of your existing biome.json / biome.jsonc, editing it in place so your custom rules, settings, comments, and formatting are preserved
  • Update your .vscode/settings.json in place, keeping your settings and comments (if you set up a VS Code-based editor)
  • Enable strictNullChecks in your tsconfig.json files, unless it’s already on (directly or through extends) or explicitly set to false, which init leaves alone with a warning
  • Set up editor integrations

A Biome config with a syntax error is left unchanged with a warning, so fix it and re-run init. A nested config that inherits the root config with "extends": "//" is also left unchanged: add the Ultracite presets to the root config instead.

After migrating, you may want to review your biome.json / biome.jsonc file to remove any overrides that are now handled by Ultracite’s preset.

Option 2: Manual Migration

If you prefer more control over the process, update your biome.jsonc to extend Ultracite:

{
  "extends": ["ultracite/biome/core"],
}

After the migration, restart your editor to ensure the new configuration is applied.

Was this page helpful?