NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3485 most downloaded on PyPI
The powerful data exploration & web app framework for Python.
Last release 13 days ago
21 Sep 2026
Release timing varies
gaps range from 9 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
5 versions withdrawn
withdrawn after publishing
8 years old
478 releases · first in 2018
Nothing published for this version
This minor release packs many exciting new features, specifically a new panel.chat subpackage containing components with powerful capabilities for int
This minor release packs many exciting new features, specifically a new panel.chat subpackage containing components with powerful capabilities for interacting with LLM whether local or remote. Secondly this release adds compatibility with Param 2.0 bringing powerful new features including the ability to leverage reactive expressions using the rx wrapper and deeper support for reactively linking parameters, expressions and bound functions on Panel components. Lastly we overhauled the OAuth implementations adding support for code authorization and password based OAuth grant workflows and automatically refreshing the access_token when it expires. Beyond that this release includes many enhancements and numerous bug fixes. Special thanks to our first time contributors @aktech and @monodera and returning contributors @cdeil, @pierrotsmnrd and @TheoMartin. We also want to highlight the contribution of our new core contributor @ahuang11 for developing the chat components and recognize @MarcSkovMadsen and @philippjfr for their efforts on testing and improving these new components. Finally we thank the entire core team @Hoxbro, @MarcSkovMadsen, @maximlt, @ahuang11 and @philippjfr for their continued efforts.
pn.rx (#5138, #5582)ChatMessage, ChatFeed and ChatInterface components (#5333)access_token (#5627)ColorMap widget (#5647)HoloViews pane if provided (#5535)on_session_destroyed callback (#5585)auto_grow on TextAreaInput (#5592)Path object in FileDownload (#5607)EditableFloatSlider and EditableIntSlider (#5631)pn.io.cache (#5649)param.Bytes to FileInput widget (#5665)Column invisible scroll_button taking space (#5532)BrowserInfo (#5588)TextEditor caused by migration to shadow DOM (#5609)location state from request (#5581)Select widget label offset in Material Design (#5639)DataFrame with a custom index (#5645)FloatPanel status correctly on initialization (#5651)pd.Timestamp values (#5650)notifications and browser_info are loaded when HoloViews is loaded (#5657)_stylesheets (#5666)NaT values (#5675)One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This micro-release primarily fixes some critical regressions that were introduced in the 1.2.2 release, along with some other minor bug fixes. Many th
This micro-release primarily fixes some critical regressions that were introduced in the 1.2.2 release, along with some other minor bug fixes. Many thanks for our users for reporting these issues so quickly and @monodera, @ndmlny-qs, @ahuang11, @mattpap, @Hoxbro and @philippjfr for their contributions to the release.
/logout endpoint now serves configurable template (#5514)HTML panes (#5516)--autoreload (#5490)panel convert requirements from requirements.txt (#5509)ReactiveHTML (#5512)TextEditor correctly detects selections and renders HTML (#5511)Markdown rendering with the MyST parser (#5497)--prefix is set (#5492)DateRangeSlider.step documentation (#5510)Nothing published for this version
This micro-release is likely the last in the 1.2.x series with a large number of bug fixes and a few enhancements to existing components. The enhancem
This micro-release is likely the last in the 1.2.x series with a large number of bug fixes and a few enhancements to existing components. The enhancements include the ability to control the scroll position on a Column, improvements for authentication and authorization, the ability to add click event handlers to Perspective and a few other items. Bug fixes also center fixes for authentication, some improvements when rendering Tabulator avoiding various race conditions in its rendering pipeline, and fixes for Perspective, Echarts, DeckGL and a few other components. We are very grateful for a large number of community contributions to this release and welcome and congratulate new contributors @s22chan, @RaulPL, @dogbunny, @thomasjpfan, @SultanOrazbayev and @pierrotsmnrd. Many thanks also to returning contributors @TBym, @Lnk2past, @ndmlny-qs, @owenlamont and our core developer team @MarcSkovMadsen, @ahuang11, @Hoxbro, @maximlt, and @philippjfr.
Column (#5245, #5365, #5369, #5403)Tabulator.title_formatters parameter (#5421)Perspective click events (#5430)pn.io.hold and pn.io.immediate_dispatch context managers to control events (#5444)basic_login_template argument to panel server (#5454)BasicAuth forwards to original URL after login (#5357)threading.Thread to panel.io.server.StoppableThread (#5396)Tabulator re-renders correctly (#5410, #5412)DataModel are correctly scheduled on the event loop (#5360)Markdown output and add renderer_options (#5376)Accordion title without updating content (#5413)TextLayer objects in DeckGL (#5427)Perspective pane (#5429)FileDownload button can be clicked anywhere (#5431)ReactiveHTML children are rendered just like other models (#5434)Perspective properties correctly to avoid causing unfocus on keypresses (#5432)FloatPanel correctly exposes its children to allow linking (#5433)Tabulator options if DataFrame indexes are unchanged (#5436)ECharts (#5435)Accordion CSS to remove gaps and avoid border overlap (#5460)Plotly pane to avoid corruption (#5464)TextEditor CSS loads (#5465)FloatPanel reflects closed status (#5466)Perspective pane (#5467)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This micro-release focuses on a small number of enhancements and rendering related bug fixes. Specifically it adds support for notifying users when th
This micro-release focuses on a small number of enhancements and rendering related bug fixes. Specifically it adds support for notifying users when the page is ready and when the Websocket disconnects using corresponding config options and upgrades the Vizzu version, thereby adding support for tooltips and enabling animations when the data is updated. The bug fixes are primarily focused on ensuring components such as GridStack and Tabulator render correctly and do not unnecessarily re-render or reload stylesheets. Many thanks and welcome to @owenlamont, @sciemon, @DGLaurits, @Ciemarr and @Kislovskiy for their first contributions to Panel and the maintainers @MarcSkovMadsen, @Hoxbro and @philippjfr for contributing to this release.
config.disconnect_notification and config.ready_notification (#5244)Vizzu tooltip support and allow animations when data is updated (#5258)Card and Select components (#5280)GridStack children are sized correctly after render (#5242)Tabulator expanded row rendering (#5253)PDF pane is rendered as base64 string (#5264)HTML based components (#5275)Design does not trigger unnecessary updates to stylesheets (#5278)Tabulator row_contents as real children ensuring layout behaves correctly (#5292)Video min_height and max_height (#5296)TextEditor invisible until CSS is loaded (#5297)disabled parameter on editable sliders (#5319Nothing published for this version
Nothing published for this version
This release primarily aims at providing compatibility with Bokeh 3.2 and the upcoming Param 2.0 release. Additionally it includes a number of improve
This release primarily aims at providing compatibility with Bokeh 3.2 and the upcoming Param 2.0 release. Additionally it includes a number of improvements including the ability to generate multiple outputs from a generator using the new 'append' mode and updates and fixes for Tabulator. We are also excited about the new Streamlit migration guide and a number of bug fixes. Many thanks to @sdc50, @xiaoyang-sde and the core team including @ahuang11, @MarcSkovMadsen, @Hoxbro, @maximlt and @philippjfr for contributing to this release.
append mode for reactive generator output (#5129)Tabulator 5.5 (#5182)LoadingSpinner label (#5194)editable parameter to Perspective (#5211)theme_classes on Tabulator (#5216)BaseTemplate (#5228)Vega (and altair) selections (#5164)ChatBox bubble width (#5172)Tabulator.visible handling (#5182)Tabulator.page (#5187)None to null (#5191)_repr_<img>_ to ensure _repr_html_ takes precedence (#5217)Tabulator.hidden_columns inplace (#5218)Plotly nested properties such as selections (#5227)Nothing published for this version
Nothing published for this version
The first micro-release in the 1.1.x series brings a large number of bug fixes and some minor enhancements. The most important fixes include compatibi
The first micro-release in the 1.1.x series brings a large number of bug fixes and some minor enhancements. The most important fixes include compatibility with JupyterLab 4 and improved support for updating ipywidgets. This release saw a lot of contributors and we welcome @TBym, @Glatzli, @theyashi, and @enismaxim1 to the Panel developer community and thank our existing contributors and maintainers @ahuang11, @Hoxbro, @sophiamyang, @maximlt, @MarcSkovMadsen, and @philippjfr for their continued contributions.
per_session cache (#5117)ChatBox including methods to update rows and hide names (#5118, #5118)Progress indicator sizing_mode (#5051)ChatBox issues (#5065, #5101, #5101)throttled or onkeyup (#5078)enabled_dates on DatetimePicker (#5089)defer_load handling (#5107)Tabulator (#5110)in filter with single value on Tabulator (#5125)ReactiveHTML shadow DOM lookup fails (#5126)Vega (and altair) selections (#5145)ColumnDataChangedEvent fixing Plotly plots not updating (#5147)Nothing published for this version
This is the first minor release in the 1.x series with a number of new features and small bug fixes. The main features we are excited about are the ne
This is the first minor release in the 1.x series with a number of new features and small bug fixes. The main features we are excited about are the new ChatBox widget added by @ahuang11 and support for reactive generators. Many thanks to @ahuang11, @philippjfr and @Hoxbro for contributing to this release and our amazing community for reporting issues.
ChatBox widget (#4702)TooltipIcon indicator (#4909)on_* handlers in constructor (#5026)Template sidebar state (#5033)HoloViews layout correctly (#5009)Plotly toolbar colors depending on template (#5012)Design style variables (#5015)Tabulator header filter styling (#5038)Nothing published for this version
Nothing published for this version
Another micro-release in the 1.0.x series addressing small issues reported by our engaged community. Many thanks to @ahuang11, @simzer, @alexmilowski
Another micro-release in the 1.0.x series addressing small issues reported by our engaged community. Many thanks to @ahuang11, @simzer, @alexmilowski and the core contributors @droumis, @Hoxbro and @philippjfr for contributing to this release.
IPyWidget model (#4939)Select widget (#4947)config parameters can be passed to Template constructor (#4948)icon on Toggle and Button widget (#4961)Video paneToggle button (#4969) (#4970)Card.header_color is correctly applied (#4971)param.List signatures to suppress warnings (#4973)VanillaTemplate (#4975)Plotly.selection_data (#4987)Nothing published for this version
Nothing published for this version
Nothing published for this version
Another micro-release in the 1.0.x series with a number of smaller bug fixes. Most importantly this resolves issues with loading indicators and with a
Another micro-release in the 1.0.x series with a number of smaller bug fixes. Most importantly this resolves issues with loading indicators and with apps converted to the pyodide-worker target. Many thanks to @n3011, @Hoxbro and @philippjfr for contributing to this release.
_repr_jpeg_ methods correctly (#4904)-1 in Tabs.active and allow recovering from closed tabs (#4920)HoloViews layout is correctly initialized when center is set (#4921)Param pane name is updated when object changes (#4928)FileDownload with Button (#4929)Pane (#4934)Param pane (#4934)Nothing published for this version
A micro-release in the 1.0.x series with a number of bug fixes and documentation tweaks. Many thanks to @jbednar and @philippjfr for contributing to t
A micro-release in the 1.0.x series with a number of bug fixes and documentation tweaks. Many thanks to @jbednar and @philippjfr for contributing to this release.
Design stylesheets are not replaced when updating component stylesheets (#4883)FloatPanel can be rendered in classic notebooks (#4892)Card layout are rendered (#4899)Nothing published for this version
A micro-release fixing some small issues discovered in Panel 1.0. Thank you to @droumis, @Hoxbro and @philippjfr for contributing fixes.
A micro-release fixing some small issues discovered in Panel 1.0. Thank you to @droumis, @Hoxbro and @philippjfr for contributing fixes.
Reactive objects wrapped in reactive are re-rendered correctly (#4868)Design component inset label styling (#4877)SlidesTemplate slides changes trigger updates in the pn.state.location.hash (#4878)Deprecate IDOM pane ([#4293](https://github.com/holoviz/panel/pull/4293), #4323)
The Panel 1.0 release is finally here and it brings a huge number of improvements. The largest improvements in this release come from an upgrade from Bokeh 2.x to Bokeh 3.x. Bokeh overhauled its internal layout engine and stylesheet handling, making applications significantly more performant and customizable going forward.
This release marks a huge step forward in the usability of Panel but is also just a first step in leveraging many of the new capabilities that the updated layout engine and design system affords. In the coming months we will continue to improve and polish the UI and UX and make it easier for you to extend Panel as needed.
For now we want to thank the many people that contributed to this release either by contributing directly or by testing and providing feedback. Many thanks to the core contributors @MarcSkovMadsen, @Hoxbro, @maximlt, @jbednar, @droumis and @philippjfr and the outside contributors @ahuang11, @cdeil, @MridulS, @AndrewMaged814, @midnighter, @wendrul and @lukfal94.
The three main features we want to highlight as part of this release are:
Some of the changes related to the new layout engine and design system will require small updates to your existing applications. To make this transition as smooth as possible we have provided an upgrade/migration guide.
This release also adds a number of exciting new components you can leverage in your applications:
Swipe layout (#3007)Switch widget ([#4130](https://github.com/holoviz/panel/pull/4130))Vizzu pane (#4226, #4739)BrowserInfo model to expose browser window and navigator APIs (#4533)BasicAuth provider for quick password based auth (#4684)FloatPanel layout (#4707, #4711)SlidesTemplate based on reveal.js to create interactive presentations (#4798)There are also a number of major enhancements in this release that we are very excited about:
.ipynb and .md based apps can be used as --index (#4432)format and encoding for Matplotlib image output and implemented responsive Image sizing (#4514)Button (#4797)Image pane that auto-detects the image filetype (#4551)The last major change we want to highlight is a complete overhaul of the documentation, moving from long and difficult-to-navigate user guides to distinct easily applied how-to guides along with separate, longer explanation sections. We also put in significant effort to ensure that most of our documentation can be run interactively in Pyodide or JupyterLite.
IDOM pane ([#4293](https://github.com/holoviz/panel/pull/4293), #4323)Viewable.app ([#4293](https://github.com/holoviz/panel/pull/4293))Viewable.pprint (#4347)RGGPlotAce to CodeEditor (#4627)Tabulator.frozen_rows now respects the order of rows in the data instead of the order in which the frozen_rows were defined ([#4482](https://github.com/holoviz/panel/pull/4482))margin defaults consistent across widgets and panes (#4528).embed method now returns a Mimebundle object for rendering (#4791)panel examples CLI command and pyct dependency (#4691)pn.state.served to simplify determining whether script is executed as an application or in an interactive session (#4252)pn.config.loading_indicator to determine whether to show loading indicator by default (#4259)display compatibility in pyodide builds (#4270)panel convert respects pn.config (#4359)Tabulator (#4343)CrossSelector filters apply on each keystroke (#4339)Vega.selections object unless selections changed (#4497)Plotly.link_figure parameter (#4333)JPG pane (#4532)counter a parameter (#4134)hash_funcs are applied recursively in cache (#4334)FIFO policy bug (#4789)FileDownload model (#4328)DeckGL tooltip handling (#4628)Perspective (#4366)memray profiler temporary file is flushed (#4666)Plotly undefined value errors for eventdata (#4355)Tabulator formatter or editor updates model (#4296, #4781)Tabulator internal _index_mapping is updated on stream (#4292)Tabulator header filters aren't treated as regex (#4423)Tabulator styles are re-applied when local pagination changes (#4795)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →