---
changelog:
  category: Release
  version: ultracite@8.1.1
date: '2026-11-01T19:58:38Z'
seo:
  description: >-
    Update Biome to 2.6.4. The release adds 30 nursery rules, which the Biome
    presets leave off, and promotes or removes none, so the presets are
    unchanged and…
title: ultracite@8.1.1
type: changelog
---
## Patch Changes

- 79d73d9: Update Biome to 2.6.4. The release adds 30 nursery rules, which the Biome presets leave off, and promotes or removes none, so the presets are unchanged and the `@biomejs/biome` peer range stays at `^2.6.2`. The `useSortedProperties` assist that core turns on now follows `stylelint-config-recess-order` 7.9.0, so `ultracite fix` can reorder CSS properties it used to leave alone, such as `scroll-behavior`, anchor positioning and multi-column layout. It also no longer offers a sort that would change which of two overlapping declarations wins. `noShorthandPropertyOverrides` also recognises overrides of logical border, corner shape, `position-try`, `text-box` and `transition-behavior` properties. The Markdown formatter stays off in core: 2.6.4 fixes the dropped space before inline code, but it still rewrites a literal `[ ]` in prose to `[]`. See the [2.6.4 release notes](https://github.com/biomejs/biome/releases/tag/%40biomejs%2Fbiome%402.6.4).
- 3572b86: Update the ESLint packages `init` installs: typescript-eslint 8.72.1, `eslint-plugin-vue` 10.12, `eslint-plugin-storybook` 10.6.5, `@tanstack/eslint-plugin-query` 5.105.1, `@react-native/eslint-plugin` 0.88.1, `globals` 17.14 and `eslint-plugin-react-doctor` 0.9.21, plus the Oxlint JS plugin `oxlint-plugin-react-doctor` 0.9.21. The presets were checked against ESLint 10.14.
  
  The Vue preset turns on `eslint-plugin-vue`'s three new rules automatically: [`vue/no-content-outside-block`](https://eslint.vuejs.org/rules/no-content-outside-block.html) reports content outside the top-level blocks of a `.vue` file, which the compiler drops; [`vue/no-define-model-default`](https://eslint.vuejs.org/rules/no-define-model-default.html) reports a `default` in `defineModel()`; and [`vue/no-props-shadow`](https://eslint.vuejs.org/rules/no-props-shadow.html) reports `<script setup>` declarations that shadow a prop. The new `block-lang` `required` and `require-explicit-emits` `ignoreMixins` options stay at their defaults: the first would reject components without a given block, and the second skips components that use mixins.
  
  react-doctor 0.9.21 adds [`react-doctor/forwarded-set-state-in-effect`](https://react.doctor/docs/rules/react-doctor/forwarded-set-state-in-effect), which reports a state setter passed from an effect to a helper that calls it synchronously, such as `useEffect(() => syncFrom(id, setValue), [id])`. It is on in the ESLint React preset and in `ultracite/oxlint/js-plugins`. Setters handed to subscriptions, timers and listeners aren't reported.
- 6675a90: Update oxfmt to 0.75.0. The release changes no options. It fixes a run of formatting bugs, among them parentheses dropped around private `in` checks and instantiation expressions, a `;` dropped before class members named `in` or `instanceof`, and its width heuristics now measure display width, so lines with wide characters (such as CJK text) can wrap differently after upgrading. Its `prettier-plugin-astro` integration now needs `@astrojs/compiler-rs` 0.5, which is the version `ultracite init` installs. See the [0.75.0 release notes](https://github.com/oxc-project/oxc/releases/tag/oxfmt_v0.75.0) for the full list.
- 3e83844: Update oxlint to 1.90.0 and enable its new type-aware rule, [`typescript/no-unsafe-enum-assignment`](https://oxc.rs/docs/guide/usage/linter/rules/typescript/no-unsafe-enum-assignment.html), in the core Oxlint preset. It reports a value assigned, returned or passed where an enum is expected when it doesn't share that enum's type, such as `const fruit: Fruit = 1`, matching the `@typescript-eslint` rule of the same name that the ESLint type-aware preset already enables. Like the other type-aware rules, it only runs with `oxlint --type-aware` and `oxlint-tsgolint` installed, and oxlint 1.90 needs `oxlint-tsgolint` 7.0.2005 or later. Older oxlint releases fail to parse a config that names the rule, so the `oxlint` peer range moves to `^1.90.0`.
  
  The release also makes a few rules report cases they used to miss: `array-callback-return` checks callbacks passed with extra arguments, `no-useless-concat` sees through parentheses, and `jest/no-conditional-expect` checks function expression callbacks. See the [1.90.0 release notes](https://github.com/oxc-project/oxc/releases/tag/oxlint_v1.90.0).
  
  Requires oxlint >= 1.90.0
