For years, building interactive widgets in Python notebooks meant wrestling with toolchains, platform quirks, and a mountain of JavaScript machinery. Most developers took one look and backed away slowly. Trevor Manz decided that barrier did not need to exist. His idea was simple: give Python users just enough JavaScript to unlock the web’s interactivity, without dragging along the rest of the web ecosystem. That idea became anywidget, and it is quickly becoming the quiet connective tissue of modern interactive computing. Today we dig into how it works, why it has taken off, and how it might change the way we explore data.<br/>
<br/>
<strong>Episode sponsors</strong><br/>
<br/>
<a href='https://talkpython.fm/seer-code-review'>Seer: AI Debugging, Code TALKPYTHON</a><br>
<a href='https://talkpython.fm/pycharm-psf-2025'>PyCharm, code STRONGER PYTHON</a><br>
<a href='https://talkpython.fm/training'>Talk Python Courses</a><br/>
<br/>
<h2 class="links-heading mb-4">Links from the show</h2>
<div><strong>Trevor on GitHub</strong>: <a href="https://github.com/manzt?featured_on=talkpython" target="_blank" >github.com</a><br/>
<br/>
<strong>anywidget GitHub</strong>: <a href="https://github.com/manzt/anywidget?featured_on=talkpython" target="_blank" >github.com</a><br/>
<strong>Trevor's SciPy 2024 Talk</strong>: <a href="https://www.youtube.com/watch?v=CjNSP_yQqrc" target="_blank" >www.youtube.com</a><br/>
<strong>Marimo GitHub</strong>: <a href="https://github.com/marimo-team/marimo?featured_on=talkpython" target="_blank" >github.com</a><br/>
<strong>Myst (Markdown docs)</strong>: <a href="https://mystmd.org/?featured_on=talkpython" target="_blank" >mystmd.org</a><br/>
<strong>Altair</strong>: <a href="https://altair-viz.github.io/?featured_on=talkpython" target="_blank" >altair-viz.github.io</a><br/>
<strong>DuckDB</strong>: <a href="https://duckdb.org/?featured_on=talkpython" target="_blank" >duckdb.org</a><br/>
<strong>Mosaic</strong>: <a href="https://uwdata.github.io/mosaic/?featured_on=talkpython" target="_blank" >uwdata.github.io</a><br/>
<strong>ipywidgets</strong>: <a href="https://ipywidgets.readthedocs.io/?featured_on=talkpython" target="_blank" >ipywidgets.readthedocs.io</a><br/>
<strong>Tension between Web and Data Sci Graphic</strong>: <a href="https://blobs.talkpython.fm/anywidget-web-data-tension.png?cache_id=bd498f" target="_blank" >blobs.talkpython.fm</a><br/>
<strong>Quak</strong>: <a href="https://github.com/manzt/quak?featured_on=talkpython" target="_blank" >github.com</a><br/>
<strong>Walk through building a widget</strong>: <a href="https://anywidget.dev/en/notebooks/counter/?featured_on=talkpython" target="_blank" >anywidget.dev</a><br/>
<strong>Widget Gallery</strong>: <a href="https://anywidget.dev/en/community/#widgets-gallery" target="_blank" >anywidget.dev</a><br/>
<strong>Video: How do I anywidget?</strong>: <a href="https://www.youtube.com/watch?v=oZhyilx3gqI" target="_blank" >www.youtube.com</a><br/>
<br/>
<strong>PyCharm + PSF Fundraiser</strong>: <a href="https://talkpython.fm/pycharm-psf-2025" target="_blank" >pycharm-psf-2025 code STRONGER PYTHON</a><br/>
<br/>
<strong>Watch this episode on YouTube</strong>: <a href="https://www.youtube.com/watch?v=qcxgukkmJjg" target="_blank" >youtube.com</a><br/>
<strong>Episode #530 deep-dive</strong>: <a href="https://talkpython.fm/episodes/show/530/anywidget-jupyter-widgets-made-easy#takeaways-anchor" target="_blank" >talkpython.fm/530</a><br/>
<strong>Episode transcripts</strong>: <a href="https://talkpython.fm/episodes/transcript/530/anywidget-jupyter-widgets-made-easy" target="_blank" >talkpython.fm</a><br/>
<br/>
<strong>Theme Song: Developer Rap</strong><br/>
<strong>🥁 Served in a Flask 🎸</strong>: <a href="https://talkpython.fm/flasksong" target="_blank" >talkpython.fm/flasksong</a><br/>
<br/>
<strong>---== Don't be a stranger ==---</strong><br/>
<strong>YouTube</strong>: <a href="https://talkpython.fm/youtube" target="_blank" ><i class="fa-brands fa-youtube"></i> youtube.com/@talkpython</a><br/>
<br/>
<strong>Bluesky</strong>: <a href="https://bsky.app/profile/talkpython.fm" target="_blank" >@talkpython.fm</a><br/>
<strong>Mastodon</strong>: <a href="https://fosstodon.org/web/@talkpython" target="_blank" ><i class="fa-brands fa-mastodon"></i> @
[email protected]</a><br/>
<strong>X.com</strong>: <a href="https://x.com/talkpython" target="_blank" ><i class="fa-brands fa-twitter"></i> @talkpython</a><br/>
<br/>
<strong>Michael on Bluesky</strong>: <a href="https://bsky.app/profile/mkennedy.codes?featured_on=talkpython" target="_blank" >@mkennedy.codes</a><br/>
<strong>Michael on Mastodon</strong>: <a href="https://fosstodon.org/web/@mkennedy" target="_blank" ><i class="fa-brands fa-mastodon"></i> @
[email protected]</a><br/>
<strong>Michael on X.com</strong>: <a href="https://x.com/mkennedy?featured_on=talkpython" target="_blank" ><i class="fa-brands fa-twitter"></i> @mkennedy</a><br/></div>