Skip to content

feat: upgrade nx to 22.6.4 and liveblocks to 3.17.0#2627

Open
nperez0111 wants to merge 17 commits intomainfrom
feat/upgrade-nx
Open

feat: upgrade nx to 22.6.4 and liveblocks to 3.17.0#2627
nperez0111 wants to merge 17 commits intomainfrom
feat/upgrade-nx

Conversation

@nperez0111
Copy link
Copy Markdown
Contributor

@nperez0111 nperez0111 commented Apr 3, 2026

Summary

Upgrade nx/​@nx/js from 22.5.4 to 22.6.4 and all Liveblocks packages from the 3.7.1-tiptap3 pre-release to stable 3.17.0, resolving tiptap v2/v3 peer dependency mismatches.

Rationale

The monorepo was using a Liveblocks pre-release (3.7.1-tiptap3) that still declared tiptap v2 peer dependencies, causing unmet peer dependency warnings during install. Liveblocks 3.17.0 now officially supports tiptap v3, eliminating these warnings. The nx upgrade brings the build tooling to the latest patch release.

Changes

  • Upgraded nx and @nx/js from 22.5.4 → 22.6.4
  • Upgraded all @liveblocks/* packages from 3.7.1-tiptap3^3.17.0 in:
    • playground/package.json
    • docs/package.json
    • examples/07-collaboration/02-liveblocks/package.json
    • examples/07-collaboration/02-liveblocks/.bnexample.json
    • playground/src/examples.gen.tsx (auto-generated)
  • Updated pnpm-lock.yaml

Impact

Resolves tiptap v2/v3 peer dependency warnings related to @tiptap/extension-collaboration, @tiptap/extension-collaboration-cursor, and @liveblocks/react-tiptap. No breaking API changes expected — Liveblocks 3.17.0 is the stable release of the tiptap3 pre-release already in use.

Testing

  • pnpm install completes with no tiptap-related peer dependency warnings
  • nx run-many -t build --projects=@blocknote/core builds successfully

Checklist

  • Code follows the project's coding standards.
  • Unit tests covering the new feature have been added.
  • All existing tests pass.
  • The documentation has been updated to reflect the new feature

Summary by CodeRabbit

  • Chores
    • Updated Liveblocks integrations to ^3.17.0 in docs, examples, and playground.
    • Upgraded development tooling (Vite, Vitest, Vite React plugin, NX) across packages and examples.
    • Standardized library CSS output name and improved build-time CSS resolution for library builds.
    • Enabled workspace analytics setting.
    • Minor test timeout adjustment and tooling-related maintenance.
    • No public APIs or runtime features were changed.

Upgrade nx and @nx/js from 22.5.4 to 22.6.4. Upgrade all liveblocks
packages from the 3.7.1-tiptap3 pre-release to stable 3.17.0, which
officially supports tiptap v3 and resolves peer dependency mismatches.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
blocknote Ready Ready Preview Apr 4, 2026 9:49am
blocknote-website Ready Ready Preview Apr 4, 2026 9:49am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Updated Liveblocks dependency specifiers from pinned pre-release versions to caret ranges; bumped many dev tooling versions (vite, vitest, @vitejs/plugin-react, nx/@nx/js); enabled analytics in nx.json; added CSS filename and alias settings in multiple Vite configs; replaced a NODE_ENV check with import.meta.env.DEV in a Shiki helper.

Changes

Cohort / File(s) Summary
Liveblocks package updates
docs/package.json, examples/07-collaboration/02-liveblocks/.bnexample.json, examples/07-collaboration/02-liveblocks/package.json, playground/package.json, playground/src/examples.gen.tsx
Replaced pinned 3.7.1-tiptap3 versions for @liveblocks/* with caret ranges ^3.17.0.
Workspace config
package.json, nx.json
Bumped @nx/js and nx to 22.6.4; added "analytics": true to nx.json.
Dev tooling bumps — examples & packages
examples/**/package.json, tests/package.json, playground/package.json, packages/*/package.json
Upgraded devDependencies across many packages/examples (e.g., vite^8.0.3, vitest^4.1.2, @vitejs/plugin-react^6.0.1, plugin bumps). Changes confined to devDependencies.
Vite build output & alias changes
packages/ariakit/vite.config.ts, packages/core/vite.config.ts, packages/mantine/vite.config.ts, packages/react/vite.config.ts, packages/shadcn/vite.config.ts, packages/xl-ai/vite.config.ts, packages/xl-odt-exporter/vite.config.ts
Added build.lib.cssFileName: "style" to several library builds; introduced CSS alias mappings during build to resolve @blocknote/*/style.css; added oxc.jsx.throwIfNamespace = false in xl-odt-exporter config.
Shiki plugin check change
packages/core/src/blocks/Code/shiki.ts
Switched development gating check from process.env.NODE_ENV === "development" to import.meta.env.DEV for a lazy-highlighter warning emission.
Test types update
packages/xl-ai/src/api/formats/tests/sharedTestCases.ts
Changed imported Vitest type and parameter from TaskContext to TestContext in a test helper.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐇 I nibble at versions, swapping pins for carets,

