🗓️ Everything *[NYC] is back. A free gathering for AI builders. Sept 9 →

What’s new in August: inline tables, functions calling functions, and visual editing without React

  • Kelsey Bernius

    Staff Enterprise Product Marketing Manager at Sanity

  • John Siciliano

    Senior Technical Product Marketing Manager

Published

Welcome to August! Six releases went out this month, and they generally fall into one of two buckets. Some are building blocks you'll reach for on your next project. Others close gaps that you’ve been requesting for a while now.

Tables in the Portable Text Editor are the headline because they've been the most requested feature. But Functions Invoke is the one that changes how you can architect your workflows. Lots more to share too though so let’s dive in 👇.

Tables in the Portable Text Editor

Take advantage of native support for inline tables in the Portable Text Editor. Highlight rows or columns, copy, paste, or delete them.

Each cell is a real Portable Text container: structured, GROQ-queryable, and validated by your schema. Table plugins could already get you a grid, but the grid was the whole feature. Now you can constrain what goes in a cell the same way you'd constrain any other field. Want a cell that only accepts a reference? Do it in your schema.

If you've been maintaining a table plugin to work around this, you can probably delete it.

Functions Invoke: split logic across multiple functions

Sanity Functions can now call other functions directly. That opens up four patterns:

  • Composition. One function's output feeds the next.
  • Fan-out. One function triggers many in parallel.
  • Privilege separation. The function handling untrusted input doesn't need the credentials the downstream function has.
  • Resource isolation. A slow, memory-hungry job doesn't block the fast path.

Our own R&D app is the cautionary tale. It had 31 functions, and every one carried its own copy of the same Slack-notification code. Thirty-one places to update when the message format changes. With Invoke, one function owns that logic and the other 31 call it.

Visual editing for static HTML

Visual editing was effectively React-only. A new package, @sanity/visual-editing-standalone, changes that: click-to-edit on static sites with no React and no bundler required. Astro, 11ty, Nuxt, or plain HTML.

For teams on a static site generator or a non-React stack, that means going from the live page to the right field in the Studio, which is the thing everyone assumed they'd have to rewrite their front end to get.

Grab the package or poke around at it in the sandbox first.

New skill drop: Migrating to Sanity

If you're moving off another CMS, there's a new migration skill for your agent. It ships with source-specific guides that produce deterministic migration scripts.

Worth being clear about what it isn't. This is agent-scaffolded, not fully automated. You still own the decisions, you still run the execution, and you still validate the result. What it saves you is the boilerplate of figuring out how the source system's export maps to Sanity, which is usually where the first week goes. Add the skill now.

ChatGPT app integration

Sanity now has a native app integration in the ChatGPT apps directory, running on the full Sanity MCP. It mirrors the existing Claude connector.

You can @-mention Sanity in a ChatGPT conversation to create or patch documents, run GROQ queries, or manage releases in plain language.

Media Library: video versioning

Video assets in the Media Library now support versioning, which closes a parity gap with other asset types. Re-upload a video and you get a new version; earlier versions stay accessible if you need to revert.

Small change, but if you've ever had a marketing team overwrite a hero video the week of a launch, you know why it matters. The docs have the details.

Community highlight: a Claude agent that knows your site

Copenhagen design studio Blackbook has built a portfolio site where visitors can ask questions instead of clicking through menu bars. The team uses Sanity Dataset Embedding, and an agent queries the same structured content through GROQ that powers the visual site (Next.js App Router). That same content feeds a 35+ entity JSON-LD knowledge graph for SEO. The team updates the Studio once and all three move together: the page, the SEO graph, and the agent. No separate content pipeline for the AI, because there doesn't need to be one.

You can build something similar by building your own agent and connecting it to Sanity using Sanity Context. Read more how they built it in Discord or start building your own.

A website displaying "Apps & Products" content, with visuals of a credit card, a smartphone, and an overlaying chatbot featuring a man's profile.

And that's August! Everything above is live now. Come find us in Discord if you build something with it.