Skip to content
Ultracite
Esc
↑↓navigate↵open⌘Jpreview
On this page

ultracite@8.1.1

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.

  • 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 reports content outside the top-level blocks of a .vue file, which the compiler drops; vue/no-define-model-default reports a default in defineModel(); and vue/no-props-shadow 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, 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 for the full list.

  • 3e83844: Update oxlint to 1.90.0 and enable its new type-aware rule, typescript/no-unsafe-enum-assignment, 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.

    Requires oxlint >= 1.90.0

Last updated on

Was this page helpful?