A production-grade, zero-configuration preset for
Biome
ESLint
Oxlint
Prettier
Stylelint
Ultracite is a zero-config preset for ESLint, Biome, and Oxlint that helps teams and AI write consistent, type-safe code.

Terminal
$ npx ultracite@latest init● Detected lockfile, using bun│◇ Which formatters / linters do you want to use?│ Oxlint + Oxfmt│◇ Which frameworks are you using?│ React, Next.js, Bun│◇ Which editors do you want to configure?│ Universal│◇ Which agent files do you want to add?│ Universal, Claude│◇ Which agent hooks do you want to enable?│ Cursor, Claude Code│◆ Would you like any of the following Git hooks?│ ◻ Husky│ ◻ Lefthook│ ◻ Lint-staged│ ◻ pre-commit (Python framework)Trusted by top companies
And used by thousands of open source projects.
Zero-config by design
Hundreds of rules for your framework to optimize your JavaScript / TypeScript code, while still allowing you to customize when needed.
import { defineConfig } from "oxlint";
import core from "ultracite/oxlint/core";
import next from "ultracite/oxlint/next";
import react from "ultracite/oxlint/react";
import vitest from "ultracite/oxlint/vitest";
export default defineConfig({
extends: [
core,
next,
react,
vitest
],
ignorePatterns: core.ignorePatterns,
});import { defineConfig } from "oxfmt";
import ultracite from "ultracite/oxfmt";
export default defineConfig({
...ultracite,
});{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"extends": [
"ultracite/biome/core",
"ultracite/biome/next",
"ultracite/biome/react",
"ultracite/biome/vitest"
]
}import { defineConfig } from "eslint/config";
import core from "ultracite/eslint/core";
import next from "ultracite/eslint/next";
import react from "ultracite/eslint/react";
import vitest from "ultracite/eslint/vitest";
export default defineConfig([
{
extends: [
core,
next,
react,
vitest
],
},
]);export { default } from "ultracite/prettier";export { default } from "ultracite/stylelint";Example config with the core, Next.js, React and Vitest presets.
Designed for humans and AI
Ensure consistent code style and quality across all team members and AI models, eliminating debates over formatting and reducing code review friction.
Agent Integration
Ultracite supports 40+ agents for formatting rules and hooks.
Editor configuration
Automatically generate editor files for format on save, auto-fixes, and TypeScript defaults.
Configurable spec
Zero configuration linter and formatter config out of the box.
.cursor
hooks.json
.vscode
settings.json
AGENTS.md
index.tsx
layout.tsx
utils.ts
globals.css
oxfmt.config.ts
oxlint.config.ts
import React from 'react';
interface User {
id: number;
name: string;
email: string;
}
const UserCard: React.FC<{ user: User }> = ({ user }) => {
return (
<div className="p-4 border rounded-lg shadow-sm">
<h3 className="text-lg font-semibold">{user.name}</h3>
<p className="text-gray-600">{user.email}</p>
</div>
);
};
export default UserCard;Problems
Ultracite
index.tsx
/index.tsx
React is imported but not used
It is not necessary to wrap the return statement in a div.
Output panel
Ultracite uses the VS Code output panel to show problems.
Watch the Biome migration flow in action
These walkthroughs focus on the Biome migration path and show what the setup looks like in a real project instead of a generic landing-page demo.
Works with all your favourite agents...
Ultracite can generate rules files for all these popular IDEs and agents, so you can get the most of out of your AI integrations.
... and all your favourite editors
Ultracite can generate configuration files for all these popular editors, so you can get the most of out of your AI integrations.
Supported by our sponsors
Ultracite is a community-driven project, powered by the generosity of these companies. Become a sponsor.
What the community is saying
Here's what some of the most innovative and forward-thinking developers in the React ecosystem have to say about Ultracite.
I’ve switched to Ultracite for most of my projects now. Can recommend.
Ustedes saben lo insoportable que soy con la configuración de ESLint y eso. No digo que vaya a reemplazar mi super mega config, pero `ultracite` anda muy bien 👀
thanks for building Ultracite @haydenbleasel, it's awesome.
I switched to Ultracite, a fast, simple tool built on Biome. It formats and lints without config issues. ⚡️ Thanks, @haydenbleasel, for this developer-friendly tool! ⚔️ Implementation is very easy. Curious about how it works or if it could replace your setup? Watch my latest
One of the biggest lessons I learned from my first startup is to set the bar extremely high for code quality and linting from day one. If you do not, it turns into an impossible escalator you can never step off. We are big believers in ultracite.ai, and I am always giving @haydenbleasel feedback on how he can make the tool the best it can be.
Try it in your terminal
One command to install. Zero config, works with Biome, ESLint, and Oxlint.