Slow pre-commit hooks can quietly kill developer productivity.

In one of our projects, engineers were waiting up to 30 seconds just to commit code. It doesn’t sound dramatic – until you multiply it by dozens of commits per day and an entire team.

The result? Lost time, broken flow, and slower delivery.

In this case study, we’ll show how we reduced pre-commit execution time to ~1.8 seconds using Biome.js, achieving a 92.6% performance improvement – without sacrificing code quality.

The Problem: ESLint + Prettier Bottleneck

Our setup was typical for modern JavaScript/TypeScript projects:

  • ESLint for linting
  • Prettier for formatting
  • lint-staged for pre-commit automation

But in a large monorepo, this stack became a bottleneck:

  • ⏱ ~24–30 seconds per commit
  • ❌ Slowed down developer workflow
  • ❌ Reduced commit frequency
  • ❌ Increased frustration across the team

This is a common issue in scaling frontend and fullstack teams.

⚡ The Solution: Biome.js + Minimal ESLint (Hybrid Approach)

Instead of fully replacing ESLint, we introduced a hybrid architecture:

👉 Biome handles 90% of the work
👉 ESLint remains for critical edge cases

🔧 New Pre-commit Pipeline

1. Biome (Rust-based core engine)

  • Formatting (quotes, semicolons, indentation)
  • Linting (TypeScript, React, accessibility, security)
  • Import sorting
  • JSON formatting

2. Minimal ESLint

  • JSDoc validation (critical for large codebases)
  • Promise rules (param-names)
  • Custom rules not supported by Biome

3. Prettier (limited usage)

  • Only for Tailwind CSS class sorting in selected apps

📈 Performance Results

The improvement was immediate and significant:

Metric Before After Improvement
Pre-commit hooks 24–30s ~1.8–8s 75–92% faster
Formatting Prettier Biome ~25× faster
Linting ESLint Biome + minimal ESLint ~15× faster

🧪 Benchmark

  • Before: 27.2s
  • After: 1.8s

👉 92.6% faster execution
👉 15× speed improvement
👉 ~24 seconds saved per commit

Business Impact (Why This Matters)

This isn’t just a technical improvement – it directly affects delivery speed and costs.

What changed for the team:

  • 🚀 Faster commits → smoother development flow
  • 🔁 More frequent commits → smaller, safer changes
  • ⚡ Faster feedback loop → fewer bugs reaching CI/CD
  • 👨‍💻 Better developer experience → higher productivity

👉 For teams working in monorepos, this can translate into measurable engineering cost savings.

Why Biome.js?

Biome is a modern alternative to ESLint + Prettier, designed for performance:

  • ⚙️ Written in Rust (extremely fast)
  • 📦 Zero dependencies
  • 🔄 Unified formatter + linter
  • 🚀 Optimized for large-scale codebases

👉 It’s particularly effective in monorepos and high-scale frontend platforms.

Code Quality: 92% Rule Alignment

A key requirement was maintaining code quality.

We achieved 92% rule alignment with the previous ESLint setup, preserving:

  • TypeScript strict rules
  • React & Hooks best practices
  • Accessibility checks
  • Security linting
  • Unused variable detection
  • Import organization
  • JSDoc validation (1.1M+ comments)
  • Promise handling rules

No critical regressions.

Zero Breaking Changes

The migration was fully backward compatible:

  • ✅ Existing commands still work (yarn lint, yarn lint:fix)
  • ✅ No changes required from developers
  • ✅ ESLint still available where needed
  • ✅ CI/CD pipelines unchanged

When Should You Consider Biome?

Biome is a great fit if you have:

  • Large monorepos
  • Slow lint-staged pipelines
  • Complex ESLint configurations
  • Teams with 5+ developers
  • Performance issues in CI/CD or local workflows

When Biome Might NOT Be the Right Choice

Consider staying with ESLint if:

  • You rely heavily on custom ESLint plugins
  • You have strict enterprise linting policies
  • Your ruleset depends on unsupported features

Final Takeaway

By switching to a Biome-first hybrid setup, we achieved:

  • Up to 92% faster pre-commit hooks
  • 🚀 13.5× performance improvement
  • 🔒 No loss in code quality
  • 🔄 Zero breaking changes

👉 A small tooling change with a massive impact on developer productivity.

Need Help Optimizing Your Engineering Workflow?

If your team is struggling with:

  • slow CI/CD pipelines
  • monorepo performance issues
  • frontend scalability
  • developer productivity bottlenecks

👉 We help companies solve exactly these problems at FireUp.