Bokeh 2.3.3 -
The 2.3 series brought a more robust layout system using CSS grid. Version 2.3.3 further smoothed out edge cases where gridplot or row/col layouts would misalign during browser resizing.
In a world chasing the newest features, Bokeh 2.3.3 stands as a testament to the value of stability. It offers a mature, bug-free interactive visualization engine that has been battle-tested in thousands of production dashboards, financial applications, and scientific research tools. For anyone maintaining systems that rely on the Bokeh 2.x API, this version is the definitive upgrade—the final polished gem before the paradigm shift of Bokeh 3.0.
Whether you're a data engineer preserving a legacy dashboard, a professor teaching a course with fixed dependencies, or a developer who values "if it ain't broke, don't fix it," Bokeh 2.3.3 delivers. Install it, explore its capabilities, and appreciate the craftsmanship of a library that turned complex web visualizations into elegant Python code.
Have you used Bokeh 2.3.3 in production? Share your experience or migration story in the comments below.
Bokeh 2.3.3 is a specific maintenance release of the Bokeh Python library, launched in July 2021 to resolve critical layout and extension-related bugs. As part of the broader 2.3.x release cycle, it represents a stable point for developers who require high-performance, interactive data visualizations in modern web browsers without writing JavaScript. Key Bug Fixes in Version 2.3.3
As a patch release, Bokeh 2.3.3 focused on stability. Significant fixes included:
Layout Consistency: Resolved an issue where Column layouts ignored the scrollable CSS class and fixed a layout regression specifically affecting Panel dashboards. bokeh 2.3.3
Visual Refinements: Fixed bad formatting of y-axis labels when using themes and corrected a bug where a plot's height could not go below 600px.
Widget Behavior: Addressed a bug in the MultiChoice widget where the dropdown menu would remain hidden and ensured the active tab is correctly in view upon rendering.
CDN Integration: Updated extensions to fetch exact versions from the CDN to prevent version mismatch issues. Major Features from the 2.3.x Series
While 2.3.3 provided stability, it inherited powerful features introduced in the 2.3.0 minor release:
Multi-line Labels: Users can split long axis and tick labels across multiple lines for better readability in tight layouts.
Improved Log Axes: Rendered exponents as proper superscripts by default, enhancing the scientific quality of plots. Have you used Bokeh 2
Hatch Patterns: Added support for hatch patterns (textures) across all fillable glyphs and annotations.
New Marker Types: Introduced "star" markers and vectorized support for arrowheads and line-dash patterns.
DataModel Class: A new base class allowed developers to define "properties-only" Bokeh subclasses more easily, simplifying the creation of custom models. Core Capabilities of Bokeh
Regardless of the specific patch version, Bokeh continues to be a staple in the PyData ecosystem for several reasons:
Interactivity: Built-in tools for zooming, panning, and hovering allow users to explore data dynamically.
Flexibility: It offers three layers of abstraction: the low-level bokeh.models for full control, the mid-level bokeh.plotting for standard glyphs, and high-level integration with tools like HoloViews. Run this script:
python stock_viewer
Scalability: Through the Bokeh server, it supports real-time streaming data and server-side downsampling for massive datasets.
Integration: Plots can be seamlessly embedded into Flask or Django web applications, as well as Jupyter Notebooks. Migration and Legacy Support
Bokeh at a Glance * Flexible. Bokeh makes it simple to create common plots, but also can handle custom or specialized use-cases. * Bokeh plots Building Charts in Bokeh - Pluralsight
Released in July 2021, Bokeh 2.3.3 is a patch release focusing on fixing layout, extension, and widget-related bugs within the 2.x legacy branch. The update resolves issues with CSS scrolling, y-axis label formatting, and specifically addresses component rendering for Dropdown menus and plot constraints. For the full release notes, visit Bokeh 2.3.3 Documentation Bokeh documentation Releases — Bokeh 2.3.3 Documentation
This occurs when you reuse the same figure or ColumnDataSource in two different layouts. Fix: Create a new source for each independent document, or use bokeh.io.curdoc() to manage ownership properly (for server apps).
output_file("bokeh233_stock_demo.html") show(layout)
Run this script:
python stock_viewer.py
You will see a fully interactive HTML document open in your browser. Notice how the hover tool works reliably, the table updates smoothly, and the WebGL backend (if you had thousands more points) would handle it gracefully—all thanks to the refinements of Bokeh 2.3.3.