Changelog - 2026-10-16
dev-configs gains a browser tier
New FeatureIn one line. @venizia/dev-configs 0.3.1 adds presets for browser code that does not use React. The React preset now builds on them.
typescript
// .configs/oxlint.config.mts
import { defineConfig } from 'oxlint';
import { BrowserOxlintConfigs } from '@venizia/dev-configs/linters';
export default defineConfig(BrowserOxlintConfigs.create());What changed
BrowserOxlintConfigs.create(). This preset isoxlintConfigsplus thecrypto.randomUUIDban. The method isundefinedon a plain-http origin. Until now, only the React preset carried the ban.browserOxfmtConfigs. This preset isoxfmtConfigswitharrowParens: 'always'((x) => x) andbracketSameLine: true.bracketSameLinekeeps the closing>of a JSX element on its last attribute line.tsconfig.browser.jsonandtsconfig.react.json. These configs are for a library that a bundler builds. They setmoduleResolution: bundler, add theDOMlib, and settypes: [], so no Bun types reachdist. The React config also setsjsx: react-jsx.ReactOxlintConfigsbuilds onBrowserOxlintConfigs. The rules are the same. Thecrypto.randomUUIDban now also covers.mjsand.cjsfiles.
| Tool | Backend | Browser | React |
|---|---|---|---|
| oxlint | oxlintConfigs | BrowserOxlintConfigs.create() | ReactOxlintConfigs.create() |
| oxfmt | oxfmtConfigs | browserOxfmtConfigs | browserOxfmtConfigs |
| ESLint | namingConventionConfigs | namingConventionConfigs | reactNamingConventionConfigs |
| tsconfig | tsconfig.common.json | tsconfig.browser.json | tsconfig.react.json |
Who is affected
- Backend projects. Nothing changes. The backend presets are untouched. No action needed.
- A browser or React project that copies these overrides by hand. Switch to the new exports and delete the copies. A sample swap:
typescript
// Before
export default defineConfig({ ...oxfmtConfigs, arrowParens: 'always', bracketSameLine: true });
// After
export default defineConfig(browserOxfmtConfigs);