Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Node.js
  3. xo

xo

MITTypeScriptv2.0.2

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

GitHubGitHub
8.0k stars304 forks0 contributors

What is xo?

XO is an opinionated linter for JavaScript and TypeScript that wraps ESLint with a curated set of rules and plugins. It enforces consistent code style with minimal configuration, automatically fixes issues, and includes support for modern frameworks and tools. The goal is to eliminate style debates and simplify linting setup in development workflows.

Target Audience

JavaScript and TypeScript developers, especially those working in teams who want to enforce code consistency without spending time configuring ESLint. It's also suitable for projects adopting modern frameworks like React, Vue, Svelte, or Astro.

Value Proposition

Developers choose XO because it offers a batteries-included linting experience with zero initial configuration, automatic fixes, and seamless integration with popular tools. Its opinionated defaults reduce setup time and decision-making, while remaining flexible enough to customize when needed.

Overview

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

Use Cases

Best For

  • Enforcing consistent code style across JavaScript/TypeScript projects with minimal setup
  • Teams wanting to avoid ESLint configuration debates and maintenance
  • Projects using TypeScript that need automatic tsconfig.json handling
  • Integrating linting into modern frameworks like React, Vue, Svelte, or Astro
  • Automatically fixing common code issues during development
  • Improving code readability and maintainability with opinionated defaults

Not Ideal For

  • Projects using CommonJS modules instead of ESM
  • Teams with highly customized ESLint configurations that deviate significantly from XO's defaults
  • Codebases where the opinionated style (e.g., tab indentation, semicolons) conflicts with existing conventions
  • Environments requiring linting for languages or frameworks not supported by ESLint plugins (e.g., non-JavaScript languages)

Pros & Cons

Pros

Zero-Config Setup

Works immediately with curated rules like tab indentation and semicolons, eliminating the need for initial ESLint configuration and reducing team debates, as highlighted in the 'Zero-config, but configurable when needed' philosophy.

Automatic Fixes

Corrects many common issues automatically with the --fix flag, streamlining development workflows and reducing manual code cleanup, as demonstrated in the CLI options.

Built-in Plugin Suite

Includes useful ESLint plugins like unicorn and import-x out of the box, providing comprehensive linting coverage without additional installation or setup, as listed in the 'Highlights' section.

TypeScript Support

Lints TypeScript files by default with automatic tsconfig.json handling, simplifying TypeScript project integration without manual configuration, as detailed in the 'TypeScript' section.

Cons

ESM Requirement

Requires projects to use ESM modules, which can be a barrier for legacy CommonJS codebases or teams not ready to migrate, as explicitly stated in the README: 'XO requires your project to be ESM.'

Opinionated Defaults

Enforces specific code styles like tab indentation and semicolons by default, which may not align with all team preferences and requires configuration overrides, adding friction for those with differing conventions.

Complex Advanced Configuration

While zero-config for basics, customizing beyond defaults involves navigating ESLint's flat config system, which can be complex and time-consuming, as noted in the 'Config' section's detailed options.

Frequently Asked Questions

Quick Stats

Stars7,970
Forks304
Contributors0
Open Issues4
Last commit22 days ago
CreatedSince 2015

Tags

#developer-tools#automated-fixes#zero-config#linter#xo#code-style#nodejs#code-quality#best-practices#eslint-rules#eslint-plugin#eslint#unicorns#static-analysis

Built With

T
TypeScript
N
Node.js
E
ESLint

Included in

Node.js65.5kStatic Analysis & Code Quality14.5k
Auto-fetched 1 day ago

Related Projects

ESLintESLint

Find and fix problems in your JavaScript code.

Stars27,207
Forks4,971
Last commit2 days ago
localtunnellocaltunnel

expose yourself

Stars22,242
Forks1,555
Last commit7 months ago
PHP ParserPHP Parser

A PHP parser written in PHP

Stars17,426
Forks1,120
Last commit1 month ago
TypeScript ESLintTypeScript ESLint

:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript

Stars16,216
Forks2,904
Last commit1 day 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