Structured Content 2022: Join our conference to explore fresh perspectives on content and digital experiences →

Introducing the document type

In version 0.118.0 we introduced a new type document. This is the type for any object that you would like to store as documents in the datastore. Previously, any object type defined in your schema could be turned into a document, but now you must define these as documents instead. Only document types will appear in the desk tool sidebar.

NOTE: You should still use type: 'object' for the schema types that is reused on fields in your schema types (e.g. things like localeString and other types that you would never create standalone documents of)

What should I do?

This is not a breaking change, so everything will continue to work as before. That is, until the moment you decide to use the document type. If you add a document type to your schema, you should also have to change the type of all the top-level object types in your schema. E.g. if your schema was:

export createSchema({
  name: 'mySchema',
  types: [
    {
      name: 'book',
type: 'object',
fields: [ {name: 'title', type: 'string'} ] } //... ] })

You should change this to:

export createSchema({
  name: 'mySchema',
  types: [
    {
      name: 'book',
type: 'document',
fields: [ {name: 'title', type: 'string'} ] } //... ] })

And do this for all types in your schema that you would like to be stored as documents. Note: you may still want re-usable object types at top-level in your schema, but these should should stay with type objects. In that case they will not be listed in the sidebar.

Note: The introduction of the document type makes the hiddenTypes config in the config/@sanity/data-aspects.json config file obsolete, and you should remove it entirely.

Was this article helpful?