Skip to content

deps: upgrade ultracite to 8 (major, needs review) - #1088

Merged
Aymericr merged 6 commits into
mainfrom
cursor/deps-ultracite-8-0314
Oct 15, 2026
Merged

Aymericr merged 6 commits into
mainfrom
cursor/deps-ultracite-8-0314

Conversation

@Aymericr

@Aymericr Aymericr commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Upgrades ultracite from ^7.8.2 to ^8.0.1 in the root package.json, with bun.lock regenerated. It also raises the root engines.node from >=22 to >=22.18 to match Ultracite 8's own requirement, and updates the Node prerequisite in SETUP.md and CONTRIBUTING.md to 22.18+. The CLI package's >=22.13.0 engines field and the "CLI-managed editor" note in SETUP.md are unchanged, because they describe end users of the published @pascal-app/cli, not contributors.

Ultracite 8 peer-requires @biomejs/biome ^2.5.0, which #1087 (now merged) provided. main has been merged into this branch, and bun install --frozen-lockfile passes on the merged lockfile.

How it was done: I ran ultracite upgrade --pm bun. It reported "Configuration files are already in this release's format", and the only extra change it made was pinning @biomejs/biome to an exact 2.5.15. I reverted that pin to keep the repo's ^ ranges; otherwise the result is identical to a manual bump. I did not run ultracite init, because it would rewrite biome.jsonc and AGENTS.md.

Important context: Ultracite is effectively unused in this repo. biome.jsonc doesn't extend ultracite/biome/core (ultracite doctor warns about exactly that), no script or hook calls ultracite, and AGENTS.md has no Ultracite rules block. No Oxlint, ESLint, Stylelint or Prettier configs exist, so there's no whitespace-only diff from the Oxlint preset. Reviewers may prefer to drop ultracite entirely rather than carry a major-version upgrade of an unused dependency.

Ultracite 8.0.0 / 8.0.1 breaking changes, checked against this repo

Breaking change Effect here
Every agent reads Ultracite rules from AGENTS.md; init migrates old CLAUDE.md/GEMINI.md/.firebender blocks None. CLAUDE.md and GEMINI.md are symlinks to AGENTS.md, there is no Ultracite block anywhere, and init was not run.
Biome core preset sets noSuspiciousSemicolonInJsx, noDuplicateJsxProps, noVoidElementsWithChildren to error None. biome.jsonc doesn't extend the preset. Adopting it later would turn these on.
ESLint core preset makes compat/compat an error (needs browserslist targets) None. ESLint presets aren't used (packages/eslint-config doesn't reference ultracite).
Cypress and Storybook rules moved to opt-in presets None. They aren't used.
ESLint/Stylelint no longer run Prettier as a rule None. They aren't used through Ultracite.
Type-aware ESLint rules are now opt-in None.
ultracite fix --hook exits 2 when problems remain None. .githooks/pre-commit calls bun run check (Biome directly), not ultracite fix --hook.
Pre-commit hooks fix only staged files None. The repo's own hook is check-only.
init/upgrade install oxlint/oxfmt/oxlint-tsgolint within caret ranges upgrade installed none of them, since Biome is the detected linter. They show up only as optional peers in bun.lock.
Requires Node 22.18+ Root engines.node is now >=22.18, and the contributor docs say Node.js 22.18+. CI's node-version: 22 already resolves to a newer 22.x.

How to test

  1. bun install --frozen-lockfile
  2. bunx ultracite doctor should show "4 passed, 1 warnings" (the warning is the non-extended biome.jsonc).
  3. bun run ci should pass.

CI is green. Locally (Node 22.21.1, Bun 1.4.2), bun run ci passes except for packages/viewer/src/components/viewer/perf-monitor.test.tsx. That test passes in isolation and in CI. It fails locally only when render-error.test.tsx runs first: that test's finally restores window, requestAnimationFrame and cancelAnimationFrame with Object.assign, which leaves them as own keys set to undefined instead of deleting them. This predates this PR and is left for a separate fix.

Screenshots / screen recording

N/A — non-visual change

Checklist

  • I've tested this locally with bun dev
  • My code follows the existing code style (run bun check to verify)
  • I've updated relevant documentation (if applicable)
  • This PR targets the main branch
Open in Web Open in Cursor 

Note

Low Risk
Dev-only dependency and documentation/engine pin changes; no application runtime or auth paths are modified.

Reviewed by Cursor Bugbot for commit 1481e7b. Bugbot is set up for automated code reviews on this repo. Configure here.

@Aymericr
Aymericr merged commit 645c092 into main Oct 15, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants