ZenoZENO

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:fix

Configuration

The root biome.jsonc extends the Ultracite presets:

biome.jsonc
{
  "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 useSortedClasses rule (also inside clsx calls)
  • Sorted object keys via the useSortedKeys assist action

Overrides

The repo includes overrides for specific paths. For example, packages/ui has relaxed rules for its shadcn components:

biome.jsonc
{
  "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.