You're reading docs for Nextly Alpha. APIs may change between releases.

Dashboard Widgets

Dashboard Widgets

Put the numbers your team actually checks on the admin dashboard.

The admin dashboard is built from widgets. Each one declares what it wants to know, and the system runs that query on its behalf, scoped to the permissions of whoever is looking.

Availability

Built inThe widget system, the built-in sources and admin rendering all ship
Plugin-contributed widgetsExperimental. They render, but the contribution shape is still settling โ€” see the stability ladder
PermissionA widget's query runs scoped to the viewer, so two people can see the same dashboard and different numbers

Archetypes

A widget declares an archetype rather than drawing itself, so dashboards stay visually consistent no matter who contributed the widget:

ArchetypeShows
metricOne number
statsSeveral labelled, clickable numbers
tableRows and columns
listAn ordered list of items
actionsButtons for things to do
customYour own component, when none of the above fit

A text archetype exists in the type union but core has no renderer for it yet. A text widget that also ships no component of its own draws a card reading "not rendered yet" instead of prose โ€” visible rather than silently missing, but not what you wanted. Use custom with your own component for prose today.

Sizes are sm, md, lg, xl and full; heights are short and tall.

Declared, not fetched

A widget does not run its own database query. It declares one, and the system executes it. That is what makes permission scoping reliable rather than something each widget author has to remember: a widget cannot read what its viewer could not have read directly.

It also means most widgets need no data-fetching code at all.

Contributing a widget from a plugin works today, but PluginAdminWidget is marked @experimental and its shape may change before it settles. Building on it is reasonable; depending on it in something you cannot easily update is not.

On this page

Was this page helpful?