Skip to main content
SuperDoc uses an event system for lifecycle hooks and change notifications.

Subscribing to events

superdoc.on('ready', handler);     // Subscribe
superdoc.once('ready', handler);   // One-time listener
superdoc.off('ready', handler);    // Unsubscribe

Lifecycle events

ready

Fired when SuperDoc is fully initialized.
superdoc.on('ready', ({ superdoc }) => {
  // Safe to use all features
});

editorBeforeCreate

Fired before an editor is created. Use this to configure extensions or set up services.
superdoc.on('editorBeforeCreate', ({ editor }) => {
  // Configure before editor mounts
});

editorCreate

When an editor is created.
superdoc.on('editorCreate', ({ editor }) => {
  editor.focus();
});

editorDestroy

When an editor is destroyed.
superdoc.on('editorDestroy', () => {
  cleanup();
});

Content events

editor-update

When editor content changes.
superdoc.on('editor-update', ({ editor }) => {
  autoSave(editor.getJSON());
});

content-error

When content processing fails.
superdoc.on('content-error', ({ error, editor, documentId }) => {
  console.error('Content error:', error);
});

fonts-resolved

When document fonts are resolved.
superdoc.on('fonts-resolved', ({ documentFonts, unsupportedFonts }) => {
  if (unsupportedFonts.length > 0) {
    console.warn('Unsupported fonts:', unsupportedFonts.join(', '));
  }
});

Comments events

comments-update

When comments are modified.
superdoc.on('comments-update', ({ type, data }) => {
  // type: 'add', 'update', 'deleted', 'resolved'
});

Collaboration events

collaboration-ready

When collaboration is initialized.
superdoc.on('collaboration-ready', ({ editor }) => {
  showOnlineUsers();
});

awareness-update

When user presence changes.
superdoc.on('awareness-update', ({ context, states }) => {
  const users = Array.from(states.values());
  updateUserCursors(users);
});

locked

When document lock state changes.
superdoc.on('locked', ({ isLocked, lockedBy }) => {
  if (isLocked) {
    showLockBanner(`Locked by ${lockedBy.name}`);
  }
});

UI events

When the comments sidebar is toggled.
superdoc.on('sidebar-toggle', (isOpened) => {
  adjustLayout(isOpened);
});

Error events

exception

When an error occurs during document processing or runtime.
superdoc.on('exception', ({ error, document, editor }) => {
  console.error('SuperDoc error:', error);
});

Configuration-based events

Events can also be set during initialization:
new SuperDoc({
  selector: '#editor',
  document: 'document.docx',
  onReady: ({ superdoc }) => { },
  onEditorBeforeCreate: ({ editor }) => { },
  onEditorCreate: ({ editor }) => { },
  onEditorUpdate: ({ editor }) => { },
  onFontsResolved: ({ documentFonts, unsupportedFonts }) => { },
  onSidebarToggle: (isOpened) => { },
  onException: ({ error }) => { },
});

Event order

  1. editorBeforeCreate — Before editor mounts
  2. editorCreate — Editor ready
  3. ready — All editors ready
  4. collaboration-ready — If collaboration enabled
  5. Runtime events (editor-update, comments-update, sidebar-toggle, etc.)
  6. editorDestroy — Cleanup