Changelog History
Page 1
-
v1.9.3 Changes
June 01, 2026🚀 Panel 1.9.3 is a patch release addressing several bug fixes for ReactiveESM components, OAuth handling, and dev mode document cleanup. Many thanks to @Coderambling, @hoxbro and @philippjfr for contributing to this release.
🛠 🐛 Bug Fixes
- Ensure property changes do not boomerang on
ReactiveESM(#8617) - 🛠 Fix regression when cleaning up documents in dev mode (#8616)
- Ensure OAuth expiry value is cast to number (#8611)
- Ensure ESM components only check rendered children for readiness (#8609)
- 🛠 Fix
holdcontext manager in threaded mode (#8619) - Ensure pyodide
pyrenderfunction does not useglobals()as context potentially breaking itself during execution (#8620) - Clean up dangling write tasks on session destroy (#8621)
📚 📚 Documentation
- Ensure property changes do not boomerang on
-
v1.9.2 Changes
May 27, 2026🔖 Version 1.9.2
🚀 A patch release addressing a small regression on
ReactComponentcausing the Document never to register as idle. Also fixes a memory leak related to tracking components in non-server contexts. Thank you to @philippjfr for his contributions to this release.🛠 🐛 Bug Fixes
-
v1.9.1 Changes
May 23, 2026🚀 A quick patch release addressing regressions in 1.9.0, fixing
Buttoncolor styling and resolves several issues with ESM and React component lifecycle handling. Many thanks to @philippjfr and @hoxbro for their contributions to this release.🛠 🐛 Bug Fixes
- 🛠 Fix
Buttoncolor not being respected (#8600) - 🛠 Fix ESM component
readyandhas_finishedcompliance (#8602) - 👌 Improve
ReactComponentready promise handling (#8603) - Avoid hacky
IconMixinrename override (#8604)
📚 📚 Documentation
- ⚡️ Update gallery environment (#8601)
- 🛠 Fix
-
v1.9.0 Changes
May 21, 2026Panel 1.9.0 delivers full typing compatibility with Param 2.4.0, finally ensuring that all parameters are fully typed. Additionally this release makes it possible to provide wildcard routes to
pn.servemaking it possible to support dynamic routing. It also includes a significant modernization of the widget API, introducingWidget.labelas the canonical display label parameter and renamingbutton_type/button_styletocolor/variantfor better alignment withpanel-material-ui, which will be integrated within Panel in upcoming releases. The release also includes a range ofTabulatorimprovements, chat enhancements, security updates, and numerous bug fixes. Lastly, this release drops support for Bokeh 3.7.🚀 Many thanks to the contributors to this release including: @philippjfr, @hoxbro, @ghostiee-11, @ahuang11, @AtharvaJaiswal005, @SKlerk, @TheoMathurin, @chucklay, @zhangdomi, @mvanhorn, @SuMayaBee, @forman, and @omyaaa1.
🚀 Features
✨ Enhancements
- Introduce
Widget.labelparameter and treatnameas an alias (#8328) - Rename
button_type->colorandbutton_style->variant(#8577) - 🔧 Make
Feedtype configurable onChatFeed(#8582) - ➕ Add
selectionandvalue_inputtoTextEditorwidget (#8560) - ➕ Add dark theme support for
JSONEditorwidget (#8444)
🛠 🐛 Bug Fixes
- 🛠 Fix
widget.disabledgetting stuck after rapid toggling (#8507) - 🛠 Fix
Trendindicator not working withdate_rangex-axis (#8509) - 🛠 Fix
ReactComponentinitialization issues (#8552) - 🛠 Fix
DataFramecomparison inTabulator.from_param(#8539) - 🛠 Fix
Tabulatorscroll reset when filtering on patch (#8531) - 💅 Prevent
Tabulatorfrom overwriting scroll position on style update (#8420) - 🛠 Fix
Gauge/EChartscrash when the ECharts library is not yet loaded (#8515) - 👉 Make OAuth token refreshes more robust (#8518)
- Sanitize JavaScript string replacement tokens in Python code (#8566)
- 🛠 Fix string formatting in
NotImplementedErrormessage (#8536)
💻 🎨 UI Improvements
- ⚡️ Update Tabulator to version 6.4 (#8568)
- ⚡️ Optimize
Tabulatorresize events (#8528) - 👌 Improve Pyodide badge appearance (#8519)
- 🐎 General rendering and performance optimizations (#8547)
🗄 ⚠️ Deprecations
Widget.namewas renamed toWidget.labelButton.button_typewas renamed toButton.color- 💅
Button.button_stylewas renamed toButton.variant - ⬇️ Dropped support for Bokeh 3.7
📚 📚 Documentation
- ⚡️ Update reference gallery to use
panel-material-ui(#8596) - ➕ Add Outerbounds deployment guide (#8587)
- ➕ Add Functions vs Classes explanation (#8581)
- ➕ Add Panel extensions documentation page (#8529)
- 🔀 Document
pn.state.sync_busyin the busy indicator how-to guide (#8564)
🔒 🔒 Security
- Introduce
-
v1.8.10 Changes
March 16, 2026Panel 1.8.10 focuses on stability improvements across widgets, plotting integrations, and server behavior. It includes fixes for Tabulator serialization, Param widget updates, Plotly and Vega regressions, and several UI issues. This release also improves compatibility with Bokeh 3.9 , enhances error reporting when serving apps, and addresses a security issue in
panel.js.🚀 Many thanks to the contributors to this release including:
@philippjfr, @SuMayaBee, @AtharvaJaiswal005, @hoxbro, @ghostiee-11, and @tmoulignier.✨ Enhancements
- 👌 Improve Python error messages displayed when serving apps (#8478)
- 👌 Improve
state.busylogic to avoid mismatches in busy state tracking (#8498) - Allow configuring the Panel CDN with the PANEL_CDN_ROOT environment variable or
pn.config.cdn_root(#8512)
🛠 🐛 Bug Fixes
- Prevent spacebar in
Cardheader inputs from toggling collapse (#8442) - 🛠 Fix
DateRangeSliderincorrectly modifying both values with timezone-aware timestamps (#8455) - Preserve slider bar color when
Accordionpanels are collapsed or expanded (#8460) - 🛠 Fix datetime axis type mismatch in
link_axesafter scroll and plot update (#8468) - 🛠 Fix JSON serialization errors in
Tabulatorwhen using mixedNaTdatetime columns (#8491) - 🛠 Fix Param widget values not updating when changed inside their own callback (#8492)
- 🛠 Fix missing validation in
_imgshapefor image panes (#8485) - 🛠 Fix Vega pane not updating when using inline data (#8495)
- 🛠 Fix Plotly regressions introduced in earlier 1.8 releases (#8471, #8476)
- Ensure all
ReactiveESMchildren render correctly (#8473) - Ensure
CodeEditorannotations are not overridden (#8505) - 🛠 Fix Modal objects update rendering inline instead of in dialog (#8508)
- Prevent ValueError when
EditableFloatSliderinput is cleared (#8511)
🔒 🔒 Security
- ➕ Address XSS and prototype overwrite issues in
panel.js(#8501)
⚡️ 📦 Compatibility & Dependency Updates
- Add compatibility with Bokeh 3.9 (#8475)
📚 📚 Documentation
- Recommend using bound function references instead of
watch=Truein thebind_componentguide (#8479)
🚧 🧪 Tests & Maintenance
-
v1.8.9 Changes
March 03, 2026Many thanks to @philippjfr and @hoxbro for their contributions.
🛠 🐛 Bug Fixes
- Only serialize ESM model definition if session is already loaded (#8462)
⚙️ Compatibility
- Compatibility with VTK 9.6.0 (#8464)
-
v1.8.8 Changes
March 02, 2026🐎 Panel 1.8.8 focuses on stability, event handling correctness, Pyodide improvements, ESM robustness, and multiple UI fixes. It also introduces a new experimental
freezeoption forhold()to improve performance during batch updates. Many thanks to @AR21SM (first contribution), @AtharvaJaiswal005 (first contribution), @danielalanbates (first contribution), @DevilSpecial (first contribution), @emunsing (first contribution), @nojaf (first contribution), @SimonHeybrock (first contribution), @SuMayaBee (first contribution), @ahuang11, @Coderambling, @philippjfr, and @hoxbro for their contributions.✨ Enhancements
- 👍 Allow list handling improvements (#8405)
- ➕ Add additional safety guards to custom models (#8410)
- 👍 Experimental
freezesupport inhold()
➕ Add afreeze=Trueoption to defer expensive Bokeh model graph recomputation until the hold context exits. This can significantly improve performance when batch-updating many models.
(Marked experimental.) (#8417) - ➕ Add missing
Callback.unwatch()method with tests (#8453) - Ensure ESM model definitions can be loaded dynamically (#8432)
- 👌 Improve
widget.link()to properly support HoloViews streams (#8450)
🛠 🐛 Bug Fixes
- Ensure
ReactComponentchildren render even when view initialization is slow (#8406) - 🛠 Fix CDN resolution issues in server mode for
loading.cssandes-module-shims(#8408) - 🛠 Fix
LaTeXrendering inMarkdownpane under Pyodide (#8424) - 🛠 Fix resource resolution when
pathnamechanges (#8433) - Ensure only param value events are deduplicated (#8436)
- 🛠 Fix OAuth user data being overwritten during updates (#8447)
- 🛠 Fix pipeline "Next" button disabled state when navigating back (#8443)
- 🛠 Fix
Videopane rejecting URLs with query parameters (#8440) - 🛠 Fix
NumberandStringindicators defaulting to black in dark theme (#8441) - Ensure embedding works correctly with
.from_param()(#8445)
⚡️ 📦 Dependency Updates
- ⬆️ Bump
pyodideto 0.29.3 (#8446)
📚 📚 Documentation
- ⚡️ Update ChatFeed OpenAI examples to SDK v1.0+ format (#8426)
- 📚 Documentation link updates (croniter README) (#8401)
🚧 🧪 Tests & Maintenance
-
v1.8.7 Changes
January 28, 2026🚀 This patch release reverts two changes that were made in 1.8.6 that turned out to be more disruptive than expected. Additionally it ensures that Tabulator automatically recalculates page sizes on resize and resolves issues with patched versions of Plotly.
🛠 🐛 Bug fixes
- Rerun Tabulator page size calculation on resize (#8395)
- 🛠 Fix issues with monkey-patched versions of Plotly (#8397)
⏪ ⏪ Reverted
-
v1.8.6 Changes
January 26, 2026🚀 This patch release includes several ESM and React-related fixes, UI behavior improvements, and enhanced robustness in form inputs and file handling. It also bumps key dependencies and improves support for custom deployments. Thanks to @philippjfr, @maximlt, @emunsing, @TheoMathurin, @dalthviz and @hoxbro for their contributions to this release!
✨ Enhancements
- ➕ Add
placeholderparameter onFloatInputandIntInput(#8360) - 👌 Support for file extensions in
FileDropper.accepted_filetypes(#8380) - Accept 2D arrays for stereo
Audio(#8381)
🛠 🐛 Bug Fixes
- Ensure collapsed
Cardstill renders components to avoid child render issues (#8274) ESM & React Components :
Ensure
PathLikeis accepted forrequirementsin pyodide conversion calls (#8366)Ensure
edit_readonlyresets both class- and instance-level parameters (#8371)🛠 Fix
guestendpoint validation at root path (#8370)Don't attempt to refresh access token if there is no active user session (#8384)
Ensure OAuth state for user is reset after failing to refresh access token (#8389)
Ensure
config.designvalue is respected byTemplate(#8388)👌 Improve robustness of
Tabulator.page_sizeinference (#8390)
🗄 ⚠️ Compatibility & Deprecations
- ➕ Added compatibility for pandas 3.0 (#8385)
📚 📚 Documentation
- ⚡️ Update
Plotlyexample to prevent flicker on load (#8362)
🚧 🧪 Maintenance
- ➕ Add
-
v1.8.5 Changes
December 30, 2025📚 This release includes several fixes and enhancements for notebook stability, Tabulator behavior, ESM/ReactiveComponent handling, and Markdown rendering. It also adds documentation updates for FastAPI integration, app conversion guides, and the Panel roadmap.
🛠 🐛 Bug Fixes
- 🛠 Fix error in notebook environments causing failure to run apps (#8334)
- ⏪ Prevent
Tabulatorfrom unintentionally revertingshow_index=Falseback toTrue(#8333) - Ensure transformed param values are inherited by ESM components (#8338)
- Ensure DataFrame objects can be referenced in Vega
datasets(#8330) - 👌 Improve handling of code highlighting in
Markdownpane (#8331) - 👍 Allow replacing child models inside
ReactiveESMcomponents (#8348)
📚 📚 Documentation
- Add how-to guides for converting Panel apps to desktop and mobile apps (#8349)
- Update FastAPI integration instructions (#8337)
- Publish updated Roadmap for Panel v2 and beyond (#8339)
🚧 🧪 Maintenance & Build
- Use trusted publisher setup for NPM release
- ⬆️ Bump Node.js version used in build