Framework Presets
Ultracite provides framework-specific configurations that you can extend in addition to the basecore configuration. This allows you to add framework-specific linting rules without bloating the base config or dealing with irrelevant rules.
The pattern is the same across all supported linters — import the core preset, then add any framework presets you need:
biome.jsonc
Default Configuration
When you include thecore preset, you’re pulling in Ultracite’s base configuration. This preset includes framework-agnostic rules and settings. Some notable aspects:
- TypeScript strictness: Enables strict checks and lint rules requiring robust typing. Discourages use of
any, requires handling ofnull/undefined, and prefers explicit types where needed. - Best practices: Common rules like no unused vars, no explicit eval, no prototype pollution, etc.
- Accessibility: ARIA attributes, semantic HTML, keyboard navigation, and other a11y rules are enabled by default.
- Formatting conventions: 2-space indentation, 80-character line width, semicolons, trailing commas, and double quotes.
Safe Fixes
Most Ultracite rules only report errors — they don’t automatically modify your code. However, a few rules are configured with"fix": "safe", meaning they will auto-fix when you run ultracite fix. These fixes are non-breaking and safe to apply automatically:
| Rule | Description |
|---|---|
noUnusedImports | Removes unused import statements |
useBlockStatements | Wraps single-line control flow bodies in curly braces |
useSortedClasses | Sorts Tailwind CSS classes into a consistent order |
fix property.
Overriding Rules
Each linter has its own way to disable or modify rules. For example, to disable thenoAutofocus rule for Biome, you can do the following:
biome.jsonc