Embed custom HTML or React code for bespoke visualizations. Last-resort option when standard widgets can't achieve the desired result.
Render Modes
HTML — Sandboxed iframe. Pre-loadable libraries: D3.js, Chart.js, Tailwind CSS. Data arrives via widgetdata event.
React — Inline with dashboard theme. Code receives ctx object with React hooks, data, and formatting utilities.
Data Connection
Static — No data connection, pure visual content
Custom SQL — Write SQL with placeholders
Table + Metrics — Standard data selection
Pre-built example templates are available from the properties panel.
Get started
1. Add a custom component widget
In Edit Mode, click the + Custom button in the floating toolbar at the bottom of the page.
The widget appears on the dashboard with the Properties Panel open on the right.
In the Properties Panel, verify the Render Mode dropdown shows HTML (sandboxed iframe) by default, and a Code text area is visible below it.
Close the Properties Panel.
Result: The widget displays the placeholder text "Edit this widget to add your custom component" until code is entered.
2. Write HTML content
Open the Properties Panel for the custom component widget.
Confirm Render Mode is set to HTML (sandboxed iframe) (the default).
Click the Code text area, select all existing text, and type your HTML markup.
Close the Properties Panel.
Result: The widget renders your HTML inside a sandboxed iframe. Content updates each time you edit the code.
Use React mode
3. Switch to React mode and write a component
Open the Properties Panel and click the Render Mode dropdown.
Select React (inline, themed).
Click the Code text area, select all text, and write your component using ctx.createElement syntax (not JSX).
Result: The widget renders inline without an iframe, using the dashboard's theme. You have access to ctx.data, ctx.columns, and other context variables.
4. Switch between HTML and React modes
Open the Render Mode dropdown and switch between HTML (sandboxed iframe) and React (inline, themed).
Each mode automatically loads its own starter template in the Code editor when you switch.
Note: Switching modes replaces the code with a mode-specific template — your previous code is not preserved. HTML mode renders in an iframe; React mode renders inline.
5. Handle React compilation errors
In React mode, if your code contains a syntax error, the widget displays a Compilation Error message with a warning icon and error details.
Other widgets on the dashboard are not affected.
Fix the code in the Code editor and the widget automatically re-renders without a page refresh.
Result: Errors are contained to the widget and shown inline. The page does not crash.
6. Enable chromeless mode
Open the Properties Panel and scroll down to the Layout section.
Enable the Chromeless (fullscreen) toggle.
Close the Properties Panel.
Result: The widget renders without a card border, background, or title — content fills the entire widget area. This is useful for custom visualizations that manage their own styling.
Setup guide
Schema information
Settings
No items found.
Troubleshooting
Troubleshooting guides
Check out troubleshooting guides for
Custom Component Widget
here:
Limits
Custom Component Widget API changes
Frequently asked questions
No items found.
Thank you for your feedback!
Oops! Something went wrong while submitting the form.