UI Namespace - types for the slot-based UI customization API.
Overview
Every visible piece of the SDK UI is a slot - a named placeholder you can fully replace
with your own DOM, partially customize (header/body/footer sub-slots), or hide entirely.
Full replacement - a callback (instance, id) => SlotConfiguration that returns
render, onMount, and onUnmount. The SDK renders whatever DOM node render returns.
Sub-slot customization - an object { header?, body?, footer? } where each region
is its own callback. Regions you omit keep their default rendering.
The slot callback (instance, id) => { render, onMount?, onUnmount? } is called once
when the SDK prepares to render the component. render(params) is called on every re-render.
onMount(id) fires once after the DOM is inserted. onUnmount(id) fires on teardown.
Example
Full replacement - custom comment thread with lifecycle:
UI Namespace - types for the slot-based UI customization API.
Overview
Every visible piece of the SDK UI is a slot - a named placeholder you can fully replace with your own DOM, partially customize (header/body/footer sub-slots), or hide entirely.
Slots are organized by feature domain in UI.Configuration:
main(always-visible),contextual(mode-specific)actions,status,textMarkupInline,deleteConfirm,link,noteexitConfirm,downloadConfirm,cannotSavePrompt,fontMismatch,subsetFontcreate,list,digitalSigning,digitalStatuscreate,listcalibration,settingscontrols,viewpropertyEditorcontainer, plus dynamic custom sidebar panelscommentThread,search,documentEditor,attachmentPreview,passwordPrompt,reloadConfirm,aiAssistantCustomization modes
Every slot accepts one of two forms:
(instance, id) => SlotConfigurationthat returnsrender,onMount, andonUnmount. The SDK renders whatever DOM noderenderreturns.{ header?, body?, footer? }where each region is its own callback. Regions you omit keep their default rendering.To hide a slot entirely, return
nullfromrender:Lifecycle
The slot callback
(instance, id) => { render, onMount?, onUnmount? }is called once when the SDK prepares to render the component.render(params)is called on every re-render.onMount(id)fires once after the DOM is inserted.onUnmount(id)fires on teardown.Example
Full replacement - custom comment thread with lifecycle:
Example
Sub-slot customization - add a banner above the search panel:
Example
Hide a slot entirely:
Example
Preset - hide everything, then selectively restore:
Example
Runtime update - switch between custom and default UI:
See