Skip to content
Ultracite
Esc
navigateopen⌘Jpreview
On this page

Migrate from Oxlint

Move from standalone Oxlint to Ultracite so speed-focused projects gain shared presets, editor defaults, and a cleaner rollout path.

If you’re already using Oxlint and want to switch to Ultracite’s preconfigured setup, this guide will help you migrate while preserving your code quality standards.

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 Oxlint
  • Node.js 20+
  • An Oxlint configuration file (e.g., oxlint.config.ts)

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

When prompted, select Oxlint as your linting provider. This will:

  • Install Ultracite as a dependency
  • Merge your existing oxlint.config.ts with Ultracite’s preset
  • Create an oxfmt.config.ts for formatting configuration
  • Merge your existing .vscode/settings.json with Ultracite’s preset
  • Enable strictNullChecks in your existing tsconfig.json files (skipped if your project has none)
  • Preserve your custom rules and settings
  • Set up editor integrations

Following the upgrade, you may want to review your oxlint.config.ts 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, create an oxlint.config.ts that extends Ultracite:

import { defineConfig } from "oxlint";

import core from "ultracite/oxlint/core";

export default defineConfig({
  extends: [core],
  ignorePatterns: core.ignorePatterns,
});

Then create an oxfmt.config.ts that imports Ultracite’s formatting preset:

import { defineConfig } from "oxfmt";
import ultracite from "ultracite/oxfmt";

export default defineConfig({
  ...ultracite,
});

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

Was this page helpful?