# eslint-config-universe

> Shared ESLint configs for internal Expo projects.

Latest version **16.0.0** (published 2026-06-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install eslint-config-universe
pnpm add eslint-config-universe
yarn add eslint-config-universe
bun add eslint-config-universe
```

## Health

**Score 60/100 (C)** — status: active.

Positive: no vulnerabilities; high maintenance score; popular repo; extremely popular.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 16.0.0 |
| Published | 2026-06-25 |
| First published | 2017-08-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Unpacked size | 36.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 52461 |
| Author | Expo |
| Maintainers | ide, brentvatne, expoadmin, exponent, bycedric, kudochien, alanhughes, tsapeta, expo-bot, philpl, wschurman |
| Keywords | eslint-config, expo, react-native |

## Links

- npm: https://www.npmjs.com/package/eslint-config-universe
- Repository: https://github.com/expo/expo
- Homepage: https://github.com/expo/expo/tree/main/packages/eslint-config-universe
- Issues: https://github.com/expo/expo/issues
- npm.io page: https://npm.io/package/eslint-config-universe

## Dependencies (10)

- [globals](https://npm.io/package/globals.md) ^16.0.0
- [eslint-plugin-n](https://npm.io/package/eslint-plugin-n.md) ^17.17.0
- [eslint-plugin-node](https://npm.io/package/eslint-plugin-node.md) ^11.1.0
- [eslint-plugin-react](https://npm.io/package/eslint-plugin-react.md) ^7.37.5
- [eslint-plugin-import](https://npm.io/package/eslint-plugin-import.md) ^2.31.0
- [eslint-config-prettier](https://npm.io/package/eslint-config-prettier.md) ^9.1.0
- [eslint-plugin-prettier](https://npm.io/package/eslint-plugin-prettier.md) ^5.2.6
- [@typescript-eslint/parser](https://npm.io/package/@typescript-eslint/parser.md) ^8.59.0
- [eslint-plugin-react-hooks](https://npm.io/package/eslint-plugin-react-hooks.md) ^7.0.0
- [@typescript-eslint/eslint-plugin](https://npm.io/package/@typescript-eslint/eslint-plugin.md) ^8.59.0

## Alternatives

- [eslint-plugin-sonarjs](https://npm.io/package/eslint-plugin-sonarjs.md) — 2.9M weekly downloads
- [eslint-config-expo](https://npm.io/package/eslint-config-expo.md) — 1.5M weekly downloads
- [@matter/protocol](https://npm.io/package/@matter/protocol.md) — 63.5K weekly downloads
- [@eventcatalog/linter](https://npm.io/package/@eventcatalog/linter.md) — 24.8K weekly downloads
- [@inrupt/eslint-config-base](https://npm.io/package/@inrupt/eslint-config-base.md) — 4.5K weekly downloads

## Recent versions

- 16.0.0 (latest) — 2026-06-25
- 16.1.2 (next) — 2026-09-29
- 16.0.1-canary-20260909-ea7a89a (canary) — 2026-09-09
- 15.2.1-canary-20260701-9100865 (canary-sdk-56) — 2026-07-01
- 15.0.4-canary-20260429-a5e59cf (canary-sdk-55) — 2026-04-29
- 14.0.0 (sdk-52) — 2024-10-22
- 12.1.0 (sdk-51) — 2024-04-18
- 12.0.0 (sdk-50) — 2023-08-11
- 16.1.1 — 2026-09-21
- 16.1.0 — 2026-09-10
- 16.0.1-canary-20260902-26df09e — 2026-09-02
- 16.0.1-canary-20260812-27f94d4 — 2026-08-12
- 16.0.1-canary-20260806-8c2d007 — 2026-08-06
- 15.2.1-canary-20260723-64edab9 — 2026-07-23
- 15.2.1-canary-20260720-b6d63bc — 2026-07-20
- … 188 more at https://npm.io/package/eslint-config-universe/versions

## README

# eslint-config-universe

Shared ESLint configs for internal Expo projects.

## Installation

```sh
yarn add --dev eslint-config-universe
```

You will also need to install `eslint` and `prettier`:

```sh
yarn add --dev eslint@8 prettier
```

## Usage

Import this config into your own ESLint configuration using the `extends` option. ESLint checks both `package.json` and `.eslintrc.*` files for its configuration:

### package.json
```js
{
  "eslintConfig": {
    // Choose from universe/native, universe/node, universe/web
    "extends": "universe"
  }
}
```

### .eslintrc.js
```js
module.exports = {
  extends: 'universe',
};
```

## Customizing Prettier

If you would like to customize the Prettier settings, create a file named `.prettierrc` in your project directory. An example of Prettier configuration file:

```json
{
  "printWidth": 100,
  "tabWidth": 2,
  "singleQuote": true,
  "bracketSameLine": true
}
```

Read more about [configuring `prettier`](https://prettier.io/docs/en/configuration.html) and [all of the available options](https://prettier.io/docs/en/options.html).

## Support for Different Platforms

There are several configs for different platforms. They are:
* `universe`: the basic config for JavaScript projects for which there isn't a more specific config,
* `universe/native`: the config for React Native projects, including Expo projects, with support for React and JSX,
* `universe/web`: the config for code that runs in web browsers, with support for React and JSX,
* `universe/node`: the config for code that runs in Node.

For an Expo project, your configuration might look like this:

```js
"eslintConfig": {
  "extends": "universe/native"
}
```

You also can extend multiple configs, which is useful for projects that span several platforms:

```js
"eslintConfig": {
  "extends": ["universe/node", "universe/web"]
}
```

## Optional Additional TypeScript Typed Linting

Universe also provides optional additional config for `typescript-eslint` rules that make use of the parsed type information. Note that this may increase the time it takes to run lint for large projects. More information can be found at [TypeScript ESLint website](https://typescript-eslint.io/docs/linting/type-linting).

To enable the additional config, the following changes to your config are required:

### .eslintrc.js

```diff
module.exports = {
  extends: [
    'universe',
+   'universe/shared/typescript-analysis',
  ],
+ overrides: [
+   {
+     files: [
+       '*.ts',
+       '*.tsx',
+       '*.d.ts'
+     ],
+     parserOptions: {
+       project: './tsconfig.json'
+     },
+   },
+ ],
};
```

More information on `parserOptions.project` option can be found in the [`typescript-eslint` repository](https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/parser#parseroptionsproject).

## Philosophy

This config is designed to mark severe problems (ex: syntax errors) as errors and stylistic issues as warnings. This lets your team apply policies like, "make sure a commit has no errors but ignore warnings if the commit didn't introduce them."

It's also designed to be a more lenient config for teams who are stronger at decision-making and have a culture of osmotically learning coding guidelines and benefit more from flexibility than rigid rules.

---
_Source: https://npm.io/package/eslint-config-universe · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
