---
title: FAQ
description: Find answers to common questions about Ultracite, including setup, supported toolchains, editor integrations, and migration choices.
---

## Q: What exactly is Ultracite – how is it different from Biome or ESLint?

Ultracite is essentially a preset configuration built on Biome. Think of Ultracite as a curated bundle of rules and settings, whereas Biome is the engine that actually formats / lints code. You can use Biome by itself, but you’d have to decide which rules to enable and configure its options manually. Ultracite saves you that effort by providing a ready-to-go setup that uses best practices from across the ecosystem.

Compared to ESLint + Prettier, Biome is faster thanks to its Rust implementation and unified (one tool instead of two or three). If you already love tweaking every ESLint rule, Ultracite might feel restrictive; but it aims to eliminate the need for that and adopt sensible defaults.

In short: Biome is the engine (linter / formatter), Ultracite is the configuration.

## Q: Do I still need ESLint or Prettier if I use Ultracite?

No – Ultracite (via Biome) replaces the functionality of ESLint and Prettier for your Javascript / Typescript code. You do not need to run ESLint or Prettier at all. In fact, it’s recommended to remove those configs to avoid conflicts. Ultracite’s output will cover most of the formatting and linting that those tools did, usually with equivalent or stricter rules.

The only case you might still use them is if you have some edge-case plugin not supported by Biome (for example, a very specialized ESLint rule). But ideally, you’d work with Ultracite’s ecosystem entirely.

## Q: What about my non-JS/TS files? Does Ultracite handle those?

Ultracite, via Biome, provides various levels of linting and formatting support for JavaScript, TypeScript, JSX, CSS and GraphQL.

## Q: How often is Ultracite updated?

Ultracite is updated as needed, often following Biome’s release cycle. Since Biome is still evolving, you might see frequent minor releases to Ultracite. These updates can bring new rules, bug fixes, or adjustments to defaults. Given it’s pinned via `-E`, you won’t get surprise updates unless you choose to upgrade.

It’s a good idea to watch the Ultracite repo for releases or check the [Releases](https://github.com/haydenbleasel/ultracite/releases) page. When updating Ultracite, read release notes – occasionally a new rule might be enabled that could surface new warnings in your project (which is a good thing for catching issues, but should be aware of it). Upgrading Biome along with Ultracite is usually straightforward via package manager.

## Q: If I disagree with a rule Ultracite enforces, what should I do?

You have a few options:

- Configure it off or to a different level in your `biome.jsonc` (quick fix for your project).
- Open a [discussion](https://github.com/haydenbleasel/ultracite/discussions/) on GitHub repo if the rule should be adjusted for everyone. Perhaps the maintainers might agree it’s too strict or could be optional.
- If it’s a stylistic thing, remember the goal of Ultracite is to have convention over configuration – sometimes it’s worth adapting to the tool’s style for consistency across projects. But of course, your project’s needs come first.

Ultimately, you control your project’s lint config. Ultracite is a starting point; feel free to mold it, but ideally in minor ways. If you find yourself turning off a majority of rules, then Ultracite might not be the right preset for your team’s preferences (though that would be uncommon).

In that case, you could build your own Biome config from scratch, but you’d lose a lot of the convenience. Usually, a few tweaks is all that’s needed to make Ultracite fit nicely.

## Q: Can I use Ultracite without VS Code / Cursor / Windsurf?

Yes — we focus on VS Code and its forks as they're the most popular IDEs for modern web development, but Biome can be used purely via CLI or with other IDEs.

Check out Biome's [first-party](https://biomejs.dev/guides/editors/first-party-extensions/) and [third-party](https://biomejs.dev/guides/editors/third-party-extensions/) editor integrations to learn more.

## Q: How do I know what rules Ultracite is enforcing? Is there a list?

Yes, check the [Biome configs](https://github.com/haydenbleasel/ultracite/tree/main/packages/cli/config/biome), [Oxlint configs](https://github.com/haydenbleasel/ultracite/tree/main/packages/cli/config/oxlint), and [ESLint configs](https://github.com/haydenbleasel/ultracite/tree/main/packages/cli/config/eslint) in the GitHub repo for the rules that are enabled. Each framework (core, React, Next.js, etc.) has its own config file that extends the core ruleset.

## Q: Can Ultracite fix all issues it finds?

Not all, but many. Ultracite will auto-fix issues that are safe and deterministic to fix. These include formatting issues and many lint errors (particularly stylistic or simple code transformations like removing unused imports, adding missing parentheses, changing `==` to `===`, etc.).

Some fixes are available but intentionally require `--unsafe` because they may
change behavior. For example, Ultracite enables Biome's `noSubstr` rule, but
rewriting `substring()` or `substr()` to `slice()` only happens when you run
`ultracite fix --unsafe`.

More complex issues (business logic or things that require developer intention) are left for you to fix. For example, it won’t magically rename variables to follow a naming convention or add missing error handling code – it will just warn you.

The philosophy is similar to ESLint’s: provide fixes where possible, but don’t risk altering code behavior. Always review the Problems panel or CLI output for any remaining warnings after auto-fix.

## Q: Where can I learn more about Biome (the tool Ultracite uses)?

[Biome](https://biomejs.dev/) has its own website with documentation, and you can find more technical details there. If you’re curious about how it formats code or the philosophy behind certain choices, the Biome docs are the best resource.

Additionally, there are blog posts and community articles about Biome’s rise as a successor to Rome. Understanding Biome can help you better understand Ultracite’s capabilities. However, you don’t need to learn Biome in-depth to use Ultracite effectively – Ultracite’s goal is to abstract those details away for most users.

## Q: How do I disable Ultracite for a specific project or file?

If you have a project where you temporarily don't want Ultracite, you can simply not include the `extends: ["ultracite/biome/core"]` in `biome.jsonc` (or remove the config file). If the VS Code extension is installed, it may still try to format on save using Biome's defaults.

To fully disable, you could turn off `formatOnSave` or uninstall the Biome extension for that workspace. For a specific file, as mentioned, use ignore comments or patterns. Essentially, Ultracite is opt-in per project via the config. If it's not configured, it won't run (Biome itself might still run formatting if triggered, but not linting rules).

## Q: I'm getting a corepack error during installation – what should I do?

Some users have encountered signature verification errors when running `pnpm dlx ultracite init` with corepack, particularly on Node.js v22 with older corepack versions. The error typically looks like "Cannot find matching keyid" during package installation.

Here are the recommended solutions:

- **Update corepack**: Upgrade to corepack version 0.34.0 or later. You can do this with `corepack prepare pnpm@latest --activate` or by following the [pnpm corepack setup guide](https://pnpm.io/installation#using-corepack).
- **Update Node.js**: If you're on Node.js v20.x, consider upgrading to v22 or later, which includes a more recent corepack version.
- **Use npx instead**: If corepack continues to cause issues, you can use `npx ultracite init` instead of `pnpm dlx ultracite init`.

If none of these work, please open an issue on the [Ultracite GitHub repo](https://github.com/haydenbleasel/ultracite/issues) with details about your Node.js and corepack versions.

---

We hope these FAQs clear up common points of confusion. If you have a question that isn't answered here, feel free to reach out on the project's GitHub or community channels. Ultracite is here to make your developer life easier – so feedback and questions are always welcome to help improve it!
