Panel
Data & MLPanel: The powerful data exploration & web app framework for Python
Release History
View all versions →v1.9.4v1.9.4rc3v1.9.4rc2v1.9.4rc1v1.9.37 fixesPanel 1.9.3 is a patch release focused on resolving several bugs across ReactiveESM components, OAuth handling, and development mode document cleanup.
v1.9.3a2v1.9.3a1v1.9.3a0v1.9.23 fixesThis patch release (1.9.2) addresses a regression in ReactComponent and fixes a memory leak related to component tracking in non-server contexts.
v1.9.14 fixesThis patch release addresses regressions introduced in 1.9.0, primarily fixing Button styling and resolving issues related to ESM and React component lifecycle handling.
v1.9.0Breaking10 fixes7 featuresPanel 1.9.0 introduces full typing compatibility with Param 2.4.0 and adds support for wildcard routing in `pn.serve`. This release also modernizes the widget API by canonicalizing the label parameter and renaming button style attributes.
v1.9.0rc0v1.8.11a0v1.8.1013 fixes3 featuresPanel 1.8.10 delivers stability improvements across widgets, plotting integrations, and server error reporting, alongside addressing several UI and serialization bugs. This release also introduces configuration options for the Panel CDN root.
v1.8.10rc0v1.8.91 fixThis release includes a bug fix related to ESM model serialization and ensures compatibility with VTK version 9.6.0.
v1.8.810 fixes4 featuresPanel 1.8.8 delivers stability improvements, fixes for Pyodide and ESM loading, and introduces an experimental performance enhancement for batch updates via `hold(freeze=True)`. The release also includes numerous UI and event handling bug fixes.
v1.8.72 fixesThis patch release reverts two disruptive changes from version 1.8.6 and resolves issues related to Tabulator resizing and patched Plotly versions.
v1.8.612 fixes3 featuresThis patch release addresses several bugs related to ESM and React components, improves UI robustness, and updates key dependencies like Bokeh and Preact.
v1.8.56 fixesThis release adds several stability and rendering fixes for notebooks, Tabulator, ESM components, Vega datasets, and Markdown, along with new documentation for FastAPI integration and app conversion guides.
v1.8.410 fixes4 featuresPanel 1.8.4 introduces async support for Tabulator, new configuration toggles, enhanced validation, and numerous bug fixes improving notebook integration and event ordering.
v1.8.38 fixes7 featuresThis patch release adds Python 3.14 support, several UI enhancements, a new export capability for Vega panes, and numerous bug fixes and documentation updates.
v1.8.27 fixes4 featuresThis patch release adds several UI enhancements, improves static serving and pyodide handling, and fixes regressions, while also providing new deployment guides for Anaconda Notebooks and PythonAnywhere.
v1.8.12 fixes1 featureThis release adds a configuration option to disable the container popup and includes bug fixes for Tabulator column width handling and croniter default timezone, plus a documentation typo correction.
v1.8.0Breaking15 fixes4 featuresThis release adds JSCode support for inline JavaScript, WebSocket reconnection, AVIF images, and resource bundling for WASM, while dropping Bokeh 3.5/3.6 support and updating many component versions.
Common Errors
TypeError3 reportsTypeError in Panel often stems from passing an object to a Panel pane that isn't directly displayable or compatible (e.g., a Matplotlib figure without a suitable display method). Fix this by ensuring the object is either a native Panel component, a supported type like a Bokeh plot, or by using `pn.panel(object)` to automatically convert it to a displayable Panel object, potentially specifying custom rendering options if needed. Alternatively, explore explicitly converting the object to a compatible format (e.g., matplotlib to a static image).
AttributeError3 reportsAttributeError typically occurs when you try to access an attribute or method that does not exist on an object, often due to incorrect naming, a typo, or attempting to use a feature not supported by the current version or configuration. To fix it, carefully review the attribute or method name for typos, ensure it's correctly spelled and capitalized, and verify that the object you're working with actually supports that attribute or method according to its documentation. If you're encountering this with a specific library like Panel, check the library's release notes or issue tracker for known compatibility issues or required updates.
UnboundLocalError2 reportsThe UnboundLocalError occurs when a variable is referenced before it has been assigned a value within its scope, often inside a function. Ensure the variable is assigned a value before being used, especially within conditional statements or loops, by initializing it to a default value like None or an empty list before the conditional block containing its use.
RuntimeError2 reportsThe "RuntimeError: no running event loop" in Panel often arises when asynchronous operations (like callbacks) are initiated outside of a running `asyncio` event loop, particularly after reloading or during multi-threaded execution. Ensure all Panel apps and their asynchronous callbacks are initialized and executed within the main thread's event loop by using `panel.serve` or `panel.show` correctly, and avoid creating new loops within threads or reload contexts. If running asynchronous code outside the main thread, explicitly set the default event loop using `asyncio.set_event_loop` within that thread.
ModuleNotFoundError2 reportsThe "ModuleNotFoundError" in Panel usually arises from missing dependencies or incorrect import paths, especially when packaging for environments like Pyodide. Resolve this by ensuring all necessary packages are listed in your environment file (e.g., requirements.txt) and that import statements correctly reflect the module's location within the installed package. For environments like Pyodide, verify package availability and consider using Panel's specific packaging tools for compatible deployment.
SyntaxError1 reportSyntaxError in panel often arises from code incompatible with Python's syntax, frequently due to IPython magic commands (e.g., `%run`) used outside of IPython environments. To fix this, either remove the non-Python syntax or ensure the code is executed within an environment that supports it, such as a Jupyter Notebook or IPython interactive session. If running a script, rewrite the code to avoid IPython specific commands.
Related Data & ML Packages
An Open Source Machine Learning Framework for Everyone
🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.
Tensors and Dynamic neural networks in Python with strong GPU acceleration
scikit-learn: machine learning in Python
Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more
Streamlit — A faster way to build and share data apps.
Subscribe to Updates
Get notified when new versions are released