Skip to content

v3.1.0

Compare
Choose a tag to compare
@bjoerge bjoerge released this 21 Dec 16:13
· 2623 commits to next since this release
2ac9ccf

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npx create-sanity@latest

To upgrade a v3 Studio:

npm install sanity@latest

✨ Highlights

Improved customization and TypeScript support for the Portable Text Input and schemas

Improved support for custom rendering of the content in the Portable Text input via .components.block, component.inlineBlock and .components.annotation render callbacks for object-like schema types, references and type aliases.

While this has been possible previously by modifying the block schema locally, these customizations can now also be put directly on the various content types themselves, to be shared between different Portable Text inputs using them. For example you can now customize how an author reference would appear in various Portable Text contexts on the author schema itself.

Also text specific schema properties like decorators, styles and lists for the block type itself have slighly changed their configuration in order to better align with the rest of the studio. More info: Changes in block schema customization properties.

If you previously did customization of the editor using your own render callbacks or icons through the .blockEditor property in the block schema, you will get a deprecation warning, but they will still continue to work until further notice.

Please refer to the documentation for how to customize the block type and the Portable Text editor for v3 of the studio.

Besides this, the Portable Text input related code and schema types have been given a TypeScript update for better type safety and developer experience.

Studio appearance

The user menu now has options to select the appearance (color scheme) of the Studio. The selected appearance is stored in local storage and is reused on the next visit.

Screenshot of user menu with appearance options

Logo component updates

The button in the navbar that wraps the custom logo component has no padding anymore. This update is made in order to give the custom logo component full control over how big the button in the navbar should be. Therefore, the custom logo component may need to be updated in order to achieve the previous look. Below is an example of how to recreate the same result as before:

import {defineConfig} from 'sanity'
import {Box} from '@sanity/ui'

function MyLogo() {
  return (
    <Box padding={3}> // <-- Wrap your custom logo with a `Box` with `padding={3}`
      <CustomLogo />
    </Box>
  )
}

export default defineConfig({
  // ... rest of config

  studio: {
    components: {
      logo: MyLogo,
    },
  },
})

🐛 Notable bugfixes

  • This update fixes so that the component in the root config (ie in defineConfig) is the component that receives the result of the props passed on with renderDefault in previous custom components.
  • Fixed an issue with custom sort orders

📓 Full changelog

Author Message Commit
Bjørge Næss fix(form): fix issue with zero being rendered as empty string in number input 7be7511
Marius Lundgård build: add bin directory to distribution a1f6e00
Herman Wikner feat(core): update user menu with color schemes 788d23b
Herman Wikner feat(core): store selected color scheme i local storage 9ce0108
Herman Wikner fix(core): update workspace preview design 543a0f3
Marius Lundgård fix(config): respect unstable_clientFactory bcd4854
Cody Olsen fix: optimize lodash imports (#3974) 6c7d48d
Marius Lundgård docs: update readme (#3987) 88c90eb
Marius Lundgård docs: remove ToC 13389f5
Bjørge Næss chore(form): replace react-sortable-hoc with dndkit (#3961) 551c4d5
Espen Hovlandsdal fix(cli): only require workspace name if more than 1 workspace 743244b
Espen Hovlandsdal feat(core): add userHasRole utility method cd0819f
Snorre Eskeland Brekke fix(block-tools): ignore blocks inside list items (#3492) 5e51831
Espen Hovlandsdal feat(core): add new documentIdEquals utility method f7eb4b3
Espen Hovlandsdal chore(vision): use react 18 compatible dependencies 401f08a
Espen Hovlandsdal fix(config): throw error early if tools/template resolution fails 2f2e467
Herman Wikner fix(core): components API execution order 299ac06
vicbergquist fix(desk): always use default ordering on first rendering if any and update order on sort 663cc67
Espen Hovlandsdal refactor(desk): remove unused default ordering option in useDocumentList e2209ec
Espen Hovlandsdal fix(desk): recompute default sort order on desk structure change 4f9a353
Espen Hovlandsdal fix(desk): use last updated at as default sort order d5166e5
Per-Kristian Nordnes refactor(types): refactor Block schemas for new component extension api dfd33ce
Per-Kristian Nordnes refactor(types): refactor portable text types used internally in the studio 48c03a9
Per-Kristian Nordnes refactor(types): remove deprecated block validator Rules from v2 7aa1404
Per-Kristian Nordnes refactor(schema): allow for .components in block schema + ensure that the result has a name 5b5e878
Per-Kristian Nordnes refactor(validation): remove deprecated block validation rule. Should be using 'Rule.custom' in v3. 5f92213
Per-Kristian Nordnes refactor(validation): update pt types acc0e79
Per-Kristian Nordnes refactor(core/form): add block and annotation component schema extensions bbd32ae
Per-Kristian Nordnes refactor(block-tools): use pt-types from @sanity/types 27d5133
Per-Kristian Nordnes refactor(form/inputs): Custom rendering support via schema for PT-input f1152f7
Per-Kristian Nordnes refactor(core/fields/diffs): use new types in Portable-text-diffs b2aa1f2
Per-Kristian Nordnes refactor(core/preview): use new types in portable-text previews 3fd22cc
Per-Kristian Nordnes refactor(core/form/inputs): function can now be moved out of scope ccdc0fd
Per-Kristian Nordnes refactor(core/form/inputs): keep using schemaType var name a65169b
Per-Kristian Nordnes refactor(core/form/input): use updated types for block schemas and pt render callbacks aa3ee4e
Per-Kristian Nordnes refactor(types/schema): support seperate inlineBlock render callback c21a8f1
Per-Kristian Nordnes refactor(schema): validate lists and new component for block type afd01e2
Per-Kristian Nordnes refactor(types): limit supported types in block types .of to objects and refs cb867b8
Per-Kristian Nordnes refactor(core/form): update render callback support for block types 0902fa5
Per-Kristian Nordnes chore: mark types required (by schemas) as @beta edb3bd0
Per-Kristian Nordnes refactor(portable-text-editor): update types and add render callbacks to the PTE 6202a8c
Per-Kristian Nordnes chore: update puppeteer to latest version a9dc1ea
Per-Kristian Nordnes test(portable-text-editor): update tests 05abec0
Per-Kristian Nordnes chore: update yarn.lock 0590a81
Per-Kristian Nordnes chore(portable-text-editor): mark types with availablility status 3408962
Per-Kristian Nordnes refactor(portable-text-editor): simplify code 8c08f85
Per-Kristian Nordnes refactor(portable-text-editor): rename type > schemaType d25cbb5
Per-Kristian Nordnes refactor(portable-text-editor): rename type > schemaType b18716f
Per-Kristian Nordnes feature(schema): backward compatibility for breaking changes in block schema c323b12
Bjørge Næss fix(schema): add help id to blockeditor schema warnings 8d74ace
Herman Wikner feat(core): move padding from LogoButton to StudioLogo d774bc6
Herman Wikner dev(test-studio): update custom logo component bb61fa1
Marius Lundgård fix: pass readOnly to select element (#3900) f70736f