Sanity Versions Save

Sanity Studio – Rapidly configure content workspaces powered by structured content

v3.35.0

1 month ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

  • Fixes an issue that would cause duplicate entries in the list of recent searches.
  • Updates the type of value within ObjectFieldProps to accept a type parameter, allowing for dynamically setting the expected type. (thanks @shixish)

📓 Full changelog

Author Message Commit
Ash fix(core): include request tag in Text Search API requests (#5988) 471854e455
cngonzalez chore: update licenses across packages for current year (#6002) c11256bc62
renovate[bot] chore(lockfile): update dependency @sanity/assist to v2.0.4 (#6006) 37a4ed3d8e
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.7 (#6007) 10414601ad
cngonzalez fix: ensure that useStructureToolSetting updates only when necessary (#6004) a4d8d2d3e4
renovate[bot] fix(deps): update dependency get-it to ^8.4.13 (#6013) 1da1feb417
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.5 (#6012) 01dec12e2d
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.0 (#6015) 2f16c94060
Sindre Gulseth fix: schema extraction object type name (#6014) dcd55378b8
Sindre Gulseth Fix bug where we cant resolve custom types (#6016) 217a47dae0
Herman Wikner feat(tasks): add comment delete confirm dialog (#6009) c105115524
Herman Wikner fix(comments): hide context menu actions if handler is undefined (#6011) cb55bc5e87
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.1 (#6022) 09d4e2720c
renovate[bot] chore(deps): update dependency @types/use-sync-external-store to ^0.0.6 (#6023) 910f04cb16
renovate[bot] chore(deps): update dependency turbo to ^1.12.5 (#6025) 02699dd6a5
renovate[bot] chore(deps): update dependency vite to ^4.5.2 (#6026) 767e99ea26
renovate[bot] chore(deps): update pnpm to v8.15.5 (#6027) a2aedcbaf0
renovate[bot] chore(deps): update dependency @portabletext/toolkit to ^2.0.11 (#6030) 639580fc20
renovate[bot] chore(deps): update dependency @babel/preset-env to ^7.24.0 (#6033) 795167f568
renovate[bot] chore(lockfile): update dependency @portabletext/react to v3.0.12 (#6031) 9f745f0fd2
renovate[bot] chore(deps): update dependency styled-components to ^6.1.8 (#6024) d40551742f
renovate[bot] chore(deps): update linters (#6029) baaa56b9ab
renovate[bot] chore(deps): update dependency esbuild to v0.20.2 (#6028) a4805883a2
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to ^3.3.8 (#6036) 871b450245
Ash fix(util): safely stringify path segments named as GROQ data types (e.g. null) (#5986) 561ee14fe3
Ash refactor(core): use path toString function from @sanity/util/paths (#5987) 522477ab5b
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v4 (#6037) 114d8bb5d8
renovate[bot] chore(deps): update dependency @portabletext/toolkit to ^2.0.12 (#6042) eb86c41b6e
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.2 (#6043) 039eb1fcca
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.7 (#6045) 92e62aa7ea
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.4 (#6046) aa37fd9735
renovate[bot] chore(lockfile): update dependency mendoza to v3.0.6 (#6047) b94419adb9
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.8 (#6048) bd4421669e
renovate[bot] fix(deps): update dependency get-it to ^8.4.14 (#6049) 01866ed7e0
renovate[bot] chore(lockfile): update dependency @portabletext/react to v3.0.13 (#6044) 9ab928f329
Ash feat(core): integrate with Text Search API ordering (#6001) a59f4bc620
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to ^4.4.3 (#6050) b6334ee9f5
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.6 (#6052) ac206c2e8d
Pedro Bonamin fix(tasks): hide safari details marker (#6020) f70cf04d17
Herman Wikner fix(tasks): only display tasks with edits in the drafts menu (#6053) 050f45206c
Herman Wikner feat(tasks): ui improvements (#5990) a58b596462
cngonzalez fix: use more reliable comparison in deduping search results (#6034) 1dd2cccad8
Sindre Gulseth feat(codegen): add codegen skeleton package (#5979) e94c02f58d
Sindre Gulseth feat(codegen): add groq finder methods. (#5980) 7addeefdac
Sindre Gulseth feat(codegen): add typegen methods to codegen package (#5981) baf7cf0445
Sindre Gulseth feat(codegen): add CLI to generate types given a codegen config (#5982) 3742b3f5a2
Sindre Gulseth feat(codegen): expose referenced type as hidden symbol (#6008) 2826c46300
Sindre Gulseth chore(codegen): refactor codegen cli group to use typegen cli group (#6051) ff07ff247a
Sindre Gulseth chore(codegen): bind groq-js to ^1.5.0 (#6055) 9595f3a753
renovate[bot] chore(deps): lock file maintenance (#6035) c70653afcc
Sindre Gulseth fix(codegen): update help text and generated comments copy (#6059) 2afbc3bfdd
Tommy Petty feat(tasks): Localize Task feature (#6017) 06d812c001
Binoy Patel chore(deps): pin @sanity/migrate groq to 1.5.0 (#6060) c36a3b013c
Andrew Wessels Update fieldProps.ts (#5902) 10d86e0ad7

v3.34.0

1 month ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade your Sanity Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Persisted user settings

User settings (like desk list sort orders, view modes, and global search history) are now stored securely server-side by Sanity. This means that these settings do not need to be re-selected across devices or browsers, and will be persisted wherever a user logs into their Studio.

🐛 Notable bugfixes

  • Fixes a bug in the Portable Text Editor where merging two text blocks could result in data loss in the topmost block when several editors are inside the document.
  • Migration CLI tooling now always places its output in the project root, and provides better messaging about this.

📓 Full changelog

Author Message Commit
Ash feat(cli): improve migration runner output (#5904) 11d15ce65b
Ash fix(cli): use inferred project root when creating migrations from subdirectory (#5905) 1d2775cf13
Herman Wikner fix(core): handle no userId in getUser (#5992) c9ceac0038
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.6 (#5999) 51d3bbd5a1
Per-Kristian Nordnes fix(portable-text-editor): fix and test issue with merge block operation (#5996) 96bc72be1b
Pedro Bonamin feat(tasks): add notification data for tasks document and tasks comments (#5998) 8e63552f24
cngonzalez feat(core): store and fetch user settings from backend (#5939) ecb349553b

v3.33.0

1 month ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a Sanity Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

  • Resolves an issue where users were not redirected to their original destination after re-authenticating, ensuring seamless access to linked content within the Studio.
  • _projectId and _strengthenOnPublish are now valid values for Initial Value Templates, allowing for Cross Dataset Reference values in templates.
  • Fixes a type bug where the type for defineType and defineField was not being captured correctly.

Other Features

  • __experimental_search is deprecated in favor of field-level search options for strings and Portable Text arrays. You should now be able to define search weights in your schema, like:
defineField({
  name: 'title',
  type: 'string',
  options: {
    search: {
      weight: 10,
    },
  },
})
  • Document Actions can now specify a group, which will allow users to specify whether a specific document action should appear in the footer or in the document's context menu.
  • Adds ability to open the hotspot and crop dialog by double-clicking image preview.

📓 Full changelog

Author Message Commit
Tommy Petty Update PULL_REQUEST_TEMPLATE.md (#5921) 3afe5a261c
Herman Wikner fix(comments): enable check (#5918) c230bb5070
Herman Wikner fix(comments): lost comment message while document is reconnecting (#5928) ec4da462b5
Bjørge Næss test(sanity): use dev aliases in the validation test's worker threads (#5927) 8bf1c928b0
Herman Wikner feat(comments): support task comments (#5934) 75273afb9f
Herman Wikner fix(comments): use _weak instead of weak (#5936) 642224f1ac
Tommy Petty fix(pte): updates zoffset for PopoverEditDialog to not be on top of InspectDialog (#5882) 69b3552897
Nina Andal Aarvik fix(core): add onDoubleClick to open image crop (#5815) e3bfee0e52
Bjørge Næss fix(ci): align pnpm install across all workflows (#5920) f10396750b
Rico Kahler feat(core): redirect to previous path after login (#5932) 96cd0b636d
Pedro Bonamin feat(tasks): bootstrap tasks plugin (#5704) dd0794a36f
cngonzalez refactor(core): use KeyValueStore for recent searches (#5872) c531a6b231
Herman Wikner fix(comments): handle lack of access to inline comments (#5925) 2d4f60c16b
Pedro Bonamin chore(comments): add support for comments layout avatar config (#5944) f42ea799d1
Tommy Petty fix(core): remove prev and next month buttons in calendar input (#5931) 01f7df21b6
Pedro Bonamin feat(core): add groups to document actions, introduce paneActions group (#5933) 4e95e092b4
Rico Kahler fix(core): upgrade and fix types for typescript 5.4 (#5943) 4e72b80dc9
Rico Kahler fix(core): allow _projectId and _strengthOnPublish in templates (#5942) 5adca888ff
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.7.0 (#5955) 0314111b80
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.3 (#5952) 01bd4abfeb
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.4 (#5954) a5a1a5d52b
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.3 (#5953) fc22e9fdc5
renovate[bot] chore(lockfile): update dependency @sanity/icons to v2.11.0 (#5957) 502fda0fe9
renovate[bot] chore(deps): update dependency @sanity/assist to v2 (#5960) f7019ff8b5
Pedro Bonamin fix(deps): update @sanity/icons (#5956) 15f53bd87f
Bjørge Næss chore(test): exclude the github reporter from playwright tests for now (#5959) 334917fb3e
Cody Olsen chore: add PTE in Presentation race condition reproduction (#5961) 4adda386fe
Cody Olsen chore: always bump @sanity/ui (#5963) 188454654f
renovate[bot] chore(lockfile): update dependency @sanity/icons to v2.11.2 (#5962) bf22266847
Sindre Gulseth feat: add cmd to generate a JSON representation of schema (#5919) c1e4f2aac2
renovate[bot] fix(deps): update dependency get-it to ^8.4.11 (#5967) 25dce83ea3
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.8 (#5966) a1237d6fc8
Herman Wikner feat(core): add navbar actions (@internal) (#5968) 8336c9f585
renovate[bot] chore(lockfile): update dependency framer-motion to v11.0.12 (#5969) 01f260b91f
renovate[bot] chore(deps): update dependency @sanity/icons to ^2.11.2 (#5970) 1b0eb0800a
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.7.1 (#5971) 3101795265
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.9 (#5972) 218d09c464
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.5 (#5973) 9254565bd3
Nina Andal Aarvik fix(tasks): show pending tasks in document footer (#5894) 177bc79763
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.4 (#5975) a701e1cb4b
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.10 (#5976) b7bcc2df41
renovate[bot] chore(lockfile): update dependency @sanity/assist to v2.0.3 (#5977) be4990055a
Pedro Bonamin feat(tasks): use FormBuilder to create and edit tasks. (#5897) 908577e989
Pedro Bonamin feat(tasks): track activity changes with document history. (#5965) 0a763903df
Bjørge Næss chore(deps): pin typescript to 5.3 (#5984) 193b4b8646
Ash feat(core): add new search config API (#5948) 3c458c89a9

v3.32.0

1 month ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

  npm create sanity@latest

To upgrade your Sanity Studio, run this command in its project folder:

  npm install sanity@latest
  

✨ Highlights

Inline commenting in Blocks

inline comments screenshot

Enhance editorial collaboration with the ability to attach comments directly to specific text selections. This feature includes highlight capabilities and ensures a seamless experience with updates and scrolling interactions.

Comments is available on the Growth plan (30-day free trial on new projects). You can learn more about comments in the documentation.

🐛 Notable bugfixes

Fixes sluggish document list due to lingering listeners

We've implemented a cleanup mechanism for edit state listeners to resolve issues that caused the document lists to become sluggish. Prior to this fix, open connections weren't being closed properly, leading to slow performance and potential crashes. If you've been experiencing delays or stability problems in your document lists, this update addresses those concerns.

📓 Full changelog

Author Message Commit
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.1 (#5913) 3b741a182
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.2 (#5912) 124570d5d
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.3 (#5914) 2bebf2477
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.6.0 (#5915) b62521316
Rico Kahler fix(core): clean up edit state listeners (#5911) 4acc11e6c
Per-Kristian Nordnes chore(comments): enable inline comments (#5883) 7d3f33d1e
Tommy Petty fix(core): update placeholder text to be more clear and accessible (#5910) 997809589

v3.31.0

1 month ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Portable Text Editor improvements

  • Inline references and objects will now render with increased default sizes in the Portable Text Editor for easier interaction.
  • Original content keys are now preserved during undo/redo operations in the Portable Text Editor. This change makes for more robust content integrity.

🐛 Notable bugfixes

  • Fixes an issue that allowed files to be dropped behind the open modal, leading to potentially adding files to the wrong input.
  • Fixes a problem where temporary network disruptions could cause the form editor to reload and lose unsaved edits. Now, the form becomes read-only during reconnection, preserving state and changes.
  • Fixes an issue where initial value templates would not accept a target dataset for cross-dataset references.
  • Fixes an issue where the "disabled" state was shown indefinitely for cross-dataset references.
  • Resolves a UI problem where the "cannot upload" message was incorrectly shown for extension-restricted file types during hover.
  • Fixes a bug where certain selections within the Portable Text Editor were being mishandled.
  • Fixes an issue where Comments would show a loading state while the form was reconnecting, preserving user comments during network issues.

📓 Full changelog

Author Message Commit
Robin Neatherway docs: show backup command in help (#5865) 5d060afc1
Nina Andal Aarvik fix(core): change modalWidth of inlineObjects to 1 by default (#5839) 6e551b09d
Per-Kristian Nordnes feat(portable-text-editor): preserve keys on undo/redo (#5805) f83e8e401
Herman Wikner feat(portable-text-editor): implement isSelectionOverlapping method (#5870) 1d41af7c8
renovate[bot] chore(deps): update dependency get-random-values-esm to v1.0.2 (#5856) 16a5434fd
Ash fix(form): prevent drop event propagating outside of EditPortal component (#5813) fc73437ae
Per-Kristian Nordnes fix(portable-text-editor): check that path is lengthy (#5875) 2deebb189
Herman Wikner feat(core): add onFullScreenChange to Portable Text Input (#5879) 84a0c9028
Rupert Dunk feat(structure): support closing first collapsed DocumentPanel (#5867) 6d61e9402
cngonzalez fix(core): check if previous state is null for unmounted component (#5724) 9ed5cca51
Tommy Petty fix(structure): provide better error handling if orderings contain invalid field (#5709) 4926b78e4
Per-Kristian Nordnes feat(portable-text-editor): range decorations (#5871) fa330a0ba
Herman Wikner feat(comments): introduce inline commenting (#5606) 7ed2b0f65
Tommy Petty fix(core): updates to not show "cannot upload" on hover when using extension based accepts settings (#5881) 023e7e646
Bjørge Næss fix(sanity): preserve form (as readOnly) when reconnecting (#5884) ed87e2a40
Per-Kristian Nordnes fix(portable-text-editor): all paths must be checked (#5891) 4ae88a028
Per-Kristian Nordnes fix(comments): allow ranges to be collapsed (#5892) eb5cd5020
Ash feat(ci): cache release dependencies (#5834) 75ac3cfb1
Rostislav Melkumyan feat(cli): --quickstart flag for ejecting server schemas (#5797) 174a61641
Pedro Bonamin feat(core): export useWorkspaceLoader from core (#5898) 367045963
Pedro Bonamin chore(search): refactor search to export necessary components and providers. (#5900) 4159bcabe
Espen Hovlandsdal chore(deps): upgrade archiver, split2 dependencies (#5880) c9a1dd667
Espen Hovlandsdal fix(core): allow _dataset for cross-dataset references in templates (#5889) 9fc34a25e

v3.30.1

2 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

:sparkles: Highlights

  • Added reference documentation for the sanity/migrate APIs.

Other features

  • Adds ARIA labels to navbar icons for better accessibility.
  • Fixes an issue in which the free trial popover was shown twice for new users.

🐛 Notable bugfixes

  • Updates placeholder color for Portable Text Editor.

📓 Full changelog

Author Message Commit
cngonzalez test(core): add tests for sort order local storage values (#5764) adb43b026d
Per-Kristian Nordnes feat(form/inputs): control PortableTextEditor instance via ref (#5793) f655b5cec7
Per-Kristian Nordnes feat(core/inputs): support custom editor change callback (#5803) 1a36a74013
Per-Kristian Nordnes feat(portable-text-editor): determine if selection is made backward (#5807) db8fd66190
Per-Kristian Nordnes feat(portable-text-editor): new API method getFragment (#5806) f210112e34
Pedro Bonamin fix(pte): update pte placeholder color (#5756) 2ec06057f2
Per-Kristian Nordnes test(playwright-ct): fix some webkit flakyness in PT-Input tests (#5811) 981a4bdf3f
Nina Andal Aarvik fix(core): add missing aria-labels to navbar icons (#5810) ea8f97a4a0
Bjørge Næss fix(docs): complete apidocs for migrations (#5679) 32569beaf7
Espen Hovlandsdal fix(i18n): escape interpolated values inside of <Translate> (#5804) 78ffbaf428
Robin Neatherway chore(backup): set dated api version (#5816) fd5bb2fc53
Nina Andal Aarvik fix(core): add aria label to action button pte toolbar (#5653) 0794d72069
Nina Andal Aarvik fix(pte): add telemetry to invalidvalue error (#5809) f3fd972a42
Per-Kristian Nordnes chore: update codeowners details (#5812) 0e9490842c
Bjørge Næss chore: use star for workspace protocol version (#5822) 6894f7bb4d
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#5823) b34420c0ae
renovate[bot] fix(deps): update dependency get-it to ^8.4.9 (#5827) 06968cd87d
renovate[bot] chore(deps): update dependency @sanity/ui to ^2.0.7 (#5824) 63e569fd1a
renovate[bot] chore(deps): update pnpm to v8.15.3 (#5829) b75a335e1d
renovate[bot] chore(deps): update dependency turbo to ^1.12.4 (#5826) 40ad62684a
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.4.0 (#5828) 22200c6ea0
renovate[bot] chore(deps): update actions/cache action to v4 (#5831) 81e5140bf0
renovate[bot] fix(deps): update dependency @sanity/client to ^6.14.2 (#5830) 447dfba03f
Robin Neatherway feat: update indexing endpoint for new name (#5725) 477b60cb61
Pedro Bonamin chore(tasks): move CommentsSetupProvider to core (#5767) dbff2277e6
cngonzalez refactor(core): refactor SettingsStore and useStructureToolSetting (#5784) 74be48b293
Ash fix(i18n): add successful document restoration string (#5821) 21677cd679
cngonzalez test(core): add test for color scheme preference and search (#5820) 1c1c87cd5d
Fred Carlsen fix(test): fix breaking annotation popover test (#5838) 042cd3452b
renovate[bot] fix(deps): update dependency get-it to ^8.4.10 (#5841) 09970ef172
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.0 (#5842) 78bc713856
renovate[bot] chore(deps): update dependency @bjoerge/mutiny to ^0.5.3 (#5843) 8e95d6393e
renovate[bot] chore(deps): update pnpm to v8.15.4 (#5844) ce5339b913
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.6 (#5845) c4f10714aa
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.8.7 (#5846) 2367d5d830
renovate[bot] chore(lockfile): update dependency mendoza to v3.0.5 (#5848) 2a32db3cd1
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.5.0 (#5849) aaddddbba6
renovate[bot] chore(lockfile): update dependency groq-js to v1.4.3 (#5847) f50273030c
renovate[bot] fix(deps): update dependency @sanity/client to ^6.14.4 (#5840) 8aec8413c9
Robin Neatherway fix: wait for all streams to close when writing backups (#5835) 03635996c1
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.5.1 (#5850) 387f66fe45
renovate[bot] chore(lockfile): update dependency @sanity/preview-url-secret to v1.6.4 (#5851) 21eac30bbd
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.1 (#5853) d467be4c8d
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.8.8 (#5852) 8a6d67f09e
ecospark[bot] chore(prettier): fix unformatted files 🤖 ✨ (#5854) bcdb31902f
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.0 (#5857) 9ddde9a158
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.5.2 (#5858) 9dc2e917fb
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.2 (#5860) 24cf9e0682
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.0 (#5859) 47fed8924b
Pedro Bonamin fix(core): free trial shows twice (#5837) e774ce11f3
radhe fix(cli): handle API Error and update text output when backups are enabled (#5861) 11d3cebcbf
Rico Kahler build: allow etl.yml to be ran manually (#5863) 212f021519
Binoy Patel chore(deps): bump tsdoc to 1.0.0-alpha.44 (#5866) 99d60afc3f
Nina Andal Aarvik fix(core): change telemetry event names (#5832) 242e2ca057

v3.30.0

2 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Improvements to Comments in Presentation

With the recent introduction of both Presentation tool and comments, we realised that context can be crucial in understanding comments relating to visual aspects of an application.

Comments created from within the Presentation tool will now display a link allowing content editors to navigate from any tool directly to the context in which that comment was made in their application.

Other features

  • Improves error handling for a migration script that attempts to iterate over the passed document function without calling it
  • Adds new Studio API, ActiveToolLayout, which allows plugin authors to have more flexibility by wrapping the active tool
  • The selected viewport in Presentation is now persisted in the URL

🐛 Notable bugfixes

  • Improves focus handling with the Presentation tool and Portable Text Inputs
  • Fixes regression preventing import {debugSecrets} from '@sanity/preview-url-secret/sanity-plugin-debug-secrets' listing secrets
  • Fixes a bug preventing the CLI being used inside Studio project subdirectories

📓 Full changelog

Author Message Commit
Rico Kahler fix: remove no private (#5726) a3998c3847
Ash refactor(util): move concurrency limiter packages to @sanity/util (#5654) 35d368e57c
Ash fix(cli): project root resolution (#5712) e30f45f356
Bjørge Næss chore(deps): normalize vite dependencies 4c6ade2bc3
Bjørge Næss chore(docs): remove internal 'how to publish' from CONTRIBUTING.md 3e95893795
Bjørge Næss chore: install npm check-updates as dev dependency 5799aed369
Bjørge Næss chore: upgrade debug to latest 4.x 57190164c4
Bjørge Næss chore(depcheck): remove v2 detector and fix ts error a2c08eeeb1
Bjørge Næss chore(depcheck): cleanup depcheck ignores ac8fdc3eae
Bjørge Næss chore(portable-text-editor): add missing dev dependency ef47badb62
Bjørge Næss chore(groq): use relative imports to 'groq' from tests b5dc763e61
Bjørge Næss chore(sanity): add missing dev dependencies e1be6150bd
Bjørge Næss chore(cli): cleanup dependencies 3bb3d2b7a3
Bjørge Næss fix(test): remove unused files 4317541db9
Bjørge Næss chore: add @jest/globals as dev dependency in packages af6561ed03
Bjørge Næss chore(test): remove @sanity/ui jest mock 66eaec5848
Bjørge Næss chore(test): run codemod migrating from implicit imports from '@jest/globals' 23add76174
Bjørge Næss chore(test): fix various test typings after moving to @jest/globals 79f89c8f0b
Bjørge Næss chore(sanity): add workaround for typing difference between @types/jest and @jest/globals 7e3bcf261d
Bjørge Næss chore: remove @types/jest usage c81b291c94
Bjørge Næss fix(test): remove usage of jest-dom/extend-expect 8a801504a1
Bjørge Næss chore(deps): upgrade @testing-library/jest-dom to 6.x 1a323e7fd2
Binoy Patel chore(cli): update help copy for CLI commands (#5687) 12fb96b7aa
Rupert Dunk chore(comments): improve i18n resource for comment contexts (#5731) ce560b0b51
Bjørge Næss chore: switch from yarn to pnpm da9f72ef38
Bjørge Næss fix(mutator): fix type export issue c7ed0c9df8
Bjørge Næss chore(cli): replace vite typing stub with proper dependency d09db4c47c
Bjørge Næss chore(vision): fix typescript issue related to reexporting codemirror extensions 26c5f4752f
Bjørge Næss chore(deps): add 'sanity' as dependency to workspace root 564c501baf
Bjørge Næss chore(deps): upgrade @types/node to 18.x 64203bea52
Bjørge Næss chore: rename mentions of yarn => pnpm 5a65aad35d
Bjørge Næss chore(package.json): alphabetize scripts 3527a43c2a
Bjørge Næss chore: clean up package scripts c77b7baf2d
Bjørge Næss chore: cleanup depcheck scripts 6e37d03e32
Bjørge Næss fix(github): enable pnpm before installing dependencies 0b572f1751
Bjørge Næss fix(github): fix workflow file 5a215ca294
Bjørge Næss fix: run prettier e24a458ea7
Bjørge Næss fix(monorepo): add missing dev dependency b5359d3410
Bjørge Næss fix(vision): add missing type dependency 6e91aef484
Bjørge Næss fix(sanity): update test snapshots 70bcf6fb74
Bjørge Næss chore: apply suggestions from code review 1b7a1f1fac
Bjørge Næss fix(ci): fix subargs issue w/pte e2e tests f0fad4c017
Binoy Patel chore(e2e): fix e2e action failing (#5735) 4c02649f95
Bjørge Næss fix(chore): fix lint script (#5739) d1fc36da9c
Rico Kahler build: remove last rebase step (#5737) 79a587011b
Espen Hovlandsdal chore(deps): align versions, lockfile 2d1f084ab0
Espen Hovlandsdal fix(cli): minor whitespace tuning for migration error output (#5727) b20f121afe
Bjørge Næss chore(ci): fix prettier --write (#5740) 2b00589f60
Bjørge Næss chore: improve dev commands (#5747) b6199a1b2f
Pedro Bonamin feat(core): add studioActiveToolLayout and navbar rightSectionNode prop (#5749) c7086717ac
Per-Kristian Nordnes chore: add missing types packages (#5751) 656bec2395
Ash fix(core): add @types/lodash (#5753) 59f8afd952
Cody Olsen fix(structure): allow sanity.previewUrlSecret in document lists (#5733) 8fd55c4c80
Bjørge Næss chore(perf): replace references to yarn with pnpm (#5748) 2f777d8737
Binoy Patel chore(deps): upgrade husky@9 (#5744) 8f3c44c369
Binoy Patel test(e2e): fix e2e test caching issue (#5763) 6caf80314f
Bjørge Næss fix(migrate): throw if attempting to iterate over documents producer (#5758) 928f04d3ab
Bjørge Næss fix(ci): use pnpm for package releases (#5746) 4dedf3b499
Binoy Patel test(migration) add tests for normalizeMigrationDefinition (#5565) c4baaab7fb
Pedro Bonamin fix(pte): PTE modal seems to re-render on validation state change due to tooltip disabled change (#5766) c24e4d9a96
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.9.1 (#5773) b7a3f13628
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.3.1 (#5770) ec1cc0fa43
renovate[bot] fix(deps): update dependency @sanity/client to ^6.13.3 (#5772) 79ef8c39c1
Binoy Patel chore(test): fix linting and type errors (#5775) 67ef6318f6
renovate[bot] chore(deps): update dependency @sanity/ui to ^2.0.3 (#5776) 409edb1be0
Sindre Gulseth fix: update ndjson specification url (#5780) 15b9e79bfa
Binoy Patel chore(deps): bump @sanity/tsdoc to 1.0.0-alpha.42 (#5765) 86bf2e9446
Pedro Bonamin fix(core): update featuresEnabled when switching projects (#5787) 32d79a23a6
Per-Kristian Nordnes chore: upgrade @playwright/test to latest (#5792) 84a6015b01
Binoy Patel test(migrate): update types for test to better match usage (#5781) 15c3bc1a5d
Per-Kristian Nordnes refactor(core/inputs): report focusPath on text spans ending with .text (#5786) 3941d86d23
Pedro Bonamin feat(core): rename useMentionOptions to useUserListWithPermission and move to core (#5778) 5da8891480
Per-Kristian Nordnes fix(core/inputs): fix issues with calling onPathFocus for PT-input (#5794) 0f114b1fe9
Bjørge Næss chore: use workspace protocol for internal dependencies 61eee1fca3
Bjørge Næss chore(workspace): use sanity dependency from workspace 0693a241f9
Bjørge Næss chore(deps): hoist sanity workspace package b57830c5ea
Bjørge Næss chore(test): use SanityClient type from @sanity/client bfa53c965d
Bjørge Næss fix(ci): run e2e-pte tests in the correct folder e2f26c424c
Nina Andal Aarvik fix(core): bring back subtitle in workspace list view (#5788) 2202e3c6ec
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#5798) 6d4090e24e
Espen Hovlandsdal fix(structure): intent menu item nodes not rendering (#5728) 613e1dd8c4
Ash fix(ci): setup pnpm (#5800) 83630cfb60
Ash fix(ci): remove pnpm reference from setup-node step (#5801) 19c0e86f26

v3.29.1

2 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

  npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

  npm install sanity@latest

🐛 Notable bugfixes

  • Pins a dependency that was causing an infinite loop (Maximum call stack size exceeded)

📓 Full changelog

Author Message Commit
Espen Hovlandsdal fix: pin get-random-values-esm to 1.0.0 8b09226

v3.29.0

2 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

  npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

  npm install sanity@latest

🐛 Notable bugfixes

  • Fixes an issue where the alert messages for published or deleted documents sometimes displayed incorrect titles
  • Fixes a comments-related error dialog from inadvertently showing up to users
  • Removes layout shift when loading document locations when the Presentation tool is used (#5702)
  • Fixes a bug that hid unpublished documents in "Documents on this page" in the Presentation tool (#5702)
  • Fixes a bug that caused the document pane to stay open in the Presentation tool (#5702)

Other features

  • Adds support for importing system documents via --allow-system-documents for dataset imports
  • Adds support for parameterized templates in the Presentation tool (#5694)

📓 Full changelog

Author Message Commit
Pedro Bonamin fix(core): update PortableTextInput doc reference (#5688) 266499065
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.8.0 (#5694) e725a3c1f
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.2.0 (#5693) 9373ce65f
renovate[bot] chore(deps): update dependency @sanity/ui to ^2.0.2 (#5698) bb0b63129
renovate[bot] chore(lockfile): update dependency @sanity/assist to v1.2.16 (#5696) 72bc6944e
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.8.1 (#5699) d645d37c0
Espen Hovlandsdal fix(comments): catch and suppress errors from comments upsell (#5700) fbaffd221
renovate[bot] fix(deps): update dependency @sanity/client to ^6.12.4 (#5701) f85396f43
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.8.2 (#5702) c23ccb4cc
Simeon Griggs chore: rename "schemas" to the more correct plural "schemaTypes" (#5513) 2eaffd378
Fred Carlsen chore: apply auto eslint fixes with lint-staged (#5705) 40c9b4f7b
Binoy Patel chore(dev): remove react import 9aabbb02d
Bjørge Næss use jsx: 'automatic' for dev server a2f505bb3
Bjørge Næss chore(deps): upgrade eslint tooling 95890c6eb
Bjørge Næss fix(eslint): add rules to enforce consistent type imports and import sort orders 1ec2c3929
Bjørge Næss chore(eslint): set @typescript-eslint/no-explicit-any as warn instead of error e01c101a8
Bjørge Næss chore: autofix eslint errors after config change b14622ed4
Bjørge Næss fix(structure): add workaround for circular import issue causing resolveIntent tests to fail c2e60176a
Bjørge Næss chore: exclude packages with type-only imports from depcheck 8fea4a073
Bjørge Næss chore(sanity): preserve order of side-effectsy imports 08e83dd6c
Bjørge Næss chore(test-studio): reorganize comments & imports in test schema 7ca741cbf
Bjørge Næss chore: manually fix remaining non-autofixable eslint issues 5a65b7bc0
Bjørge Næss chore(eslint): extend react/jsx-runtime config 5eb87553c
Bjørge Næss chore: remove remaining react imports ff4c3bb06
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.2.2 (#5718) 117834efb
Bjørge Næss fix(cli) let cli tests run with robot tokens (#5715) 04c30fbd5
Binoy Patel test(core): adds e2e tests for date and datetime inputs (#5681) 66949452b
radhe feat(backup): add new command dataset backup for server-side backups (#5571) f04c76eb7
radhe feat(CLI): in sanity dataset import cmd, add --allow-system-documents to explicitly permit system document import, which should be ignore otherwise (#5689) fa9f924f3
ecospark[bot] chore(deps): dedupe yarn.lock (#5720) 2518ac43a
Nina Andal Aarvik fix(structure): use useDocumentTitle hook for toast message (#5719) 51ed18d28
Rupert Dunk feat(comments): add optional intent link to comments (#5576) 27bf5f98d
Espen Hovlandsdal refactor(comments): use journey endpoint for comments upsell (#5721) b999da053
Drew Lyton feat(telemetry): add telemetry for Trial Dialogs (#5643) ad971f8ae
Rico Kahler build: release automation (#5722) d024b09d3

v3.28.0

2 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Dry run content migrations from a local dataset file

You can now dry run content migration jobs against a local dataset export file (for example, a production.tar.gz file that you have exported):

sanity migration run my-content-migration --from-file=production.tar.gz

Note: The --from-file flag only works with dry runs, in other words, you won't be able to use is with the --no-dry-run flag.

Learn more about Schema Change Management in our documentation.

Other features

  • Timestamps in comments display in the format of the current Sanity Studio locale.
  • Improvements to migration reporting and refinements to messaging and text during migration commands.
  • Unattended mode in CLI will respect plans and coupons, and defaults to plans.
  • Document titles now display with balanced line breaks (text-wrap: pretty).
  • Comments feature is now discoverable for all users on a non-paid plan, with UI to make plan upgrade easier.

🐛 Notable bugfixes

  • Fixes an issue where the Vision tool might crash when pasting a query URL.
  • Styling fixes for labels and columnar objects in the studio.
  • Icon display defaults in S.documentTypeList() now match those in other document lists.

📓 Full changelog

Author Message Commit
ecospark[bot] chore(deps): dedupe yarn.lock (#5615) 1527a9dbb8
renovate[bot] fix(deps): update dependency @sanity/client to ^6.12.3 (#5623) 5116ee003e
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.7.3 (#5622) c04afbc055
renovate[bot] chore(lockfile): update dependency sanity-plugin-mux-input to v2.2.4 (#5624) 569784746d
renovate[bot] chore(deps): update dependency express to ^4.18.2 (#5629) 005042596b
Cody Olsen fix: remove __unstable_focusRing unknown forwarded prop warning (#5621) 6c87bea0c9
renovate[bot] chore(deps): update thollander/actions-comment-pull-request digest to 1d3973d (#5632) 56bf76ed94
renovate[bot] chore(deps): update tiryoh/gha-jobid-action action to v1 (#5633) 359b4cbf2c
Robin Pyon fix: only fully collapse PTE toolbars in 'root' FormBuilder instances (#5547) e219e2a689
Knut Melvær docs(create-sanity): update README.md 6fa1750edc
renovate[bot] chore(deps): update dependency turbo to ^1.12.2 (#5635) f948e7dbcc
Rune Botten chore: remove outdated beta docs URLs (#5636) 4d06ae843d
renovate[bot] chore(deps): update dependency is-hotkey to ^0.2.0 (#5634) 5a49de6e91
Rune Botten fix(cli): update migration run usage text (#5637) 0bae465a44
Binoy Patel fix(migration): shows better error message when running migration list (#5625) 9c2db955f8
Simeon Griggs feat: apply text balance to document titles (#5641) 4e2507b078
renovate[bot] chore(deps): update dependency framer-motion to v11 (#5649) e573c511e9
renovate[bot] chore(deps): update dessant/lock-threads action to v5 (#5650) 0e05e77cbd
renovate[bot] chore(deps): update peter-evans/create-pull-request action to v6 (#5651) 5b1d51cf7e
Indrek Kärner feat(cli): prompt to use default plan when wrong coupon or plan 8e202c74be
Binoy Patel chore(deps): update dependency depcheck to ^1.4.7 (#5631) 03c65f635d
Ash feat(cli): improve reporting when dry running from export (#5609) b8eefc6c68
ecospark[bot] chore(deps): dedupe yarn.lock (#5658) 93a05b1b6b
Cody Olsen fix: regression caused by #5440 (#5657) 0af205cbc3
Espen Hovlandsdal refactor(cli): clean up esbuild on completed migration list operation d17269eaed
Espen Hovlandsdal refactor(migration): sort imports cc9e473294
Espen Hovlandsdal fix(migration): make sanity migration list also include file-only migrations c6745ab292
Espen Hovlandsdal refactor(migration): use chalk from context instead of importing it 471e491cfc
Espen Hovlandsdal refactor(migration): reuse resolve migration logic in run command 063f8ebaeb
Espen Hovlandsdal refactor(migration): move migration resolve functions to util folder a9606b8e60
Ash fix(form): preserve intrinsic block size of field labels (#5639) 08f669449c
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.7.4 (#5671) 55a54b5420
Nina Andal Aarvik fix(src): add document title to publosh/unpublish success message in toast (#5605) 0cf377270e
Nina Andal Aarvik fix(core): fix aligning of columnar objects/fieldsets (#5627) 851b62d0ab
Binoy Patel fix(perf): fixes build and deploy issues with perf studio (#5646) d17f722fd9
Binoy Patel chore(migration): fixes help copy on migration create command (#5663) bb3fb8f969
Robin Pyon docs(core): update components.logo deprecation note to correctly point to workspace.icons (#5677) bfa8e54c7b
Bjørge Næss feat(migration): (re)introduce --from-export (#5672) 7332a9f859
Bjørge Næss fix(migrate): submit mutations with visibility=async (#5675) 0eda4a7e56
Binoy Patel fix(migration): fixes an issue where migration command would error sometimes (#5678) 805745f9e1
cngonzalez fix: add icon display as default to documentTypeList (#5644) 40b3d5035a
ecospark[bot] chore(deps): dedupe yarn.lock (#5674) b0a8248744
Nina Andal Aarvik fix(core): adding accessibility labels to pte objects (#5652) 3d6ed071a0
Ash fix(cli): respect unattended mode (#5659) 0e0fd1fab6
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.7.6 (#5682) 8f0e9114ec
Rostislav Melkumyan fix(studio): center studio nav (#5608) d1aecb5683
Espen Hovlandsdal refactor(comments): unprefix namespaced i18n comment resources 767ef22dc0
Espen Hovlandsdal refactor(comments): clarify what "feedback" refers to in i18n comments f0ad7392c2
Espen Hovlandsdal fix(comments): use correct apostroph in onboarding popover 07e03172e2
Espen Hovlandsdal refactor(comments): simplify usage 2f8bbe17f6
Espen Hovlandsdal refactor(comments): allow specifying location of "you" in reactions story 3c48b0d32a
Espen Hovlandsdal refactor(comments): allow for more users in reactions workshop 60b54c2be1
Espen Hovlandsdal refactor(comments): use list formatter, group reactions resources 8068c11c5c
Espen Hovlandsdal refactor(comments): avoid using internal document inspector name 01e499841f
Espen Hovlandsdal refactor(comments): align prop name for field title c914385789
Espen Hovlandsdal refactor(comments): simplify "add comment to field" resources 765130fa07
Espen Hovlandsdal refactor(comments): replace useTimeAgo with useRelativeTime hook a86235dbc6
Espen Hovlandsdal refactor(comments): sort imports 016342f6c0
Espen Hovlandsdal fix(comments): use locale-aware date formatting d7fbcd8912
Espen Hovlandsdal refactor(comments): clarify field button resources, remove unused resource e73b32ccec
Espen Hovlandsdal refactor(comments): group comment input resources under compose cc31d216bf
Espen Hovlandsdal refactor(comments): sort imports 12d355ed6a
Espen Hovlandsdal fix(comments): translate input placeholder e93633c17b
Espen Hovlandsdal refactor(comments): group + clarify purpose of mention resources 67f35732f6
Espen Hovlandsdal refactor(comments): colocate more compose resources 7492d72f63
Espen Hovlandsdal refactor(comments): group status filter resources 09877bf5a7
Espen Hovlandsdal refactor(comments): colocate "go to.." buttons under list item 904ad29708
Espen Hovlandsdal refactor(comments): rename resources a909949bef
Espen Hovlandsdal refactor(comments): sort imports 1302bc426f
Espen Hovlandsdal fix(comments): remove stray t prop in cloning causing warnings a89f5d327d
Espen Hovlandsdal fix(comments): improve text wrapping logic inside of user list 6317b49d23
Bjørge Næss feat(migrate): use autoGenerateKeys=true when submitting mutations (#5685) 5ec6a22726
Binoy Patel chore(cli): add schema command to help list (#5676) 3d0f7ee26c
Espen Hovlandsdal refactor(vision): sort imports 3191018600
Espen Hovlandsdal fix(vision): explicitly allow v1 as valid API version 175ece0d0c
Espen Hovlandsdal fix(vision): ensure query/params from localStorage are strings d1dd5379fd
Espen Hovlandsdal fix(vision): persist raw (string) value of params to localStorage c13868a007
Espen Hovlandsdal refactor(vision): sort state attributes alphabetically cb38c6401f
Espen Hovlandsdal fix(vision): provide error boundary with cache clear on error 3a8a987b0b
Cody Olsen chore: add presentation test studio (#5683) 082805101f
Pedro Bonamin feat(comments): adds read-only state to comments. (#5570) fab7cecedb