Enforce arrow function return style and automatically fix it
npm install eslint-plugin-arrow-return-style-x> Enforce arrow function return style and automatically fix it
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
This project is a fork ofeslint-plugin-arrow-return-style
by u3u. The original work provides the foundation for
arrow function return style enforcement, and this fork extends it with
additional features and improvements.
This ESLint plugin provides intelligent arrow function return style enforcement,
serving as an enhanced alternative toarrow-body-style
with smarter heuristics.
- Context-aware decisions: Considers line length, object complexity, JSX
elements, and export context to determine the best return style
- Handles complex cases: Works with objects, arrays, multiline expressions,
and named exports that other rules miss
- Auto-fixes everything: No manual cleanup needed - the plugin fixes code
automatically
- Consistent exports: Forces explicit returns for named exports to match
regular function style
- Prettier compatible: Zero conflicts with Prettier formatting - works
seamlessly together
``bashnpm
npm install eslint-plugin-arrow-return-style-x --save-dev
Usage
$3
`js
import arrowReturnStyle from "eslint-plugin-arrow-return-style-x";export default [arrowReturnStyle.configs.recommended.rules];
`$3
`json
{
"extends": ["plugin:arrow-return-style-x/recommended"]
}
`Configuration
$3
`json
{
"rules": {
"arrow-return-style-x/arrow-return-style": [
"error",
{
"maxLen": 80,
"objectReturnStyle": "complex-explicit"
}
]
}
}
`Key options include
maxLen (line length limit), objectReturnStyle
(object/array handling), JSX and named export controls, plus automatic Prettier
integration when available.📖
See full configuration options →
$3
-
arrow-return-style: Main rule with extensive configuration options
- no-export-default-arrow: Converts anonymous exports to named functions
(no configuration needed)Quick Example
`js
// ❌ Before: Inconsistent arrow function styles
const longFunc = () =>
someVeryLongFunctionCall() + anotherLongCall() + moreCode();
export const getUserBad = () => ({ name: "admin" });const complexFunc = () => ({ ...state, [key]: value });
// ✅ After: Consistent, readable arrow functions
const longFunc2 = () => {
return someVeryLongFunctionCall() + anotherLongCall() + moreCode();
};
export const getUserGood = () => {
return { name: "admin" };
};
const complexFunc2 = () => {
return { ...state, [key]: value };
};
const simple = () => ({ name: "test" }); // Simple cases stay implicit
`Rules Reference
--fix` CLI option.\| Name | Description | 🔧 | 💭 |
| :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :-- | :-- |
| arrow-return-style | Enforce consistent arrow function return style based on length, multiline expressions, JSX usage, and export context | 🔧 | |
| no-export-default-arrow | Disallow anonymous arrow functions as export default declarations | 🔧 | 💭 |
Contributions are welcome!
MIT License © 2025
Christopher Buss
Original work © 2023 u3u
[npm-version-src]:
https://img.shields.io/npm/v/eslint-plugin-arrow-return-style-x
[npm-version-href]: https://npmjs.com/package/eslint-plugin-arrow-return-style-x
[npm-downloads-src]:
https://img.shields.io/npm/dm/eslint-plugin-arrow-return-style-x
[npm-downloads-href]:
https://npmjs.com/package/eslint-plugin-arrow-return-style-x
[license-src]:
https://img.shields.io/github/license/christopher-buss/eslint-plugin-arrow-return-style-x.svg
[license-href]: ./LICENSE