Configure the Editor
Organize SuperDoc initialization around document input, interface, behavior, and host integration.
Start with the smallest configuration that loads the document and interface you need. Add a field only when a product requirement justifies it.
Use one typed configuration
import { SuperDoc, type Config } from 'superdoc';
import 'superdoc/style.css';
const editorConfig = {
selector: '#editor',
document: '/contract.docx',
documentMode: 'editing',
user: { name: 'Avery Stone', email: '[email protected]' },
contained: true,
zoom: { mode: 'fit-width', fitWidth: { max: 100, padding: 24 } },
modules: {
toolbar: { responsiveToContainer: true },
comments: { displayMode: 'auto' },
surfaces: { findReplace: true },
},
onReady: () => {
console.info('SuperDoc is ready.');
},
} satisfies Config;
const superdoc = new SuperDoc(editorConfig);
window.addEventListener('beforeunload', () => superdoc.destroy());
The important configuration groups are:
selector,document, anddocumentModeestablish the Editor and its starting posture.useridentifies the person for comments, suggestions, and collaboration presence. Supply trusted identity from your application.modulesconfigures built-in interface and integration subsystems.zoom,contained, fonts, proofing, and layout options control host behavior.onReady, error callbacks, and focused events connect the Editor to application lifecycle.
Keep the configuration object stable in reactive frameworks. Recreating the Editor to apply a new object can reset selection and transient UI state. Use runtime methods for supported changes such as mode and zoom, and remount deliberately for initialization-only fields such as extensions.
modules combines presentation, behavior, and integration settings. Add only the subsystem configuration your application uses.
Client configuration is not authorization. A browser user can inspect or alter client code, so document access and collaboration authorization must be enforced by trusted services.