Skip to content

Changelog - 2026-10-23 ​

Formatting moves to bun fmt and bunfig.toml ​

Breaking Change Enhancement

In one line. devz lint and the Makefile format with bun fmt, the format lives in one [fmt] table in bunfig.toml, and the oxfmt presets are gone.

toml
# bunfig.toml
[fmt]
printWidth = 100
singleQuote = true
arrowParens = "avoid"
flavor = "oxfmt"

What changed ​

  • devz lint formats with bun fmt. The third step is bun fmt --no-script, with --check unless you pass --fix. Each pattern in .configs/formatters/.ignore reaches it as --ignore-pattern.
  • The format is one table. bun fmt reads [fmt] in the bunfig.toml of the folder it runs in or of any parent, so one root file serves every package. The table above gives byte-for-byte the output oxfmt produced: measured on the IGNIS repository, no file differs, in 21 projects. flavor = "oxfmt" keeps it that way once oxfmt is no longer installed; without it Bun formats like Prettier and 14 files change.
  • More than code is formatted. devz lint and make lint also check every .json, .jsonc, .yml, .yaml, .css, .html and .vue file; Markdown is not formatted. A file a tool regenerates on its own (drizzle-kit snapshots) goes in .configs/formatters/.ignore. Run devz lint --fix once to format yours; parsed values never change.
  • package.json keys are sorted. bun fmt orders the keys like sort-package-json and alphabetizes the dependency blocks, and nothing else. npm version, bun add, bun update and bun remove keep a sorted file sorted. Set sortPackageJson = false in [fmt] to keep your own order.
  • One style for backend and frontend. There is no separate browser variant.
  • Bun 1.4.4 is the floor. bun fmt is new in 1.4.4; @venizia/dev-configs declares "bun": ">=1.4.4".
  • The oxfmt config files are gone. Bun loads an oxfmt.config.mts when it finds one, and fails if @venizia/dev-configs/formatters no longer resolves.

Breaking changes ​

WARNING

@venizia/dev-configs no longer exports oxfmtConfigs, browserOxfmtConfigs and prettierConfigs, and the @venizia/dev-configs/formatters subpath is removed. The oxfmt and prettier peer dependencies are gone, and eslintConfigs (and ReactEslintConfigs, which builds on it) no longer include the Prettier rule or its eslint-plugin-prettier and eslint-config-prettier dependencies.

Before:

typescript
// .configs/formatters/oxfmt.config.mts
import { defineConfig } from 'oxfmt';
import { oxfmtConfigs } from '@venizia/dev-configs/formatters';

export default defineConfig(oxfmtConfigs);

After:

  1. Add the [fmt] table above to the bunfig.toml at the root of your repository.
  2. Delete every .configs/formatters/oxfmt.config.mts; keep .configs/formatters/.ignore.
  3. Remove oxfmt from your devDependencies and your catalog.
  4. Use Bun 1.4.4 or newer.
  5. A project that sorts Tailwind classes adds sortTailwindcss = true and installs tailwindcss; one that must not sort package.json adds sortPackageJson = false.

Who is affected ​

You haveDo this
A project that runs devz lintThe steps above
oxfmt.config.mts importing from @venizia/dev-configs/formattersThe steps above; the import no longer resolves
JSON, YAML, CSS, HTML or Vue files, or a package.json out of sort-package-json orderdevz lint --fix once; the lint fails until then
A fmt script in package.jsonbun fmt would run it; devz lint passes --no-script, so it still formats. Prefer not to name a script fmt
The VS Code Oxc extension for formattingIt formats with oxfmt, which is no longer a dependency; format with bun fmt or devz lint --fix

Details ​

  • bun lint is not in a stable Bun yet, so oxlint and ESLint stay.
  • A project that used the Prettier lint rule drops prettier from its dependencies: formatting is bun fmt.
  • Not formatted: files in a language bun fmt does not support, such as .astro; a directory run skips them.
FilePackage
src/cli/lint.tsdev-configs
src/formatters/ (removed)dev-configs