Biome
Linting and formatting configuration with Biome.
YeetCode uses Biome v2.3.13 for both linting and formatting — it fully replaces ESLint and Prettier. A single biome.json at the repo root configures everything.
Why Biome
- One tool for linting + formatting (no ESLint/Prettier conflict headaches)
- Fast — written in Rust, orders of magnitude faster than ESLint
- Zero config needed for most rules — sensible defaults out of the box
Configuration
The full config lives in biome.json at the repo root:
{
"files": {
"includes": [
"**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.json",
"!**/node_modules", "!**/.next", "!**/dist",
"!**/_generated", "!**/convex/_generated", "!**/.source"
]
},
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"a11y": { "noSvgWithoutTitle": "off" },
"style": { "noNonNullAssertion": "off" },
"correctness": { "useExhaustiveDependencies": "off" },
"complexity": { "noForEach": "off" }
}
},
"formatter": {
"indentStyle": "space"
}
}Disabled Rules
| Rule | Why It's Off |
|---|---|
a11y/noSvgWithoutTitle | SVG icons often don't need titles (decorative) |
style/noNonNullAssertion | Non-null assertions (!) are sometimes pragmatic |
correctness/useExhaustiveDependencies | React hook dependency arrays are intentionally managed |
complexity/noForEach | .forEach() is fine for side effects |
Excluded Paths
These directories are excluded from linting/formatting:
node_modules— Dependencies.next— Next.js build outputdist— Build artifacts_generated/convex/_generated— Convex auto-generated code.source— Fumadocs auto-generated files
Auto-Organize Imports
Biome's assist feature automatically organizes imports when formatting:
{
"assist": {
"actions": {
"source": {
"organizeImports": "on"
}
}
}
}This sorts and groups imports consistently across all files.
Commands
# From repo root
bun run format # Format all files with Biome
bun run lint # Lint all workspaces via Turborepo
# From any workspace
biome check . # Lint
biome format . # Check formatting
biome format --write . # Fix formattingEditor Integration
Install the Biome VS Code extension for real-time linting and format-on-save. Configure VS Code to use Biome as the default formatter for TypeScript/JavaScript files.