Linting & formatting
How Zeno lints and formats code with Ultracite and Biome
Zeno lints and formats code with Ultracite, a zero-config preset for Biome.
Ultracite ships presets for TypeScript, React and Next.js, and the root biome.jsonc extends all three, so you don't write lint or format rules from scratch. Biome replaces both ESLint and Prettier, and runs faster than either.
Commands
# Check for issues
pnpm lint
# Auto-fix issues
pnpm lint:fixConfiguration
The root biome.jsonc extends the Ultracite presets:
{
"extends": [
"ultracite/biome/core",
"ultracite/biome/react",
"ultracite/biome/next"
]
}Formatting
Biome handles all formatting with these settings:
- Double quotes for strings
- Semicolons only where needed, relying on automatic semicolon insertion (ASI)
- Sorted Tailwind classes via the
useSortedClassesrule (also insideclsxcalls) - Sorted object keys via the
useSortedKeysassist action
Overrides
The repo includes overrides for specific paths. For example, packages/ui has relaxed rules for its shadcn components:
{
"overrides": [
{
"includes": ["packages/ui/src/**"],
"linter": {
"rules": {
"correctness": {
"useExhaustiveDependencies": "off"
}
}
}
}
]
}Add your own overrides to the root biome.jsonc.
Editor integration
The Biome extension shows lint and format issues in Cursor or VS Code as you type, and the workspace settings apply its fixes on save. See IDE setup for the extensions and settings.