admin-component-must-be-arrow-function - ESLint plugin rules

This rule requires admin widget and UI route components to be arrow functions, not function declarations.

Severity#

error. This rule is enabled in the recommended preset.

What it Targets#

This rule targets files in your project's src/admin/widgets directory and page.tsx files in your project's src/admin/routes directory. It reports a default-exported component that's declared as a function declaration.

The following code is reported by the rule:

src/admin/widgets/product-widget.tsx
1export default function MyWidget() {2  return null3}

Instead, declare the component as an arrow function:

src/admin/widgets/product-widget.tsx
1const MyWidget = () => {2  return null3}4
5export default MyWidget

Why it's Important#

Medusa only picks up admin widget and UI route components declared as arrow functions. Declaring them as function declarations causes them not to be registered, which can lead to runtime errors.

Learn more in the Admin Development Constraints documentation.

Fixable#

This rule is auto-fixable. Run the linter with the --fix option to apply the fix automatically.

Was this page helpful?
Ask Bloom
For assistance in your development, use Claude Code Plugins or Docs MCP server in Cursor, VSCode, etc...FAQ
What is Medusa?
How can I create a module?
How can I create a data model?
How do I create a workflow?
How can I extend a data model in the Product Module?
Recipes
How do I build a marketplace with Medusa?
How do I build digital products with Medusa?
How do I build subscription-based purchases with Medusa?
What other recipes are available in the Medusa documentation?
Chat is cleared on refresh
Line break
⇧↵