Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

CollaborationExtension registered at runtime installs no sync plugin, so edits never reach the Y.Doc

Abierto
#3,175 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

@adarshsm ya está trabajando en esto.

Desde el 10/10/2026.

  • #3178 de @adarshsm — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
react, typescript
Área
frontend, web-dev

Línea de trabajo

Start in ExtensionManager.replaceExtension, which installs the plugins of the extension passed in but skips its nested blockNoteExtensions; CollaborationExtension is where YSync, YCursor and YUndo live. Reproduce by creating an editor without the collaboration option and registering CollaborationExtension at runtime, then check whether the Y.XmlFragment changes after typing. Done means nested extensions are installed on runtime registration, or registration throws when they cannot be.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Version: BlockNote 0.55 (@blocknote/core, @blocknote/react)

What happens

Collaboration registered on an editor that already exists doesn't sync. The editor becomes editable, typing works locally, and nothing is written to the Y.XmlFragment, so edits are silently lost.

We create a read-only editor without collaboration (fed a static snapshot, no provider). When the user switches to editing, we attach collaboration to that same editor instead of remounting it, which keeps scroll position and node views stable.

Cause (from reading the source)

ExtensionManager.replaceExtension installs the ProseMirror plugins of the extension it is given, but not those of that extension's nested blockNoteExtensions. For CollaborationExtension, the nested ones carry the actual plugins: YSync, YCursor, YUndo and the rest. So none of them are installed.

Workaround

Registering the sub-extensions flat works, in this order (the cursor plugin reads the sync plugin's state in its init):

  • YSync
  • YCursor
  • YUndo
  • ForkYDoc
  • RelativePositionMapping
  • SchemaMigration

FixUpSchemaExtension is not exported, so it can't be registered that way.

Repro
  1. Create an editor without the collaboration option.
  2. Register CollaborationExtension at runtime, with a Y.XmlFragment and a provider.
  3. Type in the editor.
  4. The fragment stays empty, and other clients see nothing.
Expected

Either nested blockNoteExtensions are installed when an extension is registered at runtime, or registering an extension whose nested extensions can't be installed throws instead of failing silently. A documented way to attach collaboration to an existing editor would also help.

Lenguaje dominante
TypeScript
Estrellas
10.3k
Forks
778
Merge medio
2 d 12 h
PR fusionados (30 d)
27

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TypeCellOS/BlockNote

Todos los issues de TypeCellOS/BlockNote

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.