Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. ESLint
  3. XO

XO

MITTypeScriptv5.0.1

An opinionated, zero-config ESLint wrapper for JavaScript/TypeScript with great defaults and automatic fixes.

GitHubGitHub
8.0k stars309 forks0 contributors

What is XO?

XO is an opinionated linter for JavaScript and TypeScript that wraps ESLint with curated defaults to enforce consistent code style. It requires minimal configuration, automatically lints all relevant files, and includes useful plugins to catch common issues. The tool helps teams avoid style debates by providing a sensible baseline that 'just works' while remaining fully configurable.

Target Audience

JavaScript and TypeScript developers, especially those working in teams who want to enforce code style consistency without spending time configuring ESLint rules. It's ideal for projects seeking a 'batteries-included' linting setup.

Value Proposition

Developers choose XO because it reduces setup time to near zero with smart defaults, includes a curated set of modern ESLint plugins out of the box, and offers automatic fixes for many issues. Its pragmatic approach balances strong opinions with configurability, making it easier to maintain consistent code across projects.

Overview

❤️ JavaScript/TypeScript linter (ESLint wrapper) with great defaults

Use Cases

Best For

  • Teams adopting a consistent code style without lengthy configuration debates
  • JavaScript/TypeScript projects wanting a 'batteries-included' linting setup
  • Enforcing readable code with automatic fixes for common style issues
  • Projects using TypeScript that need automatic tsconfig handling
  • Integrating linting into editors and build tools with minimal effort
  • Incrementally adopting stricter linting rules in large codebases

Not Ideal For

  • Projects entrenched in CommonJS modules, as XO requires ESM adoption
  • Teams with existing, finely-tuned ESLint configurations who prefer full control over rule selection
  • Developers seeking a minimal linter without bundled plugins like unicorn or import-x

Pros & Cons

Pros

Zero-Configuration Setup

XO works immediately by linting all JS/TS files with sensible defaults, ignoring common paths automatically, so you can enforce code style without any initial setup.

Comprehensive Plugin Bundle

It includes powerful ESLint plugins like unicorn and import-x out of the box, catching a wide range of code quality issues without manual installation or configuration.

Automatic TypeScript Handling

XO seamlessly lints TypeScript files, automatically detecting and using tsconfig.json, eliminating the need for separate TypeScript linting setup or complex parser options.

Performance Optimizations

With built-in caching, XO speeds up subsequent lint runs in large projects by reusing previous results, making it efficient for continuous integration workflows.

Cons

ESM-Only Requirement

XO mandates that your project uses ESM modules, which forces a migration from CommonJS and can be a significant barrier for legacy codebases or tools not supporting ESM.

Complex Customization

While zero-config for basics, overriding defaults or adding framework-specific linting requires understanding and managing ESLint's flat config, which can be daunting and error-prone.

Bundled Opinion Overhead

The included plugins and strict defaults, like enforcing semicolons or tab indentation, might impose rules that some teams find unnecessary, requiring explicit configuration to disable or adjust.

Frequently Asked Questions

Quick Stats

Stars7,994
Forks309
Contributors0
Open Issues3
Last commit1 month ago
CreatedSince 2015

Tags

#developer-tools#zero-config#linter#prettier-integration#xo#code-style#nodejs#typescript#code-quality#best-practices#eslint-rules#code-linting#eslint-plugin#javascript#shareable-configs#eslint#unicorns#static-analysis

Built With

N
Node.js
E
ESLint

Included in

ESLint4.7k
Auto-fetched 1 day ago

Related Projects

StandardStandard

🌟 JavaScript Style Guide, with linter & automatic code fixer

Stars29,426
Forks2,299
Last commit1 year ago
eslint-config-prettiereslint-config-prettier

Turns off all rules that are unnecessary or might conflict with Prettier.

Stars5,898
Forks260
Last commit2 days ago
Node.js Standard StyleNode.js Standard Style

Node.js Standard Style

Stars6
Forks1
Last commit9 years ago
SuperlintSuperlint

Supermind linting standards

Stars5
Forks0
Last commit9 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub