Observable 2.0, a static site generator for data apps

Observable has released Observable Framework, an open-source static site generator for data apps that pairs Markdown-based pages with language-agnostic “data loaders” and browser-side JavaScript visualizations. Commenters highlight its “baked data” approach—precomputing and aggregating data at build time for fast, static dashboards—while probing its limits for real-time monitoring, row-level security, and very large datasets. Many compare it to tools like Evidence, Quarto, Tableau, and Streamlit, seeing it as a developer-focused, git-friendly option that leans on D3/Observable Plot and DuckDB, with a business model centered on optional hosted deployment and access control.

Overall reaction

  • Many are excited; previous Observable users see Framework as a powerful, cleaner way to build data apps and dashboards.
  • Some are relieved it decouples Observable from the hosted notebook site and embraces “files over app”.
  • A minority are skeptical or confused by branding (“Observable Framework” vs just “Framework”, multiple “Observable” things).

Architecture & “baked data” model

  • Core idea: static site generator for data apps where data loaders run at build time and emit files (often Parquet/CSV/JSON) via stdout.
  • This “baked data” / “BI as code” pattern is praised for:
    • Forcing clarity on what data is actually needed.
    • Shifting heavy compute to build time, improving load times.
  • Framework still allows client-side fetching or WebSockets for dynamic data; static snapshots are a recommended default, not a hard limit.

Interactivity, visualization, and libraries

  • Observable Plot is positioned as the main charting layer; some users miss out‑of‑the‑box zoom/pan like Plotly.
  • Plot supports rich marks (e.g., raster/contour/cell for heatmaps) but currently has limited packaged interactivity; zoom/brush are in progress.
  • Framework is library‑agnostic: ECharts, Vega(-Lite), Plotly, D3, jsROOT, etc. can be used; examples added for ECharts and DuckDB.
  • Some argue chart “grammars” (Plot, Vega) are conceptually stronger than chart-type libraries; others prioritize immediate interactivity.

Language & developer experience

  • Frontend is vanilla JavaScript with a reactive runtime; many appreciate dropping Observable’s custom notebook syntax.
  • Backend/data loaders are polyglot: any script or binary that writes to stdout (Python, R, Go, etc.).
  • Concern remains that data scientists reluctant to use JS/Node/npm may resist adoption; examples and templates (CLI, GitHub, Codespaces) help onboarding.

Use cases and limitations

  • Strong fit: dashboards, reports, documentation-like data apps with periodic refresh (cron/CD).
  • Less ideal: real-time monitoring, training-time ML dashboards, highly ad hoc OLAP/pivot exploration, or strict row-level/customer-level security.
  • Large data: pattern is to pre-aggregate into smaller Parquet snapshots and optionally query with DuckDB-Wasm on the client.

Integration, deployment, and business model

  • Integration with existing static sites (Hugo, Jekyll, VitePress, Django) is currently via iframes or side-by-side hosting; tighter embedding is “unclear / future”.
  • Hosting/compute and team-oriented features (access control, scheduled builds, monitoring) are the paid path; framework itself is open source.
  • Some ask for clearer GitHub Actions examples and simple deployment recipes.