---
title: Migrate from Biome
description: 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

### Option 1: Quick Migration (Recommended)

The fastest way is to run the [automatic setup script](/docs/setup#installation).

```package-install
npx 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:

```jsonc title="biome.jsonc"
{
  "extends": ["ultracite/biome/core"],
}
```

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