Notebooks 2.0 is here! 📓🔮 Previewing today: Notebook Kit, an open file format for notebooks with open-source tooling for generating static sites; and Observable Desktop, a macOS desktop application for editing notebooks as local files, with a radical new approach to AI. observablehq.com/notebooks/2/
Observable Notebook Kit and Desktop 1.1 are out. Headline feature: database connectors! 🎉 You can now query DuckDB, SQLite, Postgres, and Snowflake directly from notebooks. And it’s self-hosted. And it saves results automatically for performance and stable analysis. observablehq.com/notebook-kit...
A little demo of reactive SQL in Observable Notebooks 2.0, first using (native) DuckDB to bake data from a remote source, followed by DuckDB-Wasm to create and query reactive views in the client. Should be released this week!
Observable Plot has crossed 100,000 weekly downloads (and very close to 5,000⭐️s)! observablehq.observablehq.cloud/oss-analytic...
Observable Notebook Kit and Desktop 1.3.0 are out, featuring data loader cells. You can now (finally!!) write Python and Node.js in notebooks. 🐍 observablehq.com/notebook-kit...
Observable Notebook Kit & Desktop 1.4 now support TypeScript cells, along with TypeScript for Node.js data loader cells. (Just type stripping, but greatly helps interoperability.)
I am excited about (and proud of) Observable Framework 1.1. It features Windows support, self-hosted npm: imports, and CommonMark compatibility. And it’s just three weeks since launch! More to come.
The Notebooks 2.0 gallery now has a dedicated page! observablehq.com/notebook-kit...
A reviver/replacer technique for dates in JSON that won’t silently corrupt your data. observablehq.com/@mbostock/th...
Episode one of the Observable Podcast! Wherein @toph.me and I chat reactivity, mistakes in designing Observable JavaScript, and vanilla JavaScript in Notebooks 2.0. www.youtube.com/watch?v=AUh5...
Plot prefers “tidy” data. (And Plot doesn’t really “prefer” array-of-objects; it uses columnar data internally. The most performant approach is to pass arrays of values to each channel, but array-of-objects is ubiquitous in JavaScript, so we make that easy.) vita.had.co.nz/papers/tidy-...
I am surprised that Fetch doesn’t yet have a way to track upload progress — you have to go back (20+ years) to XMLHttpRequest! There’s a nice observer proposal linked here though. jakearchibald.com/2025/fetch-s...
In this week’s Observable Podcast, co-CEO Julio and I discuss our mission to make computation easier for humans to use and understand. We need a better medium! youtu.be/0uBOL9NP8Iw?...
It isn’t much work to support R/Rscript data loader cells (at least if you don’t mind a lack of syntax highlighting)… we’ll get to it soon. github.com/observablehq...
@fil.rezo.net and I are working on further improvements to the waffle mark, including better tooltips, better stroke, and a better default unit for very large or very small values. github.com/observablehq...
I got a proof-of-concept self-hosted jsr: imports working, so we should be able to land this soon too! github.com/observablehq...
Yes! I also like when the big numbers update on hover as in this example: observablehq.com/framework/ex...
Nice! We’re working on ```sql cells to help with this. github.com/observablehq...