Voilà 0.5.0: Homecoming

Duc Trung Le
Jupyter Blog
Published in
4 min readSep 25, 2023

--

Voilà turns Jupyter notebooks into standalone web applications and dashboards. It provides a simple way for Jupyter users to share their work. For a detailed introduction to Jupyter’s Voilà subproject, you can check out this earlier blog post.

Up until the previous version, Voilà relied on custom JavaScript code to load extension assets and handle kernel connection. However, this approach had drawbacks since it only supported the now outdated Jupyter Notebook 6 extensions.

Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7. A JupyterLab plugin-based application replaces the current custom extension loader approach. This transition enables Voilà to leverage all the latest features and enhancements available upstream.

New features in Voilà 0.5.0

Extension loading system

As of Version 0.5.0, Voilà uses the same prebuilt extension system as JupyterLab. The extension assets are loaded from local paths rather than relying on a CDN, resulting in a significant enhancement to Voilà’s extension compatibility with the rest of the JupyterLab ecosystem. This change also avoids making requests for external services. Additionally, users can now develop extensions for Voilà using the same approach as for JupyterLab extensions.

A Voila dashboard with top bar extension and custom JupyterLab theme.

Mimetype rendering mechanism

In 0.5.0, the logic for rendering cell outputs containing mimetypes has been revised, moving away from relying on nbconvert and instead depending on JupyterLab mimetype renderers. This change adds support for a wide range of custom JupyterLab renderers such as jupyterlab-fasta, vega, jupyterlab-geojson, etc.

Rendering mimetypes data in Voila

New tree page

The default tree page in Voilà has transitioned into a JupyterLab-based application incorporating the file browser widget. While the Jinja-based tree page remains available, users must opt for it using either the --classic-tree CLI option or by appending ?classic-tree=Trueto the query string.

The new tree page in Voilà supports JupyterLab custom themes, whereas the classic tree page is limited to light and dark themes.

New tree page with a custom theme.

Token-based authentication system

Depending on the identity provider of jupyter-server 2, Voilà now supports token authentication but is disabled by default.

  • To start Voilà with auto-generated token:
voila --token ...
  • To start Voilà with a personalized token:
voila --token=my-secret-token ...

Installing Voilà

Voila is available on both PyPI and conda-forge:

# Install with pip
pip install voila

# Install with mamba
mamba install -c conda-forge voila

You can try Voilà online using this link.

Acknowledgments

The contributions to Voilà by QuantStack are supported by Bloomberg.

About the Contributors

Voilà is an official Jupyter subproject, it has resulted from the collective efforts of numerous contributors. Below, we highlight the primary contributors for this release:

Jeremy Tuloup is a Technical Director at QuantStack and a Jupyter Distinguished Contributor. Maintainer and contributor of JupyterLab, Jupyter Notebook, JupyterLite, Voilà, and projects within the Jupyter ecosystem.

Martin Renou is a Project Director at QuantStack and a Jupyter Distinguished Contributor. Martin works on a variety of projects, from xtensor and xeus-python in C++ to ipywidgets, ipyleaflet and bqplot in Python and TypeScript.

Le Duc Trung is a Scientific Software Developer at QuantStack. He works on several projects within the Jupyter ecosystem, from the main projects like JupyterLab, Voilà, and ipywidgets to various JupyterLab extensions and widgets.

--

--