⭐️ Highlights
PDF Export
marimo now supports exporting notebooks as PDFs, both from the CLI and directly from the notebook interface. Whether you're generating documentation, creating reports, or sharing your work, you can now produce professional-looking PDF outputs with full support for your notebook's visualizations and markdown content.
Export from the command line using the new marimo export pdf command, with options to control output format and include CLI arguments for parameterized notebooks. The PDF exporter runs your notebook, captures all outputs, and uses nbconvert's WebPDF exporter (powered by Chromium) for high-quality rendering. When running marimo as a notebook, you'll find a new "Export as PDF" option in the export menu.
# Export a notebook to PDF
marimo export pdf notebook.py -o notebook.pdf
# Pass CLI arguments to your notebook
marimo export pdf notebook.py -o report.pdf -- --date 2026-01-29 --region west
# Watch for changes and auto-regenerate
marimo export pdf notebook.py -o notebook.pdf --watchRequirements: PDF export requires nbformat and nbconvert[webpdf] to be installed.
✨ Enhancements
- apply patch for extraStyleContent (#8043)
- add more linking to provider page (#8041)
- Lsp status icon and refresh (#8011)
- Additional print configuration, fix race conditions in export to pdf (#8038)
- Include mime-type precedence and visibilty rules (#8037)
- add snappy parameter to speed up auto-export (#8032)
- fix carousel styles (#8022)
- add progress bar for download pdf (#8016)
- add placeholder images for external iframes on export to pdf (#8003)
- Support srcdoc screenshots (#8001)
- link to provider and model page directly (#7979)
- Dont set --compile-bytecode for uv installation (#7985)
- Add Minimap/Graph toggle to dependencies panel in developer panel (#7976)
- Downgrade dataframe in non-interactive environments (#7940)
🐛 Bug fixes
- No diff churn when adding requires-python to a sandboxed file (#8054)
- Add back LSP snippets, upgrade codemirror-languageserver (#8052)
- LSP reconfiguration missing cell-id (#8050)
- remove manual handling of local iframes, only external iframes (#8051)
- Ensure overflow is captured in screenshots, and ensure smooth capture (#8046)
- fix timing issue to apply edits after data has come in (#8025)
- Lsp potential race conditions (#8012)
- Save content when creating a new file via filename input (#8009)
- Ensure logs are scrollable in developer panel (#8002)
- Refine rendering of equations in chat pane (#7961)
- Add plotly scattermap/scattermapbox point selection support (#7975)
- prevent layout shift for auto-export ipynb (#7965)
- Avoid ValueError when comparing embed defs with NumPy arrays (#7980)
- fix setting UI config to empty for AI custom & displayed models (#7991)
- Plotly shapes not clearing when removed from figure (#7974)
- Correct input channel direction for IPC sandbox mode (#7973)
- support ansi characters in pdf export (#7962)
📚 Documentation
- Small textual corrections in Claude Code doc (#7951)
🔬 Preview features
- turn on server_side_export_to_pdf flag (#8036)
📝 Other changes
- 0.19.7 (fc88208)
- Default to wedpdf since tex seems to have more issues (#8055)
- Proper fallback for mo.watch.file in wasm (#7982)
- toast an error if Export as png fails (#8049)
- Preserve
_marimo_row_idwhen clamping table columns (#8029) (#8035) (83f0901) - Update all biome dependencies to v2.3.12 (#8039)
- Update pymdownx admonition smoke tests with new syntax (#8028)
- Consolidate
watch_and_exportimplementations (#8000) - Export notebooks as PDFs via CLI (#7997)
- Windows path issue (#7978) (#7990) (6d3a6eb)
- Update all storybook dependencies to ^10.2.0 (#7987)
Contributors
Thanks to all our community and contributors who made this release possible: @akshayka, @app/renovate, @dmadisetti, @faysou, @Light2Dark, @manzt, @mscolnick, @MukeshK17, @peter-gy, @sswatson-ap
New Contributors
- @sswatson-ap made their first contribution in #7951
- @kitswas made their first contribution in #7990
- @MukeshK17 made their first contribution in #7980
- @faysou made their first contribution in #7961
Full Changelog: 0.19.6...0.19.7