# Money Forward's ESLint Config: A Shared Rule Set for Consistent Frontend Code

> An extensible shared ESLint config from Money Forward, packaged for npm, with a stylelint companion and an experimental oxlint variant. It is a pragmatic choice for teams that want a maintained baseline without writing rules from scratch.

**moneyforward/frontend-tools** — Money Forward's ESLint rules as an extensible shared config.

- Repository: https://github.com/moneyforward/frontend-tools
- Stars: 23 · Forks: 1
- Language: JavaScript
- License: MIT
- Published: 2026-08-21 · Updated: 2026-08-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/moneyforward-frontend-tools

## What This Config Solves

Every frontend team eventually faces the same problem: ESLint rules drift between projects, and new hires get inconsistent feedback. Money Forward's frontend-tools solves that by packaging their ESLint rules as an extensible shared config. The README shows three packages: eslint-config-moneyforward, stylelint-config-moneyforward, and oxlint-config-moneyforward, the last marked WIP. The target user is a development team that wants a drop-in baseline for linting JavaScript and CSS, with the ability to extend it. It is not a framework or a tool; it is a set of rules you install via npm. The value is in not having to research and decide every rule yourself, and in having a company with real frontend experience maintain the choices.

## How the Packages Are Organized

The repository is a monorepo with three workspaces, each corresponding to a published package. eslint-config-moneyforward lives in /packages/eslint-config and is the primary deliverable. stylelint-config-moneyforward is in /packages/stylelint-config, and oxlint-config-moneyforward is in /packages/oxlint-config, but the README labels it WIP. The package names follow the standard ESLint shared config convention: they start with eslint-config-, which allows users to reference them without the full prefix in their ESLint config. The same applies to stylelint. The oxlint package is a newer experiment, and its release tag (oxlint-config-moneyforward-v1.0.0) suggests it has reached a first version, but the README's WIP label means you should treat it as less stable than the ESLint config.

## Getting It Running

The README does not include installation instructions, but the npm package names imply the standard workflow. To use eslint-config-moneyforward, you would install it as a dev dependency, then extend it in your .eslintrc file with "extends": ["moneyforward"]. For stylelint, you would add "extends": ["stylelint-config-moneyforward"] to your .stylelintrc. The oxlint config, once stable, would likely be used in an oxlint configuration file, but the README gives no specifics. Since the packages are on npm, you can inspect their peer dependencies by running npm view eslint-config-moneyforward peerDependencies. The repository's recent releases, including 6.0.0 and 6.0.1, indicate that the config is actively updated, likely to track ESLint's own rule changes.

## Extensibility and Trade-offs

The README calls the config 'extensible', which is a specific promise. In ESLint, that means you can place this config in your extends array and then override individual rules in your own rules object. That is a practical approach: you get a sane default, but you can deviate when your project needs a different style. The trade-off is that you inherit Money Forward's preferences, which may not match your team's conventions. For example, if they enforce a specific import ordering or naming convention, you would need to override it. The config is also monolithic in the sense that it is one package, not a set of opt-in presets. That is simpler but less flexible than a modular config that lets you pick only the rules you want.

## Limitations and When It Is the Wrong Tool

The most obvious limitation is that the oxlint config is still WIP. If you are considering oxlint for its speed, you cannot rely on this package yet. Another limitation is that the README gives no details about which rules are included or how strict the config is. You would have to inspect the package contents to know whether it enforces style rules like semicolons or only catches errors. That uncertainty makes it a poor fit for a team that needs a specific, documented linting policy. It is also the wrong tool if you need to support a non-standard environment, such as a legacy codebase with custom globals, because you would spend time overriding rules. For a small project with one developer, writing a minimal ESLint config yourself may be simpler than adopting a shared config that you do not fully understand.

## The Alternative: Writing Your Own Config

The main alternative is to build your own ESLint config from scratch, using ESLint's recommended rules and adding plugins as needed. That approach gives you full control, and you can document each rule choice for your team. The difference is in effort and maintenance. With Money Forward's config, you get a maintained rule set that is updated when ESLint releases new versions, as the recent 6.0.x releases suggest. With your own config, you own the maintenance burden: you must track ESLint's deprecations and decide when to enable new rules. Another alternative is to use a community config like eslint-config-airbnb, but that is a different set of opinions, and the README does not compare them. The choice depends on whether you value a baseline that someone else maintains or the ability to tailor every rule.

## Maintenance and License

The repository is under the MIT license, which means you can use, modify, and distribute the config freely, including in commercial projects, as long as you preserve the copyright notice. That is a permissive license, but it is not legal advice, so check the full LICENSE file. The maintenance picture is positive: the last push was in August 2026, and there are two releases in 2026, including a patch release (6.0.1) and a minor release (6.0.0) from April. The project is not archived, which suggests active development. However, the oxlint config is still WIP, so its maintenance is uncertain. The upgrade cost for users is low: since it is an npm package, you can bump the version and review the changelog for breaking changes. The 6.0.0 release likely included breaking changes, but the README does not say what they were, so you would need to read the release notes on npm.

## Conclusion

Adopt eslint-config-moneyforward if you manage multiple JavaScript or TypeScript projects and want a consistent, maintained lint baseline without curating your own rule set. Skip it if you need highly custom rules or if your team already has a mature ESLint setup that would be disruptive to replace. If you are exploring faster linting, the oxlint config is a WIP, so verify its rule coverage and compatibility with your codebase before relying on it. Check the npm package's peer dependencies and rule list first, and confirm the MIT license fits your legal requirements. The project is actively maintained, with a 6.0.1 release in August 2026, so it is a live option, not a stale one.

## FAQ

### What is a front-end tool, in the context of moneyforward/frontend-tools?

Here it means a lint and format configuration rather than a framework or an editor. The repository publishes three shareable configs on npm: eslint-config-moneyforward, oxlint-config-moneyforward, and stylelint-config-moneyforward.

### Which tool is best for frontend, according to frontend-tools?

Nothing on record ranks tools. What the repository does is ship the same house style in three forms, with the oxlint config being the newest, tagged v1.0.0 on 2026-08-21 and v1.1.0 on 2026-09-11.

### What are the top 3 frontend frameworks listed by frontend-tools?

No frameworks are listed. The three things the workspace names are the ESLint config, the oxlint config, and the stylelint config, and the only tool in the root dev dependencies is prettier.

### Is HTML a front-end tool, and does frontend-tools handle HTML?

The question is not answered on record. The root format script covers js, cjs, ts, tsx, and md files, so markup is not in the formatting glob, and none of the three published config names targets HTML.

## Sources

- [Official README](https://github.com/moneyforward/frontend-tools#readme)
- [Project repository](https://github.com/moneyforward/frontend-tools)
- [Release notes](https://github.com/moneyforward/frontend-tools/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/moneyforward-frontend-tools
