Skip to content

fix(collaboration-caret): guard against null awareness state values#7740

Merged
bdbch merged 5 commits into
ueberdosis:mainfrom
yuichi0301:fix/tiptap-collaboration-caret-null-awareness-state
Jun 1, 2026
Merged

fix(collaboration-caret): guard against null awareness state values#7740
bdbch merged 5 commits into
ueberdosis:mainfrom
yuichi0301:fix/tiptap-collaboration-caret-null-awareness-state

Conversation

@yuichi0301
Copy link
Copy Markdown
Contributor

Changes Overview

Guard against null/undefined awareness state values in awarenessStatesToArray to prevent runtime errors when a collaboration client disconnects.

Implementation Approach

Added a null check on the value before spreading value.user. When value is falsy, only clientId is returned.

Testing Done

Added a unit test covering null, undefined, and valid awareness state entries in a single Map. All 4 tests pass.

Verification Steps

  1. pnpm vitest run packages/extension-collaboration-caret
  2. pnpm lint && pnpm build

Additional Notes

None.

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

None.

Copilot AI review requested due to automatic review settings April 13, 2026 01:23
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 13, 2026

🦋 Changeset detected

Latest commit: 641c59d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 72 packages
Name Type
@tiptap/extension-collaboration-caret Patch
@tiptap/core Patch
@tiptap/extension-audio Patch
@tiptap/extension-blockquote Patch
@tiptap/extension-bold Patch
@tiptap/extension-bubble-menu Patch
@tiptap/extension-bullet-list Patch
@tiptap/extension-code-block-lowlight Patch
@tiptap/extension-code-block Patch
@tiptap/extension-code Patch
@tiptap/extension-collaboration Patch
@tiptap/extension-color Patch
@tiptap/extension-details Patch
@tiptap/extension-document Patch
@tiptap/extension-drag-handle-react Patch
@tiptap/extension-drag-handle-vue-2 Patch
@tiptap/extension-drag-handle-vue-3 Patch
@tiptap/extension-drag-handle Patch
@tiptap/extension-emoji Patch
@tiptap/extension-file-handler Patch
@tiptap/extension-floating-menu Patch
@tiptap/extension-font-family Patch
@tiptap/extension-hard-break Patch
@tiptap/extension-heading Patch
@tiptap/extension-highlight Patch
@tiptap/extension-horizontal-rule Patch
@tiptap/extension-image Patch
@tiptap/extension-invisible-characters Patch
@tiptap/extension-italic Patch
@tiptap/extension-link Patch
@tiptap/extension-list Patch
@tiptap/extension-mathematics Patch
@tiptap/extension-mention Patch
@tiptap/extension-node-range Patch
@tiptap/extension-ordered-list Patch
@tiptap/extension-paragraph Patch
@tiptap/extension-strike Patch
@tiptap/extension-subscript Patch
@tiptap/extension-superscript Patch
@tiptap/extension-table-of-contents Patch
@tiptap/extension-table Patch
@tiptap/extension-text-align Patch
@tiptap/extension-text-style Patch
@tiptap/extension-text Patch
@tiptap/extension-twitch Patch
@tiptap/extension-typography Patch
@tiptap/extension-underline Patch
@tiptap/extension-unique-id Patch
@tiptap/extension-youtube Patch
@tiptap/extensions Patch
@tiptap/html Patch
@tiptap/markdown Patch
@tiptap/pm Patch
@tiptap/react Patch
@tiptap/starter-kit Patch
@tiptap/static-renderer Patch
@tiptap/suggestion Patch
@tiptap/vue-2 Patch
@tiptap/vue-3 Patch
@tiptap/extension-character-count Patch
@tiptap/extension-dropcursor Patch
@tiptap/extension-focus Patch
@tiptap/extension-gapcursor Patch
@tiptap/extension-history Patch
@tiptap/extension-list-item Patch
@tiptap/extension-list-keymap Patch
@tiptap/extension-placeholder Patch
@tiptap/extension-table-cell Patch
@tiptap/extension-table-header Patch
@tiptap/extension-table-row Patch
@tiptap/extension-task-item Patch
@tiptap/extension-task-list Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 13, 2026

Deploy Preview for tiptap-embed ready!

Name Link
🔨 Latest commit 641c59d
🔍 Latest deploy log https://app.netlify.com/projects/tiptap-embed/deploys/6a1d7322c443c600084b4b62
😎 Deploy Preview https://deploy-preview-7740--tiptap-embed.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Guards the CollaborationCaret awareness-state mapping against null/undefined values to avoid runtime crashes when a collaboration client disconnects and leaves transient empty awareness entries.

Changes:

  • Add a runtime guard in awarenessStatesToArray to handle falsy awareness state values safely.
  • Add a Vitest unit test covering null, undefined, and valid awareness-state entries.
  • Add a changeset for a patch release of @tiptap/extension-collaboration-caret.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
packages/extension-collaboration-caret/src/collaboration-caret.ts Avoids spreading from a missing awareness state by returning { clientId } for falsy entries.
packages/extension-collaboration-caret/tests/collaboration-caret.spec.ts Adds coverage to ensure null/undefined awareness entries don’t crash and yield minimal user objects.
.changeset/fix-collab-caret-null-awareness.md Records a patch-level user-facing fix for the crash scenario.

Comment thread packages/extension-collaboration-caret/src/collaboration-caret.ts Outdated
Comment thread packages/extension-collaboration-caret/src/collaboration-caret.ts Outdated
@yuichi0301 yuichi0301 force-pushed the fix/tiptap-collaboration-caret-null-awareness-state branch from 26f1a79 to 496de57 Compare April 18, 2026 11:28
@bdbch bdbch self-assigned this Apr 18, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@yuichi0301 yuichi0301 requested a review from bdbch April 23, 2026 22:21
Comment thread .changeset/fix-collaboration-content-error-handler.md Outdated
bdbch
bdbch previously approved these changes Jun 1, 2026
Comment thread packages/extension-collaboration-caret/src/collaboration-caret.ts Outdated
@bdbch bdbch merged commit ae17f17 into ueberdosis:main Jun 1, 2026
4 of 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.

3 participants