Interactive Dashboards


Adding interactivity to a dashboard helps uses explore the concepts and data you are presenting more deeply. There are several ways to add interactive components to Quarto dashboards:

  • Shiny for Python for dashboards that use Jupyter for computations (requires a server component for deployment).

  • Shiny for R for dashboards that use Knitr for computations (requires a server component for deployment).

  • Observable JS for client-side interactivity using the Observable dialect of JavaScript.

  • Jupyter Widgets or htmlwidgets for client-side interactivity based on standard Python and R JavaScript widget frameworks.

Using Shiny-based interactivity is generally much more flexible and capable than client-only interactivity, however requires a server for deployment.

Input Layout

No matter which type of interactivity you choose, you’ll want to present user inputs in a clear, accessible fashion. While you can locate inputs anywhere within a dashboard, there are some special containers that are tuned for this purpose:

  • Sidebars provide a collapsible, full height panel for inputs.

  • Toolbars provide a full page width horizontal panel for inputs.

  • Card Toolbars are directly embedded in the header or footer of cards.

The article on Inputs covers these methods in depth along with tips on doing more sophisticated layout of groups of inputs.