Vite strides on with new-named charts,
DEV now whispers where NODE once stood,
Analytics hums — CSS named good.
🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly summarizes the main changes: nx upgrade to 22.6.4 and liveblocks upgrade to 3.17.0, matching the core objective of the PR.
Description check ✅ Passed Description is well-structured with Summary, Rationale, Changes, Impact, Testing sections and a checklist. It clearly explains the upgrades, their motivation, and testing performed.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/upgrade-nx

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new bot commented Apr 3, 2026

Open in StackBlitz

@blocknote/ariakit

npm i https://pkg.pr.new/@blocknote/ariakit@2627

@blocknote/code-block

npm i https://pkg.pr.new/@blocknote/code-block@2627

@blocknote/core

npm i https://pkg.pr.new/@blocknote/core@2627

@blocknote/mantine

npm i https://pkg.pr.new/@blocknote/mantine@2627

@blocknote/react

npm i https://pkg.pr.new/@blocknote/react@2627

@blocknote/server-util

npm i https://pkg.pr.new/@blocknote/server-util@2627

@blocknote/shadcn

npm i https://pkg.pr.new/@blocknote/shadcn@2627

@blocknote/xl-ai

npm i https://pkg.pr.new/@blocknote/xl-ai@2627

@blocknote/xl-docx-exporter

npm i https://pkg.pr.new/@blocknote/xl-docx-exporter@2627

@blocknote/xl-email-exporter

npm i https://pkg.pr.new/@blocknote/xl-email-exporter@2627

@blocknote/xl-multi-column

npm i https://pkg.pr.new/@blocknote/xl-multi-column@2627

@blocknote/xl-odt-exporter

npm i https://pkg.pr.new/@blocknote/xl-odt-exporter@2627

@blocknote/xl-pdf-exporter

npm i https://pkg.pr.new/@blocknote/xl-pdf-exporter@2627

commit: e25fbaa

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@playground/package.json`:
- Line 32: Replace the incorrect dependency entry "@liveblocks/core" with the
public SDK package "@liveblocks/client" in the playground package manifest (keep
the version specifier, e.g. "^3.17.0"); this ensures consistency with examples
that import "@liveblocks/client" and avoids referencing the internal
"@liveblocks/core" package. After changing the dependency string, run your
package manager to update the lockfile and node_modules so the new dependency is
installed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9d1dbc27-314f-4f3d-8de6-d4945cbeb13e

📥 Commits

Reviewing files that changed from the base of the PR and between 38be5fd and f6bfb7e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (6)
  • docs/package.json
  • examples/07-collaboration/02-liveblocks/.bnexample.json
  • examples/07-collaboration/02-liveblocks/package.json
  • package.json
  • playground/package.json
  • playground/src/examples.gen.tsx

- vite: ^5.4.20/^6.4.0 → ^8.0.3
- vitest: ^2.1.9 → ^4.1.2
- @vitest/runner: ^2.1.9 → ^4.1.2
- @vitejs/plugin-react: ^4.7.0 → ^6.0.1
- vite-plugin-externalize-deps: ^0.8.0 → ^0.10.0
- vite-plugin-inspect: 11.1.0 → 12.0.0-beta.1
- Replace process.env.NODE_ENV with import.meta.env.DEV in shiki.ts
  (vite 8 no longer bundles @types/node)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/core/src/blocks/Code/shiki.ts`:
- Line 22: The conditional that references import.meta.env.DEV (the line
containing import.meta.env.DEV and the hasWarned check) will blow up in
CJS/Node; replace it with a defensive environment check that first guards
existence (using typeof import !== 'undefined' and checking import.meta and
import.meta.env) and falls back to process.env.NODE_ENV === 'development' so
both ESM and CJS/Node are safe, keeping the hasWarned logic intact; also add a
minimal ambient declaration (.d.ts) for process.env (e.g., declare const
process: { env?: { NODE_ENV?: string } } | undefined) to satisfy TypeScript.

In `@packages/xl-ai-server/package.json`:
- Around line 63-64: The dev dependencies in package.json are inconsistent:
"vite" is bumped to ^8.0.3 but "vite-node" remains ^2.1.9 which is incompatible;
update the manifest so vite-node is upgraded to a v6-compatible version (match
vite@8 / vitest@4 requirements) and ensure the "scripts.dev" entry that invokes
vite-node continues to work; specifically change the vite-node dependency to a
v6.x release compatible with Vite 8 and run/install to verify local dev starts
successfully.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ebd3c74b-3b4f-4ec6-a0cd-708b757b4106

