Existing pages in the Dashboard can be customized in many ways:
Most customizations should be implemented with these extension APIs rather than by copying or replacing a built-in route. Replacing a route is still possible by registering your own route, but it should normally be the last option because it means you take responsibility for keeping that whole page aligned with future Dashboard behavior.
| I want to... | Use this |
|---|---|
| Add a button to an existing page header | Action bar items |
| Add secondary page actions in the three-dot menu | Action bar dropdown items |
| Add a panel to a detail page or replace an existing panel | Page blocks |
| Hide a built-in panel conditionally | Page block shouldRender with order: 'replace' |
| Change how a table column renders | Data table display components |
| Fetch extra fields for an existing list table | Data table extendListDocument |
| Add bulk actions to a list table | Data table bulk actions |
| Replace a native input on a detail form | Native detail-page input overrides |
| Fetch extra fields for an existing detail page | Detail form extendDetailDocument |
| Add a custom input for a plugin-defined custom field | Custom field components |
| Add a global icon button near alerts | Toolbar items |
| Move, remove, or rename navigation entries | Navigation modification |
| Find the IDs needed by extension APIs | Extension targets and Dev Mode |
@vendure/dashboard so the extension stays aligned with Dashboard styling and dependency versions.