Introduction
A brief overview of Ultracite and how it works.
Ultracite is a fast, intuitive and simple development tool that brings automated code formatting and linting to your JavaScript / TypeScript projects. Built on top of Biome (a Rust-based code formatter and linter), Ultracite provides a robust, preconfigured setup optimized for modern web development.
Install Ultracite quickly by running:
npx ultracite initThen follow the Usage guide to get started, or check out Setup for more granular control.
How does Ultracite work?
Once set up, Ultracite runs mostly in the background — automatically formatting your code and applying fixes every time you save your files. Because Biome is so fast, even on large projects, running Ultracite’s checks is extremely fast and can comfortably run on every save without lag. This means you can focus on building and shipping instead of manually correcting style issues or debugging runtime errors.
What is Biome?
Biome is an all-in-one toolchain for code formatting and linting. Biome, written in Rust, combines the functionality of tools like Prettier (code formatter), ESLint (linter), and Stylelint into a single fast binary. Ultracite leverages Biome’s speed and capabilities, providing a preset of rules and settings tailored for modern TypeScript projects.
Goals
Ultracite's goals from a development perspective are:
Lightning-fast performance
Ultracite benefits from the performance of Biome and the Rust implementation and we should endevour to keep it that way.
Zero-config by design
Ultracite is designed to be zero-config by default. This allows new users to get started quickly and without the need to configure the linter/formatter; and saves teams time when onboarding new developers.
The goal is to provide a default configuration that is good for most projects, but also provide a way to customize the configuration for those who need it.
Intuitive and simple
Ultracite should be as invisible as possible. Preferably, it should not require any configuration or action from the user. If required, it should provide feedback in a way that is easy to understand and act on.
Maximum type safety
Ultracite should be designed to be as type safe as possible. It should use TypeScript's strict mode and additional lint rules to catch errors and provide suggestions for improvements.
Plays nice with others
Ultracite should be able to work with other tools and libraries and not conflict with them.