- Custom HTML Widget
- Text Widget

For dynamic Custom HTML widgets (animations, async data, delayed rendering), call the following from your script the moment your content is fully rendered so dashboard PDF exports wait for it:
parent.postMessage('html-widget:ready', '*');Where you put the call depends on what your HTML does.Common patterns:-
After a delayed render:
setTimeout(() => { /* render */ parent.postMessage('html-widget:ready', '*'); }, 1200); -
after an async fetch / data load:
fetch('...').then(data => { renderChart(data); parent.postMessage('html-widget:ready', '*'); }); -
After window load for simple content:
window.addEventListener('load', () => parent.postMessage('html-widget:ready', '*')); - If the call is omitted, the export falls back to a 5-second wait after the iframe loads and screenshots whatever is on screen.
