xojs/xo

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

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 34 minutes ago
Added to GitGenius on September 8th, 2026
Created on August 1st, 2015
Open Issues & Pull Requests: 3 (+0)
GitHub issues: Enabled
Number of forks: 308
Total Stargazers: 7,990 (+0)
Total Subscribers: 54 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

XO is a JavaScript and TypeScript linter that wraps ESLint with opinionated defaults.

The tool solves the problem of linting configuration overhead by providing a zero-config setup that enforces strict, readable code without requiring developers to manage ESLint configuration files. It bundles ESLint with a curated set of plugins including unicorn, import-x, ava, and n, applying sensible defaults for code style decisions like tab indentation, semicolons, single quotes, and trailing commas. The approach eliminates style discussions in pull requests by making these choices upfront while remaining configurable when needed.

XO suits teams and projects that want consistent code quality without configuration burden, particularly those already using or willing to adopt ES modules. It works well for JavaScript and TypeScript projects of any size. The tool includes built-in support for TypeScript, framework-specific configurations for React, Vue, Svelte, and Astro, and optional Prettier integration. It automatically discovers and lints all JavaScript and TypeScript files except commonly ignored paths, caches results between runs for performance, and can fix many issues automatically or open files with errors directly in an editor. The README does not compare XO to other linters.

The project maintains active development with regular updates to its ESLint configuration and plugin integrations. It provides a simple initialization command to add XO to existing projects and supports direct usage as an ESLint configuration for those preferring to run ESLint directly. The tool requires projects to use ES modules, which is a deliberate constraint rather than a limitation.