30x faster linting and formatting - ESLint and Prettier replaced with OXC
TurboStarter replaces ESLint and Prettier with OXC's Rust-based toolchain. Linting and formatting now run in seconds instead of minutes across our web, mobile, and extension monorepo.

In a monorepo that spans web apps, mobile apps, and browser extensions, every second spent waiting on tooling adds up. That's why we migrated from ESLint and Prettier to OXC — a Rust-based toolchain for JavaScript and TypeScript.
The result: linting and formatting that used to take minutes now complete in under 20 seconds across the entire codebase, with near-instant feedback during development.
The numbers
Real numbers from the TurboStarter monorepo:
- Linting: ~14 seconds — down from 3+ minutes with ESLint in comparable monorepos
- Formatting: ~500 milliseconds — down from 35+ seconds with Prettier
- Type checking: 0 seconds (included in linting) — down from 3+ minutes with TypeScript
These numbers include full monorepo coverage across all apps and packages.
What faster tooling means in practice?
- AI agents no longer wait. If you use Cursor, Claude Code, or other AI coding assistants, every lint/format cycle used to cost 10–30 seconds of idle time. At sub-10-second speeds, agents get quick feedback and move on. This compounds when an agent runs dozens of iterations in a single session.
- Developer experience and CI improve. Locally, you get near-instant feedback on every save. In CI, the lint + format step shrinks from a meaningful chunk of your pipeline to a small fraction. Our Lefthook pre-commit hooks run format and lint on staged files in parallel — and they finish before you notice.
- Configuration stays manageable. Instead of dozens of per-package ESLint configs, we use a shared config architecture. One
tooling/oxlintpackage exports composable configs (base, Next.js, React, Expo), and each app extends what it needs. Same story for formatting: a singletooling/oxfmtconfig at the root. - Fewer scripts, simpler setup. Typecheck is included in the lint command, so you no longer need a separate
tsc --noEmitortypecheckscript. One command covers linting and type checking — fewer scripts to maintain and fewer steps in CI.
The tooling swap
oxlint replaces ESLint. It includes built-in support for React, Next.js, and import rules. We use oxlint-tsgolint to run selected ESLint plugins (Turbo, React Query, unused-imports) so we keep framework-specific rules without the full ESLint overhead.
oxfmt replaces Prettier. It's mostly compatible with Prettier's output. After migrating, you may see many files reformatted — the changes are cosmetic and safe to commit in bulk.
We have two new tooling packages in the monorepo:
tooling/oxlint- linting rules (replacingeslint)tooling/oxfmt- formatting settings (replacingprettier)
And two config files at the root:
oxfmt.config.ts— extends shared configs fromtooling/oxfmtoxlint.config.ts- extends shared configs fromtooling/oxlint
The commands stay familiar:
pnpm lint # Run oxlint
pnpm lint:fix # Auto-fix lint issues
pnpm format # Check formatting with oxfmt
pnpm format:fix # Format with oxfmtWe ship .vscode/settings.json with OXC as the default formatter and format-on-save. Install the Oxc VSCode extension for the best experience.
Try it in TurboStarter
TurboStarter ships with OXC out of the box. When you create a new project with our CLI or clone the repo, you get oxlint and oxfmt pre-configured for web, mobile, and extension apps. No extra setup — just run pnpm lint and pnpm format:fix and enjoy the speed.
New to TurboStarter? Use the TurboStarter CLI to scaffold a project with OXC, Turborepo, and our full stack in seconds.
Native mobile apps for web developers - complete Expo (React Native) guide
Learn how to build native mobile apps with Expo and React Native using your existing web development skills. This comprehensive guide covers setup, development workflow, UI components, device features, and deployment strategies.
Renovate vs Dependabot - what's the best tool to automate your dependency updates?
Compare Renovate and Dependabot to find the best dependency automation tool for your project. Learn key features, benefits, and implementation strategies to make an informed choice.