📥 Commits

Reviewing files that changed from the base of the PR and between f6bfb7e and 2525122.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (19)
  • nx.json
  • package.json
  • packages/ariakit/package.json
  • packages/code-block/package.json
  • packages/core/package.json
  • packages/core/src/blocks/Code/shiki.ts
  • packages/mantine/package.json
  • packages/react/package.json
  • packages/server-util/package.json
  • packages/shadcn/package.json
  • packages/xl-ai-server/package.json
  • packages/xl-ai/package.json
  • packages/xl-docx-exporter/package.json
  • packages/xl-email-exporter/package.json
  • packages/xl-multi-column/package.json
  • packages/xl-odt-exporter/package.json
  • packages/xl-pdf-exporter/package.json
  • playground/package.json
  • tests/package.json
✅ Files skipped from review due to trivial changes (14)
  • nx.json
  • packages/xl-multi-column/package.json
  • packages/server-util/package.json
  • packages/core/package.json
  • packages/xl-odt-exporter/package.json
  • packages/mantine/package.json
  • tests/package.json
  • packages/code-block/package.json
  • packages/xl-email-exporter/package.json
  • packages/xl-docx-exporter/package.json
  • packages/react/package.json
  • packages/ariakit/package.json
  • packages/shadcn/package.json
  • package.json
🚧 Files skipped from review as they are similar to previous changes (1)
  • playground/package.json

….json files

The vite v8 upgrade missed updating these 86 example files, causing
pnpm install --frozen-lockfile to fail in CI due to lockfile mismatch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add cssFileName: "style" to lib configs so CSS output keeps the
  expected name (vite 8 changed default from style.css to {entry}.css)
- Add resolve aliases for CSS @import of @blocknote/* packages during
  build (vite 8's postcss-import no longer resolves bare specifiers)
- Set oxc jsx throwIfNamespace: false for xl-odt-exporter (vite 8 uses
  oxc which rejects JSX namespace tags by default)
- Rename TaskContext to TestContext in xl-ai (vitest v4 rename)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The performance tests create 10k-block editors which can exceed the
default 5s vitest timeout on CI runners. Increased to 30s.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The jest/valid-describe-callback rule doesn't allow an options object
as the second argument to describe(). Move timeout to each it() instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update vite (^5.4.20 → ^8.0.3) and @vitejs/plugin-react (^4.7.0 →
  ^6.0.1) in 86 example package.json files
- Add cssFileName: "style" to lib configs so CSS output keeps the
  expected name (vite 8 changed default from style.css to {entry}.css)
- Add resolve aliases for CSS @import of @blocknote/* packages during
  build (vite 8's postcss-import no longer resolves bare specifiers)
- Set oxc jsx throwIfNamespace: false for xl-odt-exporter (vite 8 uses
  oxc which rejects JSX namespace tags by default)
- Rename TaskContext to TestContext in xl-ai (vitest v4 rename)
- Update MSW snapshot file hashes for xl-ai tests (request body hashes
  changed with dependency upgrades)
- Add global process type declaration for shiki.ts NODE_ENV check
- Reduce performance test iterations to prevent CI timeout flakiness

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The interop: "compat" output option was removed in Rollup 4 (used by Vite 8) since compat is now the default behavior. Removing it eliminates the "Invalid output options" warning during builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…bility

Rolldown (used by Vite 8) preserves CJS require() calls for non-externalized
dependencies. The external function used exact matching with .includes(source),
which missed subpath imports like "use-sync-external-store/shim/with-selector".
This caused require("react") to fail at runtime in the browser with
"Calling require in an environment that doesn't expose the require function".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Switch playground @liveblocks/core to @liveblocks/client to match other
manifests, and upgrade vite-node to ^6.0.0 for vite 8 compatibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ProseMirror's DOMObserver timeout fires after jsdom teardown, causing
"document is not defined" ReferenceError. Adding editor.unmount() at
the end of each test ensures proper cleanup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Exclude .next/cache from build:site outputs to reduce cache bloat
- Remove unused dist output from build:site (docs uses .next)
- Exclude non-build files (sqlite.db, .env*, coverage) from build:site inputs
- Fix test/e2e dependsOn to use build deps instead of cascading test/e2e deps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ition

When Nx runs builds in parallel and restores core/react from remote cache,
multiple tsc --build processes simultaneously try to rebuild the same project
references, causing race conditions where one process reads partially-written
declaration files. Since Nx already handles dependency ordering via ^build,
the project reference traversal in tsc --build is redundant.

Affected packages: xl-pdf-exporter, xl-docx-exporter, xl-odt-exporter, xl-ai

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant