Enhancements to TypeGen features, transition to new Portable Text Editor package, and bugfixes

Published: July 3, 2024

v3.39.0
Sanity Studio

New TypeGen Features

Better GROQ Function Coverage

We have added the following improvements to type generation for GROQ query results:

Improved Union Handling in TypeGen

TypeGen now correctly expands all unions inside an object, addressing this reported issue on GitHub. Previously, only a part of a union might be returned. TypeGen now ensures that all object types in a union are expanded and included in the generated types.

// Example query
export const HomePageQuery = groq`*[_type == "page" && slug.current == "homepage"]{
  title,
  components[] {
    _type == "hero" => { title, "image": image.asset->url },
    _type == "cta" => { title, link }
  }
}`;

TypeGen will now generate the following type for the query above:

export type HomePageQueryResult = Array<{
  title: string;
  components: Array<
    | { _type: 'hero'; title: string; image: string }
    | { _type: 'cta'; title: string; link: string }
  >;
}>;

New import path for the Portable Text Editor

We’ve started work on a standalone Portable Text Editor package, and thus transitioned to using the @portabletext/editor package instead of the now deprecated @sanity/portable-text-editor package. This change includes several internal improvements and fixes. You can follow this work in this repository on GitHub — more documentation will follow soon.

Advanced users who have used the @sanity/portable-text-editor dependency should update to @portabletext/editor to ensure continued support and improvements.

Notable bugfixes

  • Fixes an issue where FormInput would not render fields inside a fieldset.
  • Various TypeGen bug fixes.
  • You can now paste content into the Portable Text Editor in Firefox (again).

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

Related documentation