  In the Jupyter ecosystem, data visualization is usually done with "widgets"
created as notebook cell outputs. While this mechanism works well in some
circumstances, it is not well-suited to presenting interfaces that are
long-lived, interactive, and visually rich. Unlike the traditional Jupyter
notebook system, the newer JupyterLab application provides a sophisticated
extension infrastructure that raises new design possibilities. Here we present
a novel user experience (UX) for interactive data visualization in JupyterLab
that is based on an "app" that runs alongside the user's notebooks, rather than
widgets that are bound inside them. We have implemented this UX for the AAS
WorldWide Telescope (WWT) visualization tool. JupyterLab's messaging APIs allow
the app to smoothly exchange data with multiple computational kernels, allowing
users to accomplish tasks that are not possible using the widget framework. A
new Jupyter server extension allows the frontend to request data from kernels
asynchronously over HTTP, enabling interactive exploration of gigapixel-scale
imagery in WWT. While we have developed this UX for WWT, the overall design and
the server extension are portable to other applications and have the potential
to unlock a variety of new user activities that aren't currently possible in
"science platform" interfaces.
