{"id":10342,"library":"voila","title":"Voila","description":"Voila turns Jupyter notebooks into standalone web applications. It executes the notebook and renders the output, displaying interactive widgets and outputs without the underlying code. The current version is 0.5.11, with frequent patch releases addressing bug fixes and minor enhancements, typically on a bi-weekly or monthly cadence.","status":"active","version":"0.5.11","language":"en","source_language":"en","source_url":"https://github.com/voila-dashboards/voila","tags":["jupyter","notebook","dashboard","web-app","ipywidgets"],"install":[{"cmd":"pip install voila","lang":"bash","label":"Install Voila"},{"cmd":"conda install -c conda-forge voila","lang":"bash","label":"Install with Conda"}],"dependencies":[{"reason":"Voila runs as a Jupyter server application.","package":"jupyter_server"},{"reason":"Essential for interactive dashboards and widely used in notebooks rendered by Voila.","package":"ipywidgets"},{"reason":"Required for building and serving some JupyterLab extensions and custom frontend assets, especially for complex templates or widget ecosystems. Not a direct Python dependency but often needed for a full setup.","package":"nodejs","optional":true}],"imports":[{"note":"While Voila is primarily used via its command-line interface, `voila.app.Voila` is the main application class for programmatic embedding or testing.","symbol":"Voila","correct":"from voila.app import Voila"}],"quickstart":{"code":"# Save this as `my_dashboard.ipynb`\nimport ipywidgets as widgets\nfrom IPython.display import display\n\nslider = widgets.IntSlider(min=0, max=100, step=1, description='Value:')\noutput = widgets.Output()\n\ndef on_value_change(change):\n    with output:\n        output.clear_output()\n        print(f\"Slider value is: {change['new']}\")\n\nslider.observe(on_value_change, names='value')\n\ndisplay(slider, output)\n\n# Run from your terminal:\n# voila my_dashboard.ipynb","lang":"python","description":"Create a Jupyter notebook with interactive widgets and save it. Then, run Voila from the command line to serve it as a standalone web application. Access it in your web browser, typically at `http://localhost:8866`."},"warnings":[{"fix":"Upgrade to Voila 0.4.5+ or 0.5.8+ for improved ipywidgets 7/8 compatibility. Ensure your `ipywidgets` package is also up-to-date (`pip install -U ipywidgets`).","message":"Earlier versions of Voila (e.g., prior to 0.4.5 and 0.5.8) had reduced compatibility with `ipywidgets 7`, potentially causing existing notebooks to fail if they relied on older widget versions. Newer releases re-added support.","severity":"breaking","affected_versions":"<0.4.5, <0.5.8 (intermittent)"},{"fix":"If encountering issues with frontend rendering or custom templates, install Node.js and npm (`conda install -c conda-forge nodejs` or via system package manager) and potentially build extensions (`jupyter labextension install ...`).","message":"Some Voila templates or custom JupyterLab extensions (e.g., for specific widget packages) may require `nodejs` and `npm` to be installed on your system for building frontend assets. These are not direct Python dependencies.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Upgrade Voila to at least version 0.3.8, 0.4.4, or 0.5.6 (or newer) to mitigate this vulnerability.","message":"Multiple older versions contained a security vulnerability (CVE-2024-30265) related to arbitrary file read. Running outdated versions in production environments is risky.","severity":"gotcha","affected_versions":"<0.3.8, <0.4.4, <0.5.6"},{"fix":"Upgrade to the latest 0.5.x release to ensure correct merging and application of server extension configurations.","message":"Versions of Voila in the 0.5.x series (e.g., 0.5.9, 0.5.10, 0.5.11) included fixes for server extension configuration handling. Users with complex custom `voila_config.py` files might experience unexpected behavior with older 0.5.x releases.","severity":"gotcha","affected_versions":"0.5.0 - 0.5.8"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Ensure Voila is installed in your active environment (`pip install voila` or `conda install -c conda-forge voila`). Verify that the environment's `bin` (Linux/macOS) or `Scripts` (Windows) directory is correctly added to your system's PATH.","cause":"Voila is not installed, or its executable entry point is not in the system's PATH, or the active Python environment does not have Voila installed.","error":"Jupyter command 'voila' not found."},{"fix":"Install the package using your package manager: `pip install voila` or `conda install -c conda-forge voila`.","cause":"The `voila` Python package is not installed in the currently active Python environment.","error":"ModuleNotFoundError: No module named 'voila'"},{"fix":"Ensure `ipywidgets` is up-to-date (`pip install -U ipywidgets`). For custom widgets, verify that necessary JupyterLab extensions are installed and built (`jupyter labextension install <package>`). Sometimes, a browser cache clear is also helpful.","cause":"This typically indicates a mismatch between the `ipywidgets` version in your notebook and the frontend assets available to Voila, or a missing JupyterLab extension for a custom widget.","error":"Error displaying widget: model not found"},{"fix":"Consult the official Voila documentation or the `--help` output of your specific Voila version (`voila --help`) to identify valid command-line arguments and remove or update any deprecated options.","cause":"This error occurs when using a command-line argument or configuration option that has been removed or renamed in a newer version of Voila (e.g., `--enable_nbextensions` was removed in Voila 0.5.x).","error":"voila: error: argument --enable_nbextensions: invalid choice: 'True'"}]}