Skip to content

chore(deps-dev): bump ultracite from 7.12.4 to 8.1.0 in /web - #179

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/web/ultracite-8.0.1
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/web/ultracite-8.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Bumps ultracite from 7.12.4 to 8.1.0.

Release notes

Sourced from ultracite's releases.

ultracite@8.1.0

Minor Changes

  • daf7b0f: Update Biome to 2.6.3. Biome 2.6 renamed useSortedClasses to useTailwindSortedClasses and moved its functions option to the top-level tailwind.mergeFunctions, so the 8.0 core preset failed to load with "Found an unknown key useSortedClasses". The core preset now uses the new name and lists the same functions under tailwind.mergeFunctions and, for cva and tv, tailwind.variantFunctions, which sorts the classes in their variant objects. The rule also switched to Tailwind CSS v4's class order, so ultracite fix re-sorts class lists whose order changed the first time it runs with Biome 2.6.

    Biome 2.6 also promoted 59 nursery rules to stable groups. The presets turn on the ones that match rules the Oxlint presets enable, or that have no Oxlint counterpart and fit the preset:

    • Core: noLoopFunc, noUnnecessaryTemplateExpression, useArraySome, useRegexpTest, useMathMinMax, noExcessiveNestedCallbacks (with a limit of 10, matching max-nested-callbacks), useDomNodeTextContent, useDomQuerySelector, useImportsFirst, useNamedCaptureGroup, useUnicodeRegex, useVarsOnTop, useThisInClassMethods, useReduceTypeParameter, useIframeSandbox, noDuplicateFieldDefinitionNames for GraphQL, noDuplicateSelectors and useBaseline for CSS, and noEmptyObjectKeys and noTopLevelLiterals for JSON.
    • React: noComponentHookFactories, noJsxNamespace, noJsxLeakedDollar, noReactStringRefs and useReactAsyncServerFunction.
    • Vue: noVueImportCompilerMacros, noVueRefAsOperand, noVueVOnNumberValues, useVueValidVFor, useScopedStyles, useVueConsistentDefinePropsDeclaration and useVueNextTickPromise.
    • Astro: useScopedStyles, which reports <style is:global>.
    • Svelte: noInlineStyles, matching ESLint's svelte/no-inline-styles.
    • Qwik: useQwikLoaderLocation.
    • Jest and Vitest: noConditionalExpect, noIdenticalTestTitle, useExpect, useTestHooksInOrder, useTestHooksOnTop, and useConsistentTestIt set to test() at the top level and it() inside describe, matching consistent-test-it's defaults.

    noInlineStyles stays off outside Svelte, noExcessiveSelectorClasses stays off because it has no default limit, and noUntrustedLicenses stays off because it reads node_modules, which the preset ignores.

    GraphQL files are now sorted. The core preset has always turned on useSortedSelectionSet, but Biome only runs assist actions on GraphQL files when graphql.assist.enabled is set, so it never ran. The preset now sets it and turns on Biome 2.6's useGraphqlSortedDefinitions, useGraphqlSortedVariables and useGraphqlSortedArguments, whose fixes ultracite fix applies. Biome marks the selection-set fix unsafe, because GraphQL returns fields in the order they're selected, so selection sets are reported by ultracite check and only sorted by ultracite fix --unsafe.

    Biome 2.6 formats and lints YAML, SCSS and Markdown. YAML and SCSS files are now formatted like the rest of the project. The core preset turns Biome's Markdown formatter off, because in 2.6.3 it drops the space before some inline code spans and changes the rendered text, so .md files are left as they were. It turns on Markdown frontmatter parsing, so the linter reads a leading --- block as frontmatter rather than a heading.

    Requires @​biomejs/biome >= 2.6.2

  • d8124d5: Ultracite now requires Node.js 22.22.2 or later on Node 22, or 24.15 or later; Bun is unchanged. eslint-plugin-jsdoc, which every ESLint setup installs, has declared that range since version 64, so on older Node versions npm and pnpm warned when installing it and Yarn 1 refused to install it. Two ESLint framework plugins declare more: @darraghor/eslint-plugin-nestjs-typed (the nestjs preset) asks for Node.js 24 and eslint-plugin-astro (the astro preset) for 22.22.3 or 24.16. Both run on older versions, but Yarn 1 enforces what they declare.

  • 9a1ce92: Format .astro files with Oxfmt. When the project or one of its workspaces uses Astro, ultracite init turns on Oxfmt's astro option in the root oxfmt.config.ts and installs @astrojs/compiler-rs, the compiler that Oxfmt's bundled prettier-plugin-astro loads. Until now, Oxfmt skipped .astro files. For Astro 6 and earlier, which keep line breaks between tags as spaces, it writes astro: { compressHTML: "html" } so formatting can't change what a page renders. An astro value already in the config is kept, so astro: false still opts out. ultracite upgrade keeps the compiler at the version this release was tested with, and switching from Oxlint to another linter removes it. Existing projects get it by re-running ultracite init, or by setting astro: true by hand as described in Formatting Astro files. Oxfmt formats .astro files from 0.73.0; older releases ignore the option.

  • e4be64a: Add playwright, react-native and drizzle framework presets. ultracite init offers them, and pre-selects them when the project depends on @playwright/test, react-native or drizzle-orm (React Native also pre-selects React). The ESLint presets use each library's ESLint plugin, the Biome presets use the rules Biome 2.6 made stable, and the Oxlint presets add no plugin rules, because Oxlint has no plugin for these libraries.

    • Playwright: ultracite/eslint/playwright turns on every rule in eslint-plugin-playwright in test files, except no-hooks, require-soft-assertions and require-tags, which would report ordinary tests. ultracite/biome/playwright turns on Biome's Playwright rules, such as noPlaywrightMissingAwait and noPlaywrightWaitForTimeout, and the test rules the Jest and Vitest presets use, such as noFocusedTests and useExpect. It leaves out useConsistentTestIt, because Playwright has no it(). On every linter, a hook that only needs testInfo, as in test.beforeEach(async ({}, testInfo) => ...), no longer trips core's empty-pattern rule.
    • React Native: ultracite/eslint/react-native turns on the rules in eslint-plugin-react-native and Meta's @react-native/eslint-plugin, such as no-raw-text, no-unused-styles and no-deep-imports. eslint-plugin-react-native hasn't been updated for ESLint 10, so the preset wraps it with @eslint/compat, which init installs too, and npm projects get a peer override for it. ultracite/biome/react-native turns on noReactNativeRawText, noReactNativeLiteralColors, noReactNativeDeepImports and useReactNativePlatformComponents. Both declare the __DEV__ global.
    • Drizzle: both presets turn on the rules that report a delete() or update() with no .where() (eslint-plugin-drizzle and Biome's noDrizzleDeleteWithoutWhere and noDrizzleUpdateWithoutWhere), for objects named db or tx. Without a name, the ESLint rules report every .delete() call, Map#delete included, and the Biome rules report nothing.

    These rules check their libraries' APIs, which is why they're in presets rather than in core. On Biome they would otherwise misfire: an explicit severity overrides Biome's dependency check, so noReactNativeRawText in core would report text inside any JSX element, including a <div>.

Patch Changes

  • 72890be: Update eslint-plugin-unicorn to 79. The ESLint preset turns on its two new rules, no-unnecessary-default-arguments and no-repeated-call-wrappers, like every other Unicorn rule. Unicorn 79 stopped no-top-level-side-effects from reporting unknown calls during module evaluation by default; the preset sets its new checkUnknownCalls option, so it keeps reporting them as it did with Unicorn 77. prefer-ternary and prefer-minimal-ternary now also merge branches that differ only in the callee or a computed member, such as (test ? a : b)(value).

    Unicorn 78 also reports code that contains comments, which many rules used to skip, and prefer-default-parameters now checks fallback expressions, so existing code can get new reports. Unicorn 79 turns autofixes that could change behaviour in rare cases into suggestions, in rules such as prefer-spread and prefer-math-min-max.

  • 72890be: Update the ESLint plugins init installs: typescript-eslint 8.72, eslint-plugin-jsdoc 65.4, eslint-plugin-n 18.5, eslint-plugin-jest 29.17, @vitest/eslint-plugin 1.6.28, @next/eslint-plugin-next 16.4, @angular-eslint/eslint-plugin 22.6, eslint-plugin-svelte 3.23.1, eslint-plugin-storybook 10.6.3, eslint-plugin-qwik 1.20.3, @tanstack/eslint-plugin-query 5.104.5, @darraghor/eslint-plugin-nestjs-typed 7.5.8, eslint-plugin-react-doctor 0.9.18 and prettier-plugin-astro 1.1.2, plus the Oxlint JS plugins oxlint-plugin-react-doctor 0.9.18 and @shadcn/lint 0.2.3. None of them adds or removes a rule, so the presets are unchanged. The releases fix false positives and add options the presets leave at their defaults, such as typescript-eslint's await-thenable allowMixedPromiseArrays and jsdoc's check-alignment ignoreEmptyLines. The presets were checked against ESLint 10.13.

  • 14b8e04: Update oxfmt to 0.74.0. Markdown files are now formatted by oxfmt's own Markdown formatter instead of its bundled Prettier, so ultracite fix can reformat some .md files that were already clean, including sorting imports in JavaScript and TypeScript code blocks. .mdx files still go through Prettier. The releases also add an astro option that formats .astro files through prettier-plugin-astro (it needs @astrojs/compiler-rs installed in the project) and an associations option that formats files as a chosen language. See the 0.72.0, 0.73.0 and 0.74.0 release notes for the full list of formatting fixes.

  • 1fa337e: Update oxlint to 1.89.0 and oxlint-tsgolint to 7.0.2005. The releases add no rules, so the Oxlint presets are unchanged and the oxlint peer range stays at ^1.86.0. Several rules now report cases they used to miss, so upgrading can surface new errors in existing code: prefer-const checks destructuring assignments inside blocks, sort-keys compares computed identifier keys, no-param-reassign reports writes to rest parameters, and unicorn/prefer-string-replace-all follows regexes stored in variables. react/no-unescaped-entities, react/jsx-no-target-blank and unicorn/no-useless-switch-case now offer suggestions. See the 1.87.0, 1.88.0 and 1.89.0 release notes for the full list.

  • 5eeb6e5: ultracite fix --hook no longer fixes the whole project when it can't read an edited file's path from the agent's hook payload. A payload with no path, one in a shape the hook doesn't know, text that isn't JSON, or stdin that can't be read now fixes nothing. The whole-project run it used to fall back to could reformat files the agent never touched. Payloads that name the edited file are fixed as before.

ultracite@8.0.2

Patch Changes

  • 9f80955: Make ultracite fix --claude and --codex judge each retry by what the previous edit actually did. An issue that's still reported gets the old note asking for a structurally different approach, but one that only appeared after the edit is now handed back as new, with the agent told to build on the fix rather than undo it. Before, a correct ARIA button pattern that then tripped prefer-tag-over-role, or a correct <button> missing its type, was treated as a failed fix and thrown away. When an issue needs a person's decision, the agent now lists it at the end of its final message. Ultracite stops retrying it and shows the agent's explanation in the summary, where it used to be discarded. The handoff also gets three fixes. Biome's a11y rules now reach the agent with their help text and documentation link, which a pattern that didn't allow digits in a rule group had dropped. A path Oxlint has no files to lint, such as a Markdown file, no longer crashes the run. And Biome's internal errors, such as internalError/io for a file it can't write, are no longer handed to the agent as lint issues.
  • 30e03ef: Give jsx-a11y/label-has-associated-control in ultracite/oxlint/react the options the ESLint react preset already sets: <Label> counts as a label, <Input>, <Select>, <Textarea>, <Checkbox> and <Radio> count as controls, and a control is found up to three levels deep. Oxlint used to miss a <Label> with no control, and flagged an <Input> inside a <label>, or an input nested three deep, as unlabelled. Biome's noLabelWithoutControl in ultracite/biome/core gets the same label and control components.
  • 947ca03: Turn off promise/prefer-await-to-then in ultracite/oxlint/core and ultracite/eslint/core, and github/no-then in ultracite/oxlint/js-plugins and ultracite/eslint/core. Both rules match .then(), .catch() and .finally() by method name, without type information, so they flagged APIs that aren't promises, such as Zod's .catch() fallback. They also flagged a fire-and-forget promise given a .catch() handler. Oxlint closed the false positive as not planned. promise/always-return and promise/catch-or-return are now on in both presets, so an unhandled promise chain is still reported. In ESLint, unicorn/prefer-await moves to ultracite/eslint/type-aware, where it uses type information to skip calls that aren't on a promise. The test-file overrides that turned promise/prefer-await-to-then off in the jest and vitest presets are gone, since the rule is off everywhere.
  • c198d06: Stop unicorn/no-useless-undefined in ultracite/oxlint/core from checking function call arguments. A required parameter typed string | undefined has to be passed undefined explicitly, but Oxlint flagged consume(undefined) and ultracite fix rewrote it to consume(), which TypeScript rejects with TS2554. The rule can't see parameter types, so it now runs with checkArguments: false. It still reports let value = undefined, return undefined and the rest of its checks. ultracite/eslint/core sets the same option. eslint-plugin-unicorn already skipped arguments in TypeScript files, and now skips them in JavaScript too. Biome's noUselessUndefined never checked arguments.

... (truncated)

Commits
  • 7bf1b7b Version Packages (#857)
  • 9108be3 Add the length limits research post
  • b1c7141 Move CodeQL to a workflow that skips research/
  • 9def421 Keep git's hook variables out of the Biome smoke test
  • d51d58b Load every Biome preset with Biome in validate:configs
  • d8124d5 Raise the Node floor to 22.22.2 and 24.15
  • d0cddbc Refresh Prettier to 3.9.10 in the lockfile
  • 72890be Update the ESLint plugins and Unicorn to 79
  • 5eeb6e5 Stop fix --hook falling back to a whole-project run
  • 5dcc987 Release the Astro formatting and Biome 2.6 update as minor
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 23, 2026
@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 09b7a6b4-f091-4467-9773-bce378138ecd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@deepsource-io

deepsource-io Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

DeepSource Code Review

We reviewed changes in ebc38cf...3a27718 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

PR Report Card

Overall Grade   Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
JavaScript Nov 4, 2026 6:02a.m. Review ↗
Go Nov 4, 2026 6:02a.m. Review ↗

Important

AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.

@dependabot
dependabot Bot force-pushed the dependabot/bun/web/ultracite-8.0.1 branch 5 times, most recently from a5288f4 to 76570d3 Compare October 25, 2026 04:43
@dependabot dependabot Bot changed the title chore(deps-dev): bump ultracite from 7.12.4 to 8.0.1 in /web chore(deps-dev): bump ultracite from 7.12.4 to 8.0.2 in /web Nov 1, 2026
@dependabot
dependabot Bot force-pushed the dependabot/bun/web/ultracite-8.0.1 branch from 76570d3 to f26506d Compare November 1, 2026 03:41
Bumps [ultracite](https://github.com/haydenbleasel/ultracite) from 7.12.4 to 8.1.0.
- [Release notes](https://github.com/haydenbleasel/ultracite/releases)
- [Commits](https://github.com/haydenbleasel/ultracite/compare/ultracite@7.12.4...ultracite@8.1.0)

---
updated-dependencies:
- dependency-name: ultracite
  dependency-version: 8.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title chore(deps-dev): bump ultracite from 7.12.4 to 8.0.2 in /web chore(deps-dev): bump ultracite from 7.12.4 to 8.1.0 in /web Nov 4, 2026
@dependabot
dependabot Bot force-pushed the dependabot/bun/web/ultracite-8.0.1 branch from f26506d to 3a27718 Compare November 4, 2026 06:02

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants