Releases: sanity-io/sanity
v3.46.1
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 a bug causing Structure Tool to crash when attempting to read the
scrollTop
of a nonexistent element.
📓 Full changelog
Author | Message | Commit |
---|---|---|
Ash | fix(sanity): ignore sticky overlay regions with a falsey DOM node (#6910) | 4f1be6c |
v3.46.0
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 projects with a large amount of users would sometimes get a request error when loading user info.
- Form input components now have their own error boundaries, limiting crashes to a field level on a document form, instead of taking down the entire Structure Tool.
- Fixes React 19 causing the Portable Text Editor (PTE) to crash in some scenarios.
- Fixes an issue where searching for text within fields of type
text
(notstring
) would not yield results. - Fixes an issue when dragging PTE blocks.
- Fixes a visual regression in PTE fullscreen mode where the Drop to upload files message would be positioned incorrectly.
- Fixes a regression where pasting from Word would insert an image version of the text being pasted instead of the actual text.
📓 Full changelog
Author | Message | Commit |
---|---|---|
Christian Grøngaard | chore(core): abstract getSchemaTypeIcon (#6844) |
6693c54 |
Rostislav Melkumyan | feat: add integration when creating a new project through cli (#6639) | ac214b8 |
jordanl17 | fix(structure): fixing issue with shift mutli select of documents (#6857) | 15861f4 |
Espen Hovlandsdal | fix(core): chunk user loading into batches of max 400 items (#6858) | 4531750 |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6849) | 73861ef |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.9.0 (#6850) | 4b6d33f |
renovate[bot] | chore(lockfile): update dependency @sanity/bifur-client to v0.4.1 (#6860) | c1c2ab2 |
renovate[bot] | fix(deps): Update babel monorepo (#6861) | 4fa813d |
renovate[bot] | chore(lockfile): update dependency @sanity/icons to v3.2.0 (#6864) | 513601c |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.3.1 (#6851) | 74d4e67 |
renovate[bot] | chore(deps): update dependency @sanity/icons to ^3.2.0 (#6863) | c03c346 |
renovate[bot] | fix(deps): Update dev-non-major (#6862) | 74f8080 |
Carolina Gonzalez | feat: add hasSanityPackageInImportMap (#6832) | 8ea7d8f |
Cody Olsen | feat: add error boundary for form input components (#6869) | 23c42ae |
Cody Olsen | fix: portable text editor crash on React 19 (#6870) | 293e7d1 |
Cody Olsen | refactor: replace useForwardedRef with useImperativeHandle (#6830) |
23bac62 |
renovate[bot] | fix(deps): update dependency get-it to ^8.6.0 (#6884) | 9f5e29f |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6892) | 5c01ef6 |
Cody Olsen | refactor: lift useCallback out of useAsync so it can be compiled (#6873) |
08f79a4 |
Espen Hovlandsdal | fix(search): include text type fields in search queries (#6895) |
5e505ac |
RitaDias | test(e2e): update timeouts for opening popovers (#6871) | 1befff1 |
Pedro Bonamin | fix(scheduled-publishing): export EditScheduleForm from core (#6872) | 43711d7 |
Rico Kahler | feat: add CLI options to enable auto-updating studios (#6514) | 5077c8b |
Binoy Patel | feat(cli): show prompt if local version doesn't match remote (#6707) | 50f1e54 |
Binoy Patel | fix(cli): allow using auto-updates in unattended mode (#6897) | 61f1f8c |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6899) | 07454a1 |
Christian Grøngaard | fix(form): avoid spreading key prop (#6887) | 51eb56a |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.20.0 (#6886) | 124dc22 |
Fred Carlsen | fix(core): fix dragging existing blocks in pte (#6867) | 0d92883 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.9.3 (#6903) | 7f18d45 |
renovate[bot] | chore(deps): update dependency turbo to ^1.13.4 (#6905) | 576dd3f |
renovate[bot] | chore(deps): update dependency @vitejs/plugin-react to ^4.3.1 (#6904) | 24255b4 |
Cody Olsen | fix: regression causing ESM build errors (#6909) | 0b92a8e |
renovate[bot] | chore(deps): update dependency esbuild to ^0.21.5 (#6908) | 69496d1 |
v3.45.0
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
- The studio initialization command now allows you to specify a package manager with a flag in a single line. This was previously only possible to do via an interactive CLI prompt. You can now skip this step:
npm create sanity@latest --package-manager pnpm
- The
dryRun
parameter is now available in the context provided for thedefineMigration
command available fromsanity/migrate
. This allows developers to write scripts that skip certain actions (for example, mutating external data stores) if it is only a dry run. An example might look like this:
import { defineMigration } from "sanity/migrate"
/**
* Run this migration with
* `npx sanity migration run my-migration`
*/
export default defineMigration({
title: "my-migration",
// pass whether the migration is a dry-run as context
async *migrate(documents, { dryRun }) {
for await (const document of documents()) {
if(dryRun) {
// Only log the effect
console.log(`Something happened`)
} else {
// Execute the side-effect
await thirdPartyRequest()
}
// ... do something with the document, maybe yield patches
}
},
})
🐛 Notable bugfixes
- Fixes an issue where image/file assets would not be listed in Structure lists, even if specified to do so.
📓 Full changelog
Author | Message | Commit |
---|---|---|
Espen Hovlandsdal | fix(structure): allow searching/listing ignored types when explicitly requested (#6771) | 5b66664 |
Cody Olsen | chore: setup a separate compiled studio, bump to 19rc (#6808) | 25be802 |
Christian Grøngaard | fix(types): correct ArrayOptions (#6737) |
39da169 |
Ash | fix(sanity): align Actions API usage with correct types | f07d7ae |
Ash | chore(deps): update @sanity/client |
f9f2356 |
RitaDias | test(core): update e2e test for toolbar in PTE to be more reliable (#6811) | cd901d1 |
Cody Olsen | fix: handle circular import issue in a compiler friendly way (#6812) | 8ac809f |
renovate[bot] | fix(deps): Update dev-non-major (#6809) | a9662ec |
Binoy Patel | test(core): update snapshot for failing test (#6818) | 52e4cfa |
Christian Grøngaard | chore(page-building): use first-class icons instead of media (#6752) | dd7956a |
Noah Gentile | feat(migrate): add dryRun to context (#6816) |
104162a |
Cody Olsen | fix: use useImperativeHandle instead of mutating a parent ref (#6813) |
13158e9 |
ecospark[bot] | chore(lint): fix linter issues 🤖 ✨ (#6825) | cec43ad |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.13 (#6823) | d0e5e95 |
Cody Olsen | fix: regression in #6813 (#6827) | 8ac0812 |
RitaDias | test(test): update e2e pte toolbar test (#6822) | 4487680 |
RitaDias | test(sanity): update hydrate test (#6821) | 0cefc21 |
Binoy Patel | feat(cli): allow the ability to specify package manager in init command (#6820) | f1ef0a6 |
Cody Olsen | fix: call dynamic hooks in a way that can be compiled (#6814) | 6e65eed |
renovate[bot] | chore(lockfile): update dependency prettier to v3.3.0 (#6834) | f279329 |
ecospark[bot] | chore(lint): fix linter issues 🤖 ✨ (#6836) | 61fd6bb |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.19 (#6837) | 700879a |
shur | feat: move up call to PATCH metadata after bootstrapping template files (#6828) | 7d47a51 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.70 (#6838) | c794957 |
renovate[bot] | fix(deps): Update dev-non-major (#6841) | 48022c1 |
renovate[bot] | chore(deps): update dependency @types/react to ^18.3.3 (#6840) | 0ce52e9 |
renovate[bot] | chore(lockfile): update dependency @sanity/import to v3.37.5 (#6842) | df67883 |
jordanl17 | feat(structure): sheet list table columns selectors style edx-1435 (#6839) | 6d53c4c |
Christian Grøngaard | refactor(core): rename InsertMenu->InsertMenuGroups (#6845) | e1fd6bf |
v3.44.0
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
Customizing restore action now works
This releases fixes a bug preventing developers removing or customising the "restore" document action using the document.actions
Studio configuration property.
Studio will now respect changes you make to the "restore" document action, but please note that you must set the action
property to "restore"
on your DocumentActionComponent
. The action
property allows Studio to identify the restore action.
Example
import {RocketIcon} from '@sanity/icons'
import {type DocumentActionComponent} from 'sanity'
export const TestCustomRestoreAction: (
action: DocumentActionComponent,
) => DocumentActionComponent = (restoreAction) => {
const action: DocumentActionComponent = (props) => ({
...restoreAction(props),
label: 'Custom restore',
tone: 'positive',
icon: RocketIcon,
})
+ action.action = 'restore'
return action
}
Other bugfixes
- Fixes an issue that could under certain conditions cause a circular structure to enter an infinite loop. Shoutout to @sarahsvedenborg and @stian-svedenborg for identifying the issue and proposing a fix.
- Resolves a type error caused by the missing
preview
property inDocumentComponents
. - Fixes an issue causing cross dataset reference search not returning hits in certain cases.
- Improves text selection of full screen Portable Text editors (PTE).
- Fixes issue where nested fullscreen PTEs were unable to open the block style dropdown.
- Fixes issue causing EXIF metadata not being included when uplading multiple images through drag + drop. Thanks @xuzuodong!
- Fixes bugs related to when the PTE is using a Reference input directly as the annotation type (not wrapped in a object type).
- Add automatically resolving of some validation errors in the PTE.
- Fixes bug causing "Untitled" to appear as title for array and object fields, even when explicitly passing undefined as title to renderDefault().
📓 Full changelog
Author | Message | Commit |
---|---|---|
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6731) | 1587dfe |
Pedro Bonamin | fix(core): add retry to image observer and loading state (#6709) | 0f51f9d |
Ash | feat(sanity): use optimistic locking when publishing documents (#6711) | 6fe8c69 |
jordanl17 | EDX-1352: batch select sheet list documents (#6713) | 10b596a |
Michael | fix(cli): graphql api flag is respected during validation (#6615) | c739eea |
renovate[bot] | chore(lockfile): update dependency @sanity/telemetry to v0.7.8 (#6732) | 4307a3c |
renovate[bot] | chore(lockfile): update dependency i18next to v23.11.5 (#6733) | 922235f |
Per-Kristian Nordnes | refactor(portable-text-editor): automatically resolve some validation errors (#6705) | 6062a9a |
Per-Kristian Nordnes | fix(core/form): prohibit focus and unset on root input (#6706) | 4a2f141 |
Cody Olsen | chore: setup CI check for react compiler errors (#6730) | 9c7175f |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6734) | fe807a8 |
Hash Brown | fix: EXIF data on Image asset not included when uploading multiple images to array type, or via drag-and-drop (#6708) | 222418a |
Robin Pyon | fix(pte): improve text selection in fullscreen inputs (#6642) | 6163d96 |
renovate[bot] | fix(deps): Update dev-non-major (#6719) | dadfcfa |
Rune Botten | fix(core): avoid attribute names being scanned as symbols | 23f6c67 |
Cody Olsen | chore: change the action to use warnings and only fail on new ones (#6740) | ebef5cb |
renovate[bot] | chore(lockfile): update dependency @sanity/telemetry to v0.7.8 (#6743) | a230bbf |
renovate[bot] | chore(deps): update dependency @vitejs/plugin-react to ^4.3.0 (#6744) | 7551264 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.18 (#6746) | 913740d |
renovate[bot] | chore(lockfile): update dependency @sanity/import to v3.37.4 (#6749) | e5b04d1 |
renovate[bot] | chore(lockfile): update dependency @sanity/export to v3.38.1 (#6748) | 0dbf0c5 |
renovate[bot] | fix(deps): Update dev-non-major (#6745) | 7c44121 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.65 (#6747) | 79a79a3 |
Cody Olsen | fix: handle React Compiler errors (#6750) | 403f485 |
Ash | feat(sanity): use Actions API when restoring drafts | 47e5420 |
Ash | feat(sanity): add timeline test ids | 038a1a2 |
Ash | test(e2e): add test for restore document action |
e9b967f |
Christian Grøngaard | chore: add initial page-building test studio (#6735) | cca14f3 |
Bjørge Næss | fix(core): remove id from patch when using server actions (#6751) | 7b90cad |
Ash | fix(sanity): respect Studio configuration when rendering "restore" document action (#6637) | 6ba71f2 |
Binoy Patel | chore(ci): set a shorter cache on manifest (#6660) | 069dd31 |
renovate[bot] | chore(lockfile): update dependency i18next to v23.11.5 (#6755) | 6043919 |
renovate[bot] | chore(lockfile): update dependency react-barcode to v1.5.3 (#6756) | 89c86c6 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.12 (#6757) | 9025619 |
renovate[bot] | fix(deps): update dependency get-it to ^8.5.0 (#6758) | 6b98663 |
renovate[bot] | fix(deps): Update dev-non-major (#6759) | 5893609 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.67 (#6761) | 543d755 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.18.3 (#6762) | 3e1bc3e |
RitaDias | fix(core): unable to open block style select when in nested PTEs in fullscreen (#6738) | 9f7ab8b |
Per-Kristian Nordnes | test(portable-text-editor): add test for empty array value (#6764) | a13e22c |
Christian Grøngaard | chore(page-building): configure build outputs (#6768) | 076f9b8 |
Bjørge Næss | fix(core): fix issue with nested preview fields not being included in legacy text search (#6767) | 044ac39 |
jordanl17 | feat(structure): sheet list prototype (#6741) | f0670bf |
Espen Hovlandsdal | chore(deps): update dependency @sanity/bifur-client to ^0.4.0 (#6645) | a79ea02 |
Simeon Griggs | chore: correct grammar for open-source (#6766) | f8ee0f2 |
Rico Kahler | fix: resolve type error by inlining DocumentComponents definition (#6703) | 10e1bc3 |
Herman Wikner | fix(core): reactions menu open issue (#6765) | 3f52b83 |
Bjørge Næss | fix(form): fix issue making circular structures sometimes causing infinite loop (#6699) | 7efdeeb |
Per-Kristian Nordnes | fix(portable-text-editor): add autoresolving validations and fix normalization issues (#6770) | c458289 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.19.0 (#6781) | 1961904 |
Bjørge Næss | fix(form): properly support passing undefined as title to renderDefault() for array and object fields (#6774) |
f341c2d |
Binoy Patel | feat: store all versions in the manifest (#6769) | 1fcc0f2 |
renovate[bot] | chore(lockfile): update dependency @portabletext/react to v3.1.0 (#6788) | 02fa562 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.10 (#6786) | 517a1a9 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.13 (#6787) | 43f1766 |
renovate[bot] | fix(deps): Update dev-non-major (#6789) | 772d464 |
renovate[bot] | chore(deps): update linters (#6790) | 674a6cb |
renovate[bot] | chore(deps): update dependency @sanity/visual-editing to v2 (#6792) | 8665a16 |
renovate[bot] | chore(lockfile): update dependency @sanity/logos to v2.1.12 (#6793) | 9d7c67d |
Christian Grøngaard | fix(form): avoid spreading key prop (#6776) | eeba7f2 |
renovate[bot] | chore(lockfile): update dependency @sanity/logos to v2.1.12 (#6794) | 7d0d86a |
renovate[bot] | chore(lockfile): update dependency @sanity/telemetry to v0.7.9 (#6795) | be1065f |
Cody Olsen | chore(deps): bump eslint-plugin-react-compiler (#6791) | ea7db00 |
renovate[bot] | chore(deps): update dependency @sanity/icons to v3 (#6797) | 63e3c32 |
Cody Olsen | chore(react-compiler): up the max warnings limit (#6801) | aa95805 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.11 (#6799) | 42fd4bf |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.14 (#6800) | faa5bcf |
renovate[bot] | fix(deps): Update dev-non-major (#6798) | 6640ad4 |
Bjørge Næss | refactor(core): stabilize studio usage of actions API (#6783) | 112b66c |
v3.43.0
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.
✨ Highlights
- The
sanity init
command for Next.js-embedded Studios is updated to installnext-sanity v9
andnext v14
as per best practices. - Adds support for
// @sanity-typegen-ignore
comments that will ignore certain queries from type generation (thanks @largis21!).
🐛 Notable Bugfixes
- Fixes an issue where the scheduled publishing tool is displayed as the only available plugin when no other plugins are added.
- Adds memoization to minimize unnecessary calls to initial value functions, improving performance.
- Removes a circular reference to
usePaneRouter
that caused build warnings and potential execution order issues. - Fixes bugs related to the Portable Text Input when using a Reference input directly as the annotation type. This change prohibits focus and unset on the root input, preventing abrupt modal closures and ensuring proper cleanup and function execution.
📓 Full changelog
Author | Message | Commit |
---|---|---|
renovate[bot] | fix(deps): Update dev-non-major (#6659) | ab0f97d |
Pedro Bonamin | fix(scheduled-publishing): don't include it if it's the only plugin available (#6530) | b2fa80b |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.15 (#6666) | 30c1f4c |
renovate[bot] | fix(deps): update dependency groq-js to ^1.9.0 (#6655) | 71a0758 |
renovate[bot] | chore(lockfile): update dependency @sanity/export to v3.38.0 (#6654) | 1f6b8a8 |
Ash | feat(sanity): use actions API when discarding drafts | c1755d1 |
Ash | feat(sanity): add test ids to confirm dialog buttons | 73d51cb |
Ash | test(e2e): add tests for discardChanges document action |
33564a2 |
renovate[bot] | chore(deps): update dependency framer-motion to v11.2.0 (#6668) | 673ba0c |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.3 (#6667) | 71e6319 |
renovate[bot] | chore(deps): update dependency esbuild to ^0.21.2 (#6656) | fc79956 |
renovate[bot] | chore(deps): update dependency lerna to ^8.1.3 (#6657) | 7960627 |
renovate[bot] | fix(deps): Update dev-non-major (#6673) | 409d7df |
Carolina Gonzalez | feat: fetch feature toggle to enable serverside document actions (#6418) | 8610fc6 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.18.2 (#6674) | 4da4ae5 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.8 (#6675) | e8a40e2 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.55 (#6672) | 7b5bbe7 |
renovate[bot] | fix(deps): update dependency get-it to ^8.4.30 (#6676) | 0715793 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.4 (#6681) | f97c348 |
renovate[bot] | fix(deps): Update dev-non-major (#6680) | ab4a9e8 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.5 (#6687) | a61a679 |
renovate[bot] | chore(deps): update dependency framer-motion to v11.2.2 (#6689) | e27e063 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.9 (#6691) | 3aa444f |
renovate[bot] | chore(deps): update dependency recast to ^0.23.7 (#6658) | 3912e82 |
renovate[bot] | fix(deps): Update dev-non-major (#6690) | ec179d0 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.16 (#6692) | 80d4620 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.59 (#6693) | 1164a6b |
Robin Pyon | feat(pte): add initialActive prop to PortableTextInput (#6638) |
5add977 |
Pedro Bonamin | fix(schedule-publishing): avoid polling in upsell mode (#6670) | 87889d1 |
Cody Olsen | chore: setup dev:next-studio to use react v19 (#6685) |
61d1bc3 |
renovate[bot] | chore(deps): update dependency framer-motion to v11.2.3 (#6696) | e6b4fdc |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.10 (#6701) | af0eee4 |
renovate[bot] | fix(deps): Update dev-non-major (#6700) | 77785ff |
Pedro Bonamin | feat(structure): add sheet list table view. (#6647) | c5916d4 |
Ash | feat(sanity): memoize initial value resolver (#6614) | 39bab8a |
Cody Olsen | fix: update @sanity/presentation and remove deprecated internal exports no longer in use (#6694) |
69246c1 |
Cody Olsen | fix: remove circular reference to usePaneRouter (#6664) |
d66def2 |
jordanl17 | feat(structure): Sheet View columns (#6661) | d8a37a8 |
Christian Grøngaard | fix: pin framer-motion to an earlier version (#6717) | 6c2aea2 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.11 (#6720) | 61cc315 |
Pedro Bonamin | fix(tasks): reduce tasks sidebar zoffset (#6718) | 5ab0819 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.17 (#6722) | babfd2d |
Pedro Bonamin | fix(tasks): hide footer button until the active document is set (#6695) | 93c7d66 |
jordanl17 | fix(structure): fixing incorrect way of setting col visibility (#6716) | 06f7902 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.8 (#6724) | 17ca815 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.62 (#6723) | c6c1724 |
Cody Olsen | feat: upgrade sanity init for Next.js to next-sanity v9 (#6644) |
f48e38b |
largis21 | Add support for @sanity-typegen-ignore to ignore queries (#6578) | efe8bca |
Sindre Gulseth | chore(cli): symlink in local packages for the installed sanity cli (#6728) | c4b8558 |
Bjørge Næss | fix(i18n): remove extraneous curly brace (#6726) | 74f2fd5 |
Sindre Gulseth | feat(typegen): add optout for prettier formatting (#6702) | ac5103a |
v3.42.1
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.
🐛 Notable bugfixes
- Fixes regression introduced in v3.42.0 that crashes the document list pane in Presentation Tool
📓 Full changelog
Author | Message | Commit |
---|---|---|
Cody Olsen | fix: regression crashing the document list pane in presentation (#6684) | 7ae3afd |
v3.42.0
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.
✨ Highlights
Save Vision Query Results
You can now conveniently save the results of your Sanity Vision queries as JSON or CSV files. Simply run your query and click on the new "save result as" buttons in the bottom right corner.
Custom Components with Intent Handling in Structure Builder
Custom components included in the Structure Builder (like S.component(MyCustomComponent)
) can now handle intents. This is especially useful for routing to custom components from global search results or other links. You can achieve this by using the canHandleIntent
parameter.
S.listItem()
.id('translate')
.title('Translate Test')
.child(S.component(TranslateExample).id('example')
.canHandleIntent((intent, params, context) => {
console.log(intent, params, context)
return true
}
))
🐛 Notable Bugfixes
- Fixes an issue where Boolean inputs were not always clearly indicated as read-only and disabled.
- Makes the search/filter in the document "Inspect" dialog case-insensitive.
- Prevents inputs within the Portable Text Editor from calling
element.onFocus()
on any opened block or inline-object, thus avoiding unintended modal closures. - Prevents extra work on preview prepare functions, ensuring better performance.
- Fixes miscellaneous bugs and performance issues with Portable Text Editor's block extras and highlight rendering. For example, pointer events are now correctly disabled to avoid unnecessary cursor changes or rendering thrashes.
- Fixes an issue where the document history panel would appear to load indefinitely
📓 Full changelog
Author | Message | Commit |
---|---|---|
jordanl17 | fix(studio): adding tooltip to read-only bool inputs (#6580) | 55153ac |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6607) | 48674b7 |
Carolina Gonzalez | feat: add canHandleIntent to Structure Builder component (#6516) | d3d0c04 |
Espen Hovlandsdal | fix(structure): use case insensitive search for inspect dialog (#6588) | 1dca6db |
Carolina Gonzalez | test(core): await publish action to prevent test flakiness (#6609) | fad1628 |
renovate[bot] | fix(deps): update dependency get-it to ^8.4.29 (#6603) | cc08614 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.18.0 (#6604) | c2b143e |
Rostislav Melkumyan | feat(vision): add "save result as json/csv" buttons (#6158) | 14be9b6 |
Per-Kristian Nordnes | fix(core/form): prevent onFocus for root object paths being called by editing form (#6610) | 516ada5 |
jordanl17 | feat(core, structure) sheet list menu option (#6593) | 724da99 |
Binoy Patel | chore(bundle): remove unnecessary bundles and make root imports index (#6616) | 5f0227c |
Robin Pyon | feat(pte): add hideToolbar and fullscreen props to PortableTextInput (#6621) |
800149f |
Robin Pyon | fix(pte): don't render the PTE block extras container when not in use, disable pointer events on highlights (#6620) | 4c73ded |
Evensix | skip recalling invokePrepare (#6608) | 2729437 |
Bjørge Næss | fix(core): update test snapshots (#6629) | 20b66b1 |
Bjørge Næss | fix(e2e): support headless/headful env var toggle (#6558) | 92260a4 |
Robin Pyon | feat: add icon to BlockStyleDefinition (#6613) | 2e69eee |
Robin Pyon | feat(pte): initial support for renderEditable in portable text inputs (#6627) |
1d0fd3e |
Binoy Patel | chore(ci): add a circleci config to bundle packages (#6446) | f4c7cfe |
renovate[bot] | chore(lockfile): update dependency esbuild to v0.21.2 (#6602) | b63af70 |
Pedro Bonamin | fix(pte): cursor presence causes pte error (#6622) | b13fff4 |
Robin Pyon | feat(pte): expose data-attributes on PTE Text + Object blocks (#6641) | fceff23 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.14 (#6630) | dd5cc7d |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.7 (#6633) | 34b4754 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.53 (#6631) | f58a005 |
Cody Olsen | chore(ci): tweak renovate preset to better align with branch rulesets (#6648) | ef39982 |
renovate[bot] | chore(deps): update dependency styled-components to ^6.1.11 (#6636) | 55ab489 |
Cody Olsen | refactor(renovate): group non major dev deps (#6652) | 1812de6 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.18.1 (#6653) | 083960f |
Binoy Patel | fix(core): fixes issue with history loading indefinitely (#6539) | 52a5308 |
Sindre Gulseth | fix(typegen): move type new line separator into formatter (#6649) | 109a180 |
Sindre Gulseth | chore(schemaExtraction): add a newline to the extracted schema.json (#6650) | 4beb29e |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6662) | c7ad47b |
v3.41.2
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.
🐛 Notable bugfixes
- Resolves a
Maximum update depth exceeded
crash in Presentation Tool.
📓 Full changelog
Author | Message | Commit |
---|---|---|
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.2 (#6632) | 43823f6 |
v3.41.1
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 a regression in Presentation Tool introduced in v3.41.0 that causes it to crash in embedded studios.
📓 Full changelog
Author | Message | Commit |
---|---|---|
Binoy Patel | test(core): fixes flaky test with document publish (#6595) | 2a8375a |
renovate[bot] | chore(deps): update linters (#6590) | 59b8ce8 |
renovate[bot] | chore(deps): update dependency styled-components to ^6.1.10 (#6585) | 5e727e0 |
renovate[bot] | chore(lockfile): update dependency zod to v3.23.7 (#6527) | 571dd56 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599) | d9f9188 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600) | 56a8a79 |
renovate[bot] | chore(lockfile): update dependency @sanity/react-loader to v1.9.17 (#6584) | 0819c40 |
Cody Olsen | fix(presentation): regression causing a crash when in an embedded studio (#6606) | 99dfb60 |
v3.41.0
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.
✨ Highlights
- The Portable Text Editor (PTE) now supports drag-n-dropping + pasting of images and files into
Image
andFile
blocks.
🐛 Notable bugfixes
- Fixes a bug where importing a variable inside an imported file would fail in Typegen.
- Fixes issues in the PTE where tools would show as being active for a selection when only part of the selection used the tool. Now tools will show as active only when all highlighted selections use the tool.
- Fixes an
Attempted import error
related to usingswr
in embedded studios. - Fixes an issue in which listeners would sometimes not close if they were unsubscribed from shortly after opening.
- Fixes an issue in which users were incorrectly seeing the scheduled publishing upsell UI.
- When child within the PTE is created without a
_key
, we now automatically create one for it, avoiding unnecessary warning. - Fixes an issue in tasks in which the UI showed that they were created but the transaction didn't end.
📓 Full changelog
Author | Message | Commit |
---|---|---|
Herman Wikner | feat(comments): add telemetry (#6541) | 2d35256 |
Sindre Gulseth | fix(typegen): pass resolved path instead of the imported path (#6540) | e7ffe93 |
Cody Olsen | fix: use vercelStegaClean util from @vercel/stega (#6544) |
790bc8f |
Pedro Bonamin | fix(pte): preserve block key when pressing enter at start of block (#6521) | 7df5396 |
Ash | fix(sanity): do not order by _updatedAt when relevance ordering is used with Text Search API search strategy (#6537) |
0ede4cf |
Pedro Bonamin | chore(test-studio): bump vercel stega version (#6545) | 96f3841 |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6547) | ad28225 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.16.0 (#6548) | 35b19c2 |
Tommy Petty | chore(i18n): fix imports for useTranslation (#6517) |
869b698 |
jordanl17 | fix(pte): tools are active only when all blocks use the tool (#6524) | 169e5fd |
renovate[bot] | chore(deps): update dependency @sanity/visual-editing to v1.8.17 (#6551) | 24f97ab |
Binoy Patel | chore: package build (#6394) | 5a889fc |
Rico Kahler | fix: remove unconditional external from vite build (#6554) | f1e9546 |
Cody Olsen | fix: inline swr , date-fns-tz and @vvo/tzdb to restore embedded studios (#6553) |
9a50252 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.10 (#6549) | f8f1b47 |
renovate[bot] | chore(deps): update dependency @vercel/stega to v0.1.2 (#6546) | 6a2cdda |
Bjørge Næss | fix(deps): replace hashlru with quicklru (#6557) | d634727 |
Espen Hovlandsdal | chore(deps): update dependency @sanity/client to v6.17.1 (#6561) | 7dd2d84 |
Cody Olsen | fix: remove cleanStegaUnicode helper (#6564) |
2e224d4 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.17.2 (#6567) | 154d90b |
shur | feat: add cliInitializedAt field to project metadata (#6538) | 15486f7 |
Pedro Bonamin | fix(schedule-publishing): update flag used to check scheduledPublishing (#6543) | 57fcbac |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.47 (#6550) | 25cbd4e |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.8.11 (#6573) | b31a151 |
renovate[bot] | chore(deps): update dependency @sanity/visual-editing to v1.8.18 (#6574) | 77654c1 |
Herman Wikner | fix(core): collapsed range decorations (#6568) | 70ab283 |
Pedro Bonamin | chore(scheduled-publishing): update schedule tool upsell layout (#6572) | 295ea72 |
Pedro Bonamin | fix(tasks): update tasks panel z index (#6571) | 3b3125c |
Pedro Bonamin | feat(pte): create new text blocks if needed (#6560) | cadd496 |
RitaDias | refactor(@sanity): remove warning for when child within PTE has no key (#6565) | e1fc2a0 |
Binoy Patel | test(core): add test that only one listener is open when navigating list (#6569) | 161b926 |
renovate[bot] | fix(deps): update dependency get-it to ^8.4.28 (#6576) | 47ef785 |
Pedro Bonamin | fix(tasks): close the form only after the task is created (#6450) | e089eb7 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.1.6 (#6575) | 48321e6 |
Fred Carlsen | feat(form/inputs): add support for image drop+paste in PTE input (#6534) | e964b1e |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.14.0 (#6577) | 0812390 |
renovate[bot] | chore(deps): update dependency vite to ^4.5.3 (#6583) | ed5aca8 |
Carolina Gonzalez | fix: use discard when doc is not published (#6535) | 9c86166 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.15.0 (#6591) | 1d88df6 |
renovate[bot] | chore(deps): update dependency esbuild to ^0.21.0 (#6589) | fada62f |
Pedro Bonamin | fix(pte): insert empty text block after removing void block (#6552) | 379510f |
Binoy Patel | test(core, desk): add tests for keyvalue storage (#6587) | ab94bea |