---
changelog:
  category: Release
  version: ultracite@7.6.4
date: '2026-05-08T01:11:54Z'
seo:
  description: >-
    Add new oxlint 1.63.0 rules:eslint/logical-assignment-operators → "error" —
    prefer ||=, &&=, ??= over their longhand equivalents; aligns with the
    modern-JS…
title: ultracite@7.6.4
type: changelog
---
## Patch Changes

-   aba89bb: Add new oxlint 1.63.0 rules:

    -   `eslint/logical-assignment-operators` → `"error"` — prefer `||=`, `&&=`, `??=` over their longhand equivalents; aligns with the modern-JS baseline.
    -   `eslint/require-unicode-regexp` → `"error"` — require the `u` (or `v`) flag on regex literals for correct Unicode handling.
    -   `eslint/no-restricted-properties` → `"off"` — purely a project-specific allowlist; no useful default to enforce.
    -   `unicorn/no-negated-condition` → `"error"` — newly split from the eslint version; the unicorn variant additionally covers ternary expressions and complements the existing `eslint/no-negated-condition`.
    -   `jsx-a11y/interactive-supports-focus` → `"error"` — interactive elements (click handlers, `role="button"`, etc.) must be keyboard-focusable; matches the rest of the a11y baseline.
    -   `vue/return-in-computed-property` → `"error"` — computed properties must return a value; missing `return` silently breaks reactivity.
    -   `vue/no-deprecated-model-definition` → `"error"` — flags Vue 2 `model: { ... }` usage; Vue 3 is the supported target.
    -   `vitest/prefer-mock-return-shorthand` → `"error"`, `vitest/no-unneeded-async-expect-function` → `"error"`, `vitest/prefer-to-have-been-called-times` → `"error"`, `vitest/prefer-snapshot-hint` → `"error"` — newly split out from the jest plugin; mirrors the existing jest config which has all four enabled.
    -   `vitest/require-hook` → `"off"` — newly split out from jest; disabled to mirror jest config (bun:test `mock.module()` must be called at top level).

-   522155e: Set `typescript/return-await` to `["error", "always"]` to resolve a circular conflict between `eslint/require-await`, `typescript/promise-function-async`, and `typescript/return-await` on Promise-returning functions outside try/catch. With the default `in-try-catch` mode, autofixers chase each other: `promise-function-async` adds `async`, `require-await` then demands an `await`, and `return-await` removes any `return await` outside a try/catch — leaving no resolvable state. The `"always"` mode keeps `return await` everywhere, breaking the cycle while preserving consistent stack traces.
