The viewof import syntax error is fixed here. Iโll publish a new release in the next day or two. Thanks for the bug report! github.com/observablehq...
03.08.2025 20:45 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0@ocks.org.bsky.social
Visualization toolmaker. Founder of Observable. Creator of D3. Former NYT Graphics. Pronounced BOSS-tock.
The viewof import syntax error is fixed here. Iโll publish a new release in the next day or two. Thanks for the bug report! github.com/observablehq...
03.08.2025 20:45 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0You can also use import attributes (which allows you to self-host compiled notebooks):
import {figure, viewof$rotation} from "https://api.observablehq.com/@rreusser/drawing-3d-objects-with-svg.js?v=4" with {type: "observable"};
You can import a viewof in a vanilla JavaScript cell like this:
import {figure, viewof$rotation} from "observable:@rreusser/drawing-3d-objects-with-svg";
I can look into the ojs syntax error, but definitely recommend adopting vanilla JavaScript wherever possible! Thanks for the write-up.
I've been playing with the new Observable Notebooks 2.0 over the past days and I'm amazed. While still a preview I think it's already a serious alternative to R or Jupyter notebooks. Love that it works locally now and that notebooks are just HTML files with vanilla JS observablehq.com/notebook-kit/
02.08.2025 10:26 โ ๐ 37 ๐ 8 ๐ฌ 0 ๐ 1Yes, you can use page templates with Notebook Kit: observablehq.com/notebook-kit... You can see the one we made for our documentation site here: github.com/observablehq...
31.07.2025 18:27 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0A screenshot of Observable Desktop showing a JavaScript cell importing the geoviz library, followed by a JavaScript cell rendering a world map.
Thanks for sharing, Nicolas! One tip, if you like you can use static imports in (vanilla) JavaScript cells now:
import * as geoviz from "npm:geoviz";
Mutable is still there, just as a function rather than a nonstandard operator. Itโs the same as in Framework (though not currently importable; just available by default). observablehq.com/framework/re...
31.07.2025 13:02 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Thanks for the suggestions. We recommend our editor (Observable Desktop, and a future web-based editor) if you want an easy way to edit notebooks.
31.07.2025 13:00 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Happy to help, reach out if you have any questions about the Notebook Kit API. Would also love any contributions back.
30.07.2025 15:08 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0You donโt have to use Observable Desktop to author notebooks. We designed the file format (HTML) to be easily edited in standard editors. Desktop is just a specialized editor intended to be best in class for this purpose.
30.07.2025 15:07 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Notebook Kit calls this the โbuildโ command which likewise produces runnable HTML. Itโs about half self-hosted currently, but if we add some more npm: import resolution to the Vite plugin we could make it fully self-contained. Being built on Vite gives a lot of leverage.
30.07.2025 15:06 โ ๐ 2 ๐ 0 ๐ฌ 0 ๐ 0Notebook Kit exposes a low-level Build and Runtime API which can help with this.
30.07.2025 15:03 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Please try out Observable Desktop and Observable Notebook Kit today. Weโd love your feedback, bug reports, ideas, etc.! github.com/observablehq...
29.07.2025 14:38 โ ๐ 10 ๐ 0 ๐ฌ 1 ๐ 0And last, the new editorโs AI is pretty mind-blowing ๐คฏ, focused on quick ideation and iterationโฆ www.youtube.com/watch?v=BeH6...
29.07.2025 14:38 โ ๐ 15 ๐ 0 ๐ฌ 1 ๐ 0Third, weโve built a whole new streamlined editor for Notebooks, focused on a clean interface and a great developer experience. observablehq.com/notebook-kit...
29.07.2025 14:38 โ ๐ 5 ๐ 0 ๐ฌ 1 ๐ 0Second, Notebooks 2.0 is now (finally) vanilla JavaScript! Itโs the standard syntax that works everywhere and like you expect. Say goodbye to quirky Observable JavaScript, and hello to const, let, static import, etc. observablehq.com/notebook-kit...
29.07.2025 14:38 โ ๐ 8 ๐ 0 ๐ฌ 1 ๐ 0First and foremost, weโre unlocking file-based workflows for notebooks โ edit them locally, check them into git, build them in CI, self-host them as superfast static sites, integrate them into custom apps, etc. etc. Weโre doubling down on file over app.
29.07.2025 14:38 โ ๐ 9 ๐ 0 ๐ฌ 1 ๐ 0Notebooks 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/
29.07.2025 14:38 โ ๐ 58 ๐ 25 ๐ฌ 2 ๐ 4Our goal is to make visual exploration (+ AI) sufficient for common use cases, but also fully embrace code if you want or need it. Itโs unusual to be pushing on both ends of the power spectrum like this, but this is how we make canvases cross-functional, bringing data team & business users together.
15.04.2025 15:14 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0I wouldnโt characterize it as no-code. You can use as much code as you want (SQL or JavaScript), and seamlessly mix code with direct-manipulation visual exploration.
15.04.2025 15:10 โ ๐ 3 ๐ 0 ๐ฌ 1 ๐ 0A selection of custom marks generated with Observable Plot. From top to bottom: A categorical bar chart with black hachured patterns in 6 different directions; A faceted bar chart using Isotope symbols showing cattle, pigs and sheep in red, grey and blue; a sequence of geometric symbols in blue gradually increasing in size: circle, triangle, square and fan, repeating 3 times, below which is a sequence of 12 human-like figures also increasing in size; A curve made up of ellipses that transition from vertical to horizontal to cicrcular shapes; a set of thee dot and whisker symbols in black and white; an abstract geometric arrangement of teardrop shapes in green to brown colours forming concentric bands away from the bottom left; a map of cycle hire journeys in London represented by asymmetric curves in a range of colours, overlaid over the river Thames; a map on London boroughs symbolised with dots of varying density with the highest density of dots towards the outside, lowest in the centre; a 'chart' of flowers of different shades of purple and orange.
Want to create your own custom marks in @observablehq.com Plot, but don't want to go full D3?
I've created a guide with 6 approaches of varying sophistication for specifying reusable custom marks:
observablehq.com/@jwolondon/h...
AMA about my love of maps
observablehq.com/blog/maps-an...
thanks @allisonhorst.bsky.social for the cosy chat
Kinda cryptic, but hereโs a quick take on a โpivot longerโ transform in Plot: observablehq.com/d/1913762d16...
17.12.2024 02:22 โ ๐ 3 ๐ 0 ๐ฌ 0 ๐ 0Iโd love if you wrote more approachable guides to Plot though!
16.12.2024 23:08 โ ๐ 0 ๐ 0 ๐ฌ 0 ๐ 0FWIW we attempted to document the common expected shape of data here:
observablehq.com/plot/feature...
observablehq.com/plot/feature...
(Though the tip semantics change when you use multiple marks: you end up with one tip per series rather than one tip across seriesโฆ)
16.12.2024 23:01 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0Totally valid to use multiple marks, too. You can avoid repeating yourself or hard-coding colors by mapping an array, e.g., ["AAPL", "GOOG", "IBM", "AMZN"].map((y) => Plot.lineY(stocks, {x: "Date", y, stroke: () => y})). observablehq.com/d/471ba8fb2e...
16.12.2024 22:59 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Plot 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-...
16.12.2024 22:59 โ ๐ 5 ๐ 2 ๐ฌ 1 ๐ 0The attention to detail is impressive. Good work!
27.11.2024 05:56 โ ๐ 4 ๐ 0 ๐ฌ 0 ๐ 0@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...
20.11.2024 20:47 โ ๐ 3 ๐ 1 ๐ฌ 0 ๐ 0