---
url: /docs/guide/usage/linter/rules/import/no-anonymous-default-export.md
---

### What it does

Reports if a module's default export is unnamed.
This includes several types of unnamed data types;
literals, object expressions, arrays, anonymous functions, arrow functions,
and anonymous class declarations.

### Why is this bad?

Ensuring that default exports are named helps improve the grepability of
the codebase by encouraging the re-use of the same identifier for
the module's default export at its declaration site and at its import sites.

### Examples

Examples of **incorrect** code for this rule:

```js
export default [];
export default () => {};
export default class {};
export default function() {};
export default foo(bar);
export default 123;
export default {};
export default new Foo();
export default `foo`;
export default /^123/;
```

Examples of **correct** code for this rule:

```js
const foo = 123;
export default foo;
export default function foo() {};
export default class MyClass {};
export default function foo() {};
export default foo(bar);
/* import/no-anonymous-default-export: ["error", { "allowLiteral": true }] */
export default 123;
/* import/no-anonymous-default-export: ["error", { "allowArray": true }] */
export default []
/* import/no-anonymous-default-export: ["error", { "allowArrowFunction": true }] */
export default () => {};
/* import/no-anonymous-default-export: ["error", { "allowAnonymousClass": true }] */
export default class {};
/* import/no-anonymous-default-export: ["error", { "allowAnonymousFunction": true }] */
export default function() {};
/* import/no-anonymous-default-export: ["error", { "allowObject": true }] */
export default {};
/* import/no-anonymous-default-export: ["error", { "allowNew": true }] */
export default new Foo();
/* import/no-anonymous-default-export: ["error", { "allowCallExpression": true }] */
export default foo(bar);
```

By default, all types of anonymous default exports are forbidden,
but any types can be selectively allowed by toggling them on in the options.

## Configuration

This rule accepts a configuration object with the following properties:

### allowAnonymousClass

type: `boolean`

default: `false`

Allow anonymous class as default export.

### allowAnonymousFunction

type: `boolean`

default: `false`

Allow anonymous function as default export.

### allowArray

type: `boolean`

default: `false`

Allow anonymous array as default export.

### allowArrowFunction

type: `boolean`

default: `false`

Allow anonymous arrow function as default export.

### allowCallExpression

type: `boolean`

default: `true`

Allow anonymous call expression as default export.

### allowLiteral

type: `boolean`

default: `false`

Allow anonymous literal as default export.

### allowNew

type: `boolean`

default: `false`

Allow anonymous new expression as default export.

### allowObject

type: `boolean`

default: `false`

Allow anonymous object as default export.

## How to use

## Version

This rule was added in v0.15.14.

## References
