Panel: Building Python Data Apps Without Leaving Python
Panel: The powerful data exploration & web app framework for Python
At a glance
- What is it?
- Panel is a HoloViz library that turns widgets, plots and tables into browser-based tools from ordinary Python. It suits analysts who already live in Jupyter and need a shareable app, not a frontend rewrite.
- Who is it for?
- Panel fits Python users who already have plots and dataframes and want a browser interface without writing JavaScript, and it fits teams already inside the HoloViz stack. It is the wrong tool if you need a general-purpose web framework; the README presents it as a library for interactive dashboards and web apps.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- holoviz/panel5,825 ★ · +49
| Repository | 2026-09-23 | 2026-11-13 |
|---|---|---|
| holoviz/panel | 5.8k | 5.8k |
49 Stars in the last 51 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What Panel actually removes from the work
A data scientist with a working notebook usually faces the same wall: the notebook is not something a colleague can open without installing anything, and turning it into a web page means handing the work to someone who writes JavaScript. Panel targets that gap. The README describes it as an open-source library for interactive dashboards and web apps, in which widgets, plots and layouts are ordinary Python objects that you connect to your data and models, pass between functions and classes, and test like the rest of your code.
The intended audience is visible in the project metadata rather than the prose. The classifiers in pyproject.toml list Scientific/Engineering, Visualization, Information Analysis, Financial, Healthcare and Legal industries. That is a research and analysis audience, not a frontend engineering audience. If your output is a chart, a table or a parameter sweep that someone else needs to click through, Panel is aimed at you. If your output is a consumer web product with accounts and payments, it is not.
How the reactive layer and the callback layer coexist
Panel offers two programming styles over the same rendering pipeline, and the choice between them is the main design decision a user makes. The README puts it plainly: connect widgets to functions for a simple app, or use reusable components to organize a larger one, and both approaches work together.
The function style means you use pn.bind to connect a function to widgets, and when a user changes a control Panel runs only the code connected to it. The component style groups data, settings and behavior in a class built on Param, as in the README's Explorer and Dashboard example, so pages are built from smaller components that share data and stay in sync.
Underneath, Panel is built on Bokeh for the browser side. The dependency list in pyproject.toml pins bokeh to >=3.10.0,<3.11.0, alongside param >=2.1.0,<3.0 and pyviz_comms >=2.0.0. That pin is the single most consequential line in the file for anyone integrating Panel into an existing environment, because it means the Bokeh version is not negotiable within the same environment.
Installing Panel and running a first app
The README gives the install command directly: `pip install panel`, or `conda install -c conda-forge panel`, and links to a Getting started page on panel.holoviz.org.
pyproject.toml sets requires-python to >=3.12, so an older interpreter will refuse the install rather than fail later.
Once installed, the README's own description of the workflow is: create the controls, define the plot, then connect the controls and arrange the app. The README's gallery and reference sections are the place to copy a working starting point from; the repository ships examples under examples/apps, examples/gallery and examples/reference, which is where a first real app is best lifted from rather than written from scratch.
The README shows that the same code that renders in a notebook cell serves as an app with `panel serve app.py`; check the reference guides at panel.holoviz.org for further serving options before scripting a deployment step around it.
The Bokeh pin is the constraint you will meet first
Panel's dependency on a narrow Bokeh range is a real operational cost, not a footnote. Because pyproject.toml requires bokeh >=3.10.0,<3.11.0, any other library in the same environment that needs a different Bokeh minor version will conflict. Teams that already run Bokeh directly, or that depend on a tool built against an older Bokeh, should resolve that before installing Panel rather than after.
The second limitation is scope. Panel renders Python objects into a browser; it does not give you a general application server. The README says Panel apps run in production as multi-page internal platforms with authentication, editable tables, review workflows and chat assistants; check the documentation at panel.holoviz.org for how authentication is set up before relying on it.
Where Streamlit is the different choice
The obvious comparison is Streamlit, and the difference is architectural rather than cosmetic. Streamlit's model re-runs the whole script from the top on every interaction, which is simple to reason about and produces short programs. Panel instead keeps a live object model in the server process and updates parts of it, which is why the README says that when a user changes a control, Panel runs only the code connected to it, with no script that reruns on every click.
The practical consequence is that Panel asks more of you up front. You think about which object holds state and which function reacts to it. In exchange, you are not limited to a linear script, and the README says you can build pages from smaller components that share data and stay in sync.
Panel's other differentiator is the surrounding ecosystem. It is a member of HoloViz, and the README's own example builds its plot with HoloViews on top of the Bokeh dependency. If you already use HoloViews or hvPlot, Panel is the natural interface layer. If you use none of them, that advantage largely disappears.
Maintenance, releases and the licence you inherit
The repository is not archived, and the last push was on 2026-11-02. Recent releases are v1.10.0 on 2026-10-23, v1.9.4 on 2026-08-17 and v1.9.3 on 2026-06-01, roughly one release every two to three months over that period. The project is classified Development Status 5 - Production/Stable in pyproject.toml, which is the maintainers' own claim rather than an external assessment.
Upgrade cost is dominated by the Bokeh pin. Because each Panel release constrains Bokeh to a specific minor range, upgrading Panel usually means upgrading Bokeh in lockstep, and that can ripple into any other package sharing the environment. Budget for that as a scheduled change rather than a background patch.
The licence is BSD-3-Clause, stated as "BSD" in the pyproject.toml license field and as BSD-3-Clause in the repository. That is a permissive licence, which in practice means you can redistribute and modify it with the copyright notice retained. This is a description of the licence text, not legal advice; if you are embedding Panel in a distributed product, have your own counsel read LICENSE.txt.
Editorial conclusion
Panel fits Python users who already have plots and dataframes and want a browser interface without writing JavaScript, and it fits teams already inside the HoloViz stack. It is the wrong tool if you need a general-purpose web framework; the README presents it as a library for interactive dashboards and web apps. Before adopting it, check the bokeh pin in pyproject.toml against the rest of your environment, and confirm that the Python version you deploy on meets the requires-python floor of 3.12.
Frequently asked questions
Which Python versions does Panel support?
The pyproject.toml file sets requires-python to >=3.12 and lists classifiers for Python 3.12 through 3.15. An older interpreter will fail the install rather than run into trouble later.
How do I install Panel?
The README gives `pip install panel`, or `conda install -c conda-forge panel`, and links to a Getting started page on panel.holoviz.org.
Does Panel work with the plotting libraries I already use?
The README's example renders a HoloViews plot, and Panel depends on Bokeh; the Components reference at panel.holoviz.org lists what else is supported.
What licence is Panel released under?
The repository states BSD-3-Clause, and the pyproject.toml license field reads "BSD". The full text is in LICENSE.txt at the repository root.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/holoviz-panel)Star history chart for your README
[](https://hysenlabs.com/projects/holoviz-panel)Was this useful?