biome.json, does not run Biome, and does not copy the configuration into the packaged output.
When Biome is a good fit
- You want one tool and one config file instead of a linter plus a formatter.
- You are starting a project and have no ESLint rule set to carry over.
- You want checks that finish fast enough to run on every save.
Biome capabilities
There is no Biome template
Extension.js ships configuration templates for ESLint, Prettier, and Stylelint. It ships none for Biome. Scaffold any template and add Biome yourself with the steps below.Add Biome to an extension
Install the package:biome.json at the project root. The generated file already keeps Biome out of the build output:
biome.json
Add the scripts
Biome writes no scripts intopackage.json. Add them next to the Extension.js scripts:
package.json
biome ci is the continuous integration form. It reports the same findings as check and never edits a file.
Ignore the generated type file
A TypeScript project carries anextension-env.d.ts file that Extension.js rewrites on every dev and build run. Formatting it is wasted work, because the next run replaces it. Exclude it:
biome.json
Migrating from ESLint or Prettier
Biome reads an existing configuration and converts what it can:What the build does with biome.json
Nothing. The build reads a closed set of root files:manifest.json, package.json, extension.config.js, tsconfig.json, the PostCSS and Tailwind configs, and the .env family. A biome.json file is never read, never watched, and never emitted into dist/.
One packaging detail is worth knowing. extension build --zip-source archives the whole project folder, so biome.json lands in the source archive. That is usually what you want for a store review that asks for sources.
Best practices
- Choose Biome or the ESLint and Prettier pair. Running both formats the same files twice, with different results.
- Keep
distexcluded. The generated bundle is not yours to format. - Run
biome ciin continuous integration, notbiome check --write. A CI job should report, not rewrite.
Next steps
- Compare with the ESLint integration.
- Compare with the Prettier integration.
- Review the security checklist before you publish.

