Just Fucking Use Ultracite

Stop wasting hours configuring your linting tools. Whether you use ESLint, Biome, or Oxlint—Ultracite gives you battle-tested presets so you can get back to actually building things.

300+

Linting rules

2

Dependencies

0

Fucks to give

Your linting setup is a disaster

Be honest with yourself. Your current setup probably looks like this:

And the worst part? Every new project means doing this shit all over again.

The Graveyard

Here lies everything you get to delete. May they rest in peace.

.eslintrc.js

.eslintignore

.prettierignore

.editorconfig

eslint-config-prettier

eslint-plugin-import

eslint-plugin-react

eslint-plugin-react-hooks

@typescript-eslint/parser

@typescript-eslint/eslint-plugin

...and 47 other packages you forgot you installed

What the fuck is Ultracite?

Ultracite is a collection of zero-config presets for your favorite linting tools. Just pick your provider and be done with it.

npx ultracite init

Done. You now have hundreds of battle-tested linting rules, a formatter that doesn't fight your linter, and your AI assistant actually knows about your code style.

Smart people who stopped fucking around

These companies decided life's too short for config files.

Vercel
Adobe
Clerk
Tencent
Workday
ElevenLabs
Axiom
Redpanda
Arcade
Magic UI

Plus the Alan Turing Institute, the French Government, and the US Department of Veterans Affairs. Yes, really.

Why it's fucking great

Use whatever tools you want

Love ESLint's ecosystem? Use it. Want Biome's speed? Go for it. Excited about Oxlint? We got you. Ultracite doesn't care—it just gives you great defaults for all of them.

Your AI actually listens

Ultracite generates rule files for Cursor, Claude Code, Windsurf, GitHub Copilot, and more. So when you ask your AI to write code, it follows your rules instead of making up its own bullshit.

Hundreds of rules, zero research

We already figured out which rules matter. Type safety, accessibility, performance, security—it's all there. You don't need to read through 500 rule descriptions to build a good config.

Zero config, maximum opinions

Stop bikeshedding about tabs vs spaces or semicolons. Ultracite already decided for you. You're welcome.

Works with everything

Next.js, React, Vue, Svelte, Astro, Remix—it doesn't matter. Ultracite has framework-specific presets for all of them. Just pick yours and go.

What Ultracite decides for you

No more arguments. No more "let's discuss this in the next sprint." Here's what you're getting:

Indentation2 spaces
SemicolonsAlways
QuotesSingle
Line width80 chars
Trailing commasAll
Line endingsLF

Don't like it? Too bad. (Just kidding, you can override anything. But you won't.)

Rules for everything you forgot to care about

Ultracite doesn't just format your code. It catches bugs, improves accessibility, and stops you from shipping garbage.

Accessibility

Stop excluding users. Add alt text.

Security

No eval(), no dangerouslySetInnerHTML.

Performance

Catch expensive re-renders early.

Correctness

Find bugs before your users do.

Complexity

Keep functions readable. No 500-line monsters.

Style

Consistent code across your whole team.

Your AI assistant is finally useful

Ever noticed how Copilot ignores your linting rules? That's because it doesn't know they exist. Ultracite generates rule files that your AI can actually read.

Cursor.cursor/rules/ultracite.mdc
Claude CodeCLAUDE.md
GitHub Copilot.github/copilot-instructions.md
Windsurf.windsurf/rules/ultracite.md

Now when you ask AI to write code, it writes code your way. Revolutionary, I know.

Pick your weapon

Can't decide which linter to use? Here's the honest breakdown:

ESLintBiomeOxlint
SpeedSlowFast as fuckFast as fuck
EcosystemHugeGrowingNew
FormatterPrettierBuilt-inOxfmt
Config UXPainNiceNice
MaturityBattle-testedProduction-readyGetting there

TL;DR: ESLint if you need specific plugins. Biome if you want speed and simplicity. Oxlint if you like living on the edge.

Already have a mess?

Migrating is easier than you think. Here's the plan:

  1. Delete your existing shit config
  2. Run npx ultracite init
  3. Run npx ultracite fix to auto-fix everything
  4. Commit the changes
  5. Never think about linting config again

That's it. The whole migration takes about 5 minutes. You've spent longer reading this page.

"But what about..."

"I have custom rules I need"

Cool. Override them. Ultracite is just a preset—you can add whatever rules you want on top. But you probably don't need to. The defaults are good.

"I already have a setup that works"

Does it though? When's the last time you updated those rules? Are your formatter and linter still fighting? Does your AI know about any of it? Ultracite keeps everything in sync and up-to-date.

"My team won't like the style choices"

Your team will like shipping code faster. Stop having meetings about formatting. Accept the defaults and move on with your lives.

Should you use Ultracite?

Do you write JavaScript or TypeScript?

├─ Yes → Use Ultracite

└─ No → Why are you even here?

Do you enjoy configuring linters?

├─ Yes → You're lying. Use Ultracite.

└─ No → Use Ultracite

Do you have better things to do?

├─ Yes → Use Ultracite

└─ No → That's sad. Use Ultracite anyway.

Just do it

You've been thinking about fixing your linting setup for months. Here's your sign. Run this and pick your preferred toolchain:

npx ultracite init

That's literally it. ESLint, Biome, Oxlint—whatever you pick, you'll get a bulletproof config in seconds. Stop overthinking. Stop researching. Stop comparing. Just fucking use Ultracite.

Learn more at ultracite.ai