Skip to content

Releases: sanity-io/sanity

v3.59.1

04 Oct 20:14
Compare
Choose a tag to compare

🐛 Notable bugfixes

  • Fixes a bug that caused the document editor to crash when the default field group is not found.

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.

📓 Full changelog

Author Message Commit
Rico Kahler fix: protect against falsy selectedGroup (#7593) 98f4eb9

v3.59.0

01 Oct 18:31
Compare
Choose a tag to compare

✨ Highlights

Request edit access to Studio

Users with the read-only "Viewer" role can now request edit access to the project, straight from Sanity Studio. Project administrators will be alerted by email and can approve or deny the request from the project management section at sanity.io/manage.

Other improvements

  • Eliminated layout shifts in image fields.

🐛 Notable bugfixes

  • Fixes a few cases of unnecessary loading states appearing in the studio.
  • Fixes an issue causing the command line tool to crash when using Turborepo on Windows (thanks @josemanosalvas!)
  • Fixes an issue where using the Microsoft Word preprocessor from the @sanity/block-tools package outside of a browser would crash (thanks @silvertech-daniel!)
  • Fixes incorrect usage of light mode in image field overlays when dark mode is active.
  • Improves error message when the studio development server is stopped — instead of a generic "dynamic import" error, it will now tell you the development server is stopped.
  • Fixes an issue where pasting into a conditionally read-only field would not work, even if the field returned false for the read-only check.

📓 Full changelog

Author Message Commit
Bjørge Næss chore: cleanup import specifiers etc 8b509f7
Bjørge Næss chore: move dev-aliases into @repo/dev-aliases 2180d0f
Bjørge Næss chore(sanity): load monorepo aliases from '@repo/dev-aliases' 16dfd3d
Bjørge Næss chore(test): convert jest configs to mjs 8938d6e
Bjørge Næss chore(test): move jest config to @repo/test-config/jest 24618f9
Bjørge Næss chore(test): add support for vitest 512e16a
Bjørge Næss chore(ci): run jest tests in a separate workflow 44dee81
Bjørge Næss chore(test): move @sanity/migrate to vitest 3c63eee
Bjørge Næss chore(test): move @sanity/block-tools to vitest 09e86a2
Bjørge Næss chore(test): move @sanity/mutator to vitest 09be44d
Bjørge Næss chore(test): move @sanity/schema to vitest 56b7ee5
Bjørge Næss chore(test): move @sanity/types to vitest 8bf4868
Bjørge Næss chore(test): move @sanity/util to vitest 38eca25
Espen Hovlandsdal chore: enable source maps for package bundles (#7540) 0396ec2
Bjørge Næss chore(cli): remove reliance on node-machine-id (#7545) de9c29b
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#7544) 9848f20
RitaDias chore(form): revert changes in schema that were meant to have been deleted (#7549) 7aed0c0
Bjørge Næss fix(preview): allow null as valid cache/memo value for preview fields (#7551) 7b9b556
Bjørge Næss refactor(store) simplify key value store, add SWR through local storage behavior (#7554) d2ca86d
Bjørge Næss fix(core): emit setting from localStorage immediately upon subscription (#7560) 1e79797
RitaDias chore(sanity): update naming of draft created telemetry event (#7561) ae1c9c2
Jordan Lawrence feat(core): specific error when dev server is stopped (#7476) 7fcf22a
RitaDias chore(form): remove imports from shouldArrayDialogOpen (#7550) bdfd8df
silvertech-daniel fix(block-tools): remove references to implicit globals document and Text (#7532) 306a671
Ash fix(sanity): prevent layout shifts in image input 6b8a76f
Ash feat(sanity): allow image input block size to extend to 30vh 14ebf2c
Ash refactor(sanity): remove redundant drag-related props 8a80ef2
Ash fix(sanity): use correct color scheme in image input overlay df0e18a
Binoy Patel fix(core): fixes an issue with pasting in conditional readonly field (#7564) 2e47715
shur fix: set cliInitializedAt even if project bootstrap fails (#7558) ea186d8
renovate[bot] fix(deps): update dependency @portabletext/editor to ^1.1.2 (#7566) a762c62
Espen Hovlandsdal chore(deps): upgrade moment, drop @types module (#7565) be73a2a
renovate[bot] fix(deps): update dependency @sanity/client to ^6.22.0 (#7522) 7c01a95
Binoy Patel refactor(cli): update projects list command to link to manage (#7568) 85941d2
Drew Lyton feat: add ability to request edit access from viewer role (#7546) 59f4fda

v3.58.0

24 Sep 14:59
Compare
Choose a tag to compare

✨ Highlights

Product announcements

Studio users will now receive notifications about new Sanity features via a floating clickable card in the bottom-left corner of the interface. Clicking the card will open a modal with more details about the feature.

Previously seen product announcements can also be accessed anytime from the new “What’s New” item in the help menu.

Other features

  • The global error UI has been refined so that it is clearer to users.
    • The global error UI now only displays the stack trace in development builds.
    • A Copy error details action has been added to the global error UI and the document list error UI. This allows users to easily share the error stack trace with developers.
    • Please note that these new strings cannot be internationalized, because the global error UI is rendered outside of the locale provider.
  • The Reconnecting toast is no longer displayed if the connection is reestablished within two seconds.

🐛 Notable bugfixes

  • Fixes issues occurring when a draft exist for a live-editable schema.
  • Improves task assignee list performance.
  • Improves Portable Text editor performance.

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.

📓 Full changelog

Author Message Commit
Rico Kahler feat(perf): add new eFPS benchmark suite (#7407) 2de06de
Ryan Bonial Fix: prevent flash of "Untitled" when loading a document w/ preview (#7505) b7f0135
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#7521) 4729e84
Pedro Bonamin fix(core): hide versions.* documents from search, update getPublishedId to account for versions (#7470) 7c814a8
RitaDias fix(structure): live edit on draft documents (#7526) 7bf9995
RitaDias refactor(structure): add virtualization when rendering assigneeds list (#7536) e102679
Bjørge Næss fix(core): skip updating focusPath state if unchanged (#7524) 7183b24
Pedro Bonamin fix(core): document store cache memo not working (#7530) 8c677c2
Bjørge Næss fix(core): clean up portable text input's selection change handling (#7525) 714b3e1
Ash chore(sanity): add return type to StudioErrorBoundary component b7b677c
Ash chore: fix spelling mistake a7ca8b6
Ash chore(sanity): remove unused parameter from onRetry function signature 61e981b
Ash feat(sanity): add ErrorActions component 7809762
Ash feat(sanity): refine StudioErrorBoundary component UI d11efce
Ash feat(sanity): add "Copy error details" button to document list error UI a218c88
Pedro Bonamin feat(core): Studio announcements (#7515) 3593bf5
RitaDias refactor(structure): add timeout to reconnecting message (#7531) 9ab4086

v3.57.4

17 Sep 20:24
Compare
Choose a tag to compare

✨ Highlights

Performance improvements for large documents

This release introduces significant performance improvements for form state computation in Sanity Studio, especially for complex documents:

  • Up to 10x performance improvement for documents with multiple large objects in arrays
  • Noticeable improvements for documents with large Portable Text fields
  • Memoization for form state computation

🐛 Notable bugfixes

  • The _createdAt document property will now always be set to the time when the document in question was first created in its initial draft state rather than the time of publishing, as intended.
  • In the Portable Text Editor, annotations can now be added across existing annotations and decorators without accidentally expanding or removing those.
  • In the Portable Text Editor, a collapsed selection can now toggle off an entire annotation.
  • A performance regression introduced in 3.52.3, affecting large Portable Text documents, has now been fixed.
  • Toggling decorators in selections spanning empty lines in the Portable Text Editor now works more predictably.
  • Lists created in the Portable Text Editor should now reset sublist indices under different parent list items (thank you, @phattran2905!).
  • When focused, the Portable Text Editor now automatically adds empty markDefs arrays to blocks if missing.
  • Array inputs now forward the received onItemPrepend and onItemAppend hooks to the insert button/array functions component.

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.

📓 Full changelog

Author Message Commit
Cody Olsen chore(deps): bump typescript to 5.6.2 (#7494) caec753
Ash fix(sanity): prevent empty patches being created (#7499) 99f1bb6
renovate[bot] chore(deps): update typescript-tooling (#7504) 9a646d8
Phat Tran fix(core): correctly reset PTE list counts after non-numbered lists and in sublists (#7506) 4918a9e
renovate[bot] chore(deps): update dependency turbo to ^2.1.2 (#7507) 618d95c
renovate[bot] chore(deps): update pnpm to v9.10.0 (#7509) cf55d9d
renovate[bot] chore(deps): update linters (#7508) 453c4a4
renovate[bot] fix(deps): Update dev-non-major (#7510) fe75e37
renovate[bot] fix(deps): update dependency @portabletext/editor to ^1.1.0 (#7501) a6e0389
Jordan Lawrence fix(core): drafts not using server actions always generate a created at (#7503) 728311e
renovate[bot] fix(deps): update dependency @portabletext/editor to ^1.1.1 (#7514) daf4ffa
Simeon Griggs fix: add padding above the "Push to reload" button instead of below (#7464) 1a33125
Bjørge Næss fix: forward received onItemPrepend/onItemAppend to ArrayFunctions (#7516) 4a50023
Rico Kahler perf(core): memoize prepareFormState (#7498) 3bf7096

v3.57.3

12 Sep 22:41
Compare
Choose a tag to compare

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

Auto-updates enabled by default

Newly initialized studios now have auto-updates enabled by default.

This feature keeps your deployed studio up to date with the latest versions of Sanity while maintaining full control over your code and customizations, ensuring the same great developer experience you’re accustomed to.

With auto-updates enabled, you'll only need to rebuild and redeploy when making your own changes, as new features and improvements from Sanity are delivered automatically.

Learn more at https://www.sanity.io/docs/auto-updating-studios

📓 Full changelog

Author Message Commit
RitaDias docs(sanity): remove @beta tags from migrate (#7490) aba8072
renovate[bot] fix(deps): Update dev-non-major (#7488) fd37976
renovate[bot] fix(deps): update dependency @sanity/insert-menu to v1.0.9 (#7492) e4afd03
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.16.5 (#7493) f9d354f
Carolina Gonzalez chore: add help text for auto-updates in the studio (#7461) 8b0eeff
Carolina Gonzalez feat(cli): use auto-updates flag in init (#7401) 17c02f9

v3.57.2

10 Sep 13:43
Compare
Choose a tag to compare

✨ Highlights

Improved developer tooling for Next.js and Sanity

  • When sanity init is run inside a Next.js project, an appropriate CORS origin is added to the project
  • When sanity init is run inside a Next.js project, environment variables are written to an .env.local file

🐛 Notable bugfixes

  • Fixes flickering issue when navigating within presentation introduced in v3.57.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.

📓 Full changelog

Author Message Commit
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.11.0 (#7441) ef7fff8
RitaDias feat(sanity): add telemetry when creating a draft (#7459) e6b0614
Jordan Lawrence refactor(core): minor type usage improvement and using task plugin name (#7453) 23086e2
Ryan Bonial fix(core): Fix Title in "Untitled was published" toast (#7473) f44786c
renovate[bot] fix(deps): update dependency @sanity/client to ^6.21.3 (#7373) 2002add
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.101 (#7382) 3a18971
Jordan Lawrence chore(core, structure): validation on references (#7431) 112df24
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.8.9 (#7436) 048068e
renovate[bot] chore(deps): update pnpm to v9.9.0 (#7480) f1e2a55
renovate[bot] fix(deps): Update dev-non-major (#7477) dce41fb
renovate[bot] chore(deps): update dependency turbo to ^2.1.1 (#7478) 5ef2990
renovate[bot] chore(deps): update peter-evans/create-pull-request action to v7 (#7481) b241a3d
renovate[bot] chore(deps): update linters (#7479) d05a8ec
Cody Olsen chore: fix tsc build errors in latest @types/react (#7482) e2a30fe
renovate[bot] fix(deps): update dependency @sanity/mutate to ^0.10.0 (#7451) ea3a79a
Simeon Griggs fix(cli) use Next.js specific defaults for new projects (#7465) de03c57
Jordan Lawrence Revert "chore: support for sticky params in URL and intent ops (#7429)" (#7489) 5cb335b

v3.57.1

06 Sep 21:26
Compare
Choose a tag to compare

🐛 Notable bugfixes

  • Fixes a performance regression introduced in v3.51.0 (#7471)

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.

📓 Full changelog

Author Message Commit
Rico Kahler fix(core): ensure all keys are reconciled 6393df8

v3.57.0

03 Sep 15:54
Compare
Choose a tag to compare

✨ Highlights

Significant rendering perf. improvements (up to x10) in dev mode

This change enables styled-components "speedy mode" in sanity dev, improving developer mode performance. This change impacts only development builds (sanity dev) – production builds (sanity build or sanity start) remain unaffected since "speedy mode" has always been enabled in production.

Developers embedding Sanity Studio in other frameworks like Next.js or Remix need to adjust their own build tooling to declare the SC_DISABLE_SPEEDY flag to achieve the same performance benefits. For example, Next.js users can add this snippet to their next.config.{js,mjs,ts} file:

export default {
  env: {
    SC_DISABLE_SPEEDY: 'false' // makes styled-components as fast in dev mode as it is in production mode
  }
}

For Safari users, while they will still be able to inspect and see CSS rules coming from styled-components, these will now be read-only in the DevTools inspector. The performance benefits from enabling "speedy mode" in development mode are significant for Safari users and outweigh the convenience of being able to edit these rules directly in the inspector. With Hot Module Reload, developers can still quickly make changes to their source code, and the new styles will apply immediately.

Enabling "speedy mode" offers a faster development experience across the board. Developers using Safari for testing purposes can still verify the functionality of the studio, and for more detailed CSS editing, they can switch to Chrome, Firefox, or other Chromium-based browsers like Arc or Brave.

It's still possible to restore the old behaviour of disabling speedy in dev mode in userland with a custom sanity.cli.ts override:

import {defineCliConfig} from 'sanity/cli'
import {type UserConfig} from 'vite'

export default defineCliConfig({
  vite(viteConfig: UserConfig): UserConfig {
    return {
      ...viteConfig,
      define: {
        ...viteConfig.define,
        // `sanity dev` enables speedy in both development and production, this line restores the default `styled-components` behaviour of only enabling it in production
        'process.env.SC_DISABLE_SPEEDY': JSON.stringify(process.env.NODE_ENV !== 'production'),
      },
    }
  },
})

add --max-fetch-concurrency to prevent stalled validators

This update addresses an issue where the sanity documents validate CLI command could time out when validating documents with complex custom validation rules. The changes include:

  1. Increased default maximum fetch concurrency from 10 to 25, which should resolve most timeout issues.
  2. Added a new CLI flag --max-fetch-concurrency to allow users to adjust the maximum number of concurrent client.fetch requests during validation.
  3. Made the default maximum custom validation concurrency explicit and configurable.

Usage:

sanity documents validate --max-fetch-concurrency <number>

These changes should improve the performance and reliability of document validation for projects with complex custom validation rules. Users experiencing timeouts during validation should try increasing the --max-fetch-concurrency value if issues persist with the new default.

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.

📓 Full changelog

Author Message Commit
Rico Kahler feat(cli): allow setting --max-fetch-concurrency to prevent stalled validators (#7450) 85b0538
Jordan Lawrence chore(core): improvements to diff component styles and presentation (#7385) 35b6600
Jordan Lawrence fix(structure): passing from operation context to label for success toast (#7437) f4e414c
Cody Olsen fix: significantly speed up styled-components in dev mode (#7440) c259119
Jordan Lawrence test: improved context mocking on TestProvider (#7433) 58863af
Jordan Lawrence chore(core): single addon dataset context (#7432) 9da634e
Jordan Lawrence chore: improved data testing by ui and test id (#7428) deca138
RitaDias test(sanity): skip toolbar test (#7446) 713c3f9
renovate[bot] chore(lockfile): update dependency styled-components to v6.1.13 (#7443) 7395a93
renovate[bot] chore(deps): update dependency styled-components to ^6.1.13 (#7442) c5a4207
renovate[bot] fix(deps): update dependency @portabletext/editor to ^1.0.19 (#7405) 5ebff0d

v3.56.0

27 Aug 21:08
Compare
Choose a tag to compare

✨ Highlights

Improved document sync notification

Fixes an issue where the syncing document notification would sometimes remain on the screen indefinitely, even after the document was no longer visible. The toast is now dismissible, improving the user experience when working with synchronized documents.

Sync Document Toast

Copy document URL to clipboard

A new feature has been added to the document pane, allowing users to easily copy the current document's URL to their clipboard. This makes sharing documents with colleagues and collaborators more convenient.

Ending the "Array Tree Editing" beta

Thank you to everyone who participated in the "Array Tree Editing" beta. Based on your feedback, we are ending this experiment as we continue to explore better ways to navigate nested structured.

🐛 Notable bugfixes

  • Optimized rendering in Presence: We’ve optimized how presence changes are handled, reducing unnecessary re-renders in the Studio. This enhancement improves overall performance when multiple users are working on the same document.
  • Respect for --no-auto-updates flag in CLI: Fixed an issue where the CLI would not respect the --no-auto-updates flag, ensuring that this configuration setting now behaves as expected.
  • Improved feedback when extracting schema: The schema extraction process now outputs the file path, providing clearer feedback and making it easier to locate the saved schema.
  • Constrain size for date picker popover: Added a prop to constrain the size of the date picker popover in the DateTimeInput UI component, providing more control over its appearance, especially in modal contexts.

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.

📓 Full changelog

Author Message Commit
Carolina Gonzalez feat(cli): respect --no-auto-updates flag in CLI config (#7396) c83021e
Pedro Bonamin chore(structure): add DocumentListBuilder.filter JSdoc details (#7402) 445384d
Pedro Bonamin fix(structure): make sync document toast dismisable (#7209) dc40f6e
Pedro Bonamin chore(core): end "Array Tree Editing" beta (#7411) 9894c6d
Rune Botten fix(core): avoid unnecessary re-renders in useDocumentPresence (#7365) 379620e
Simeon Griggs output path when extracting schema (#7414) 6fdfcac
RitaDias refactor(sanity): Move date inputs UI Components to ui-components (#7410) 0d1dcd7
renovate[bot] fix(deps): update dependency @sanity/icons to ^3.4.0 (#7417) 6bd4f8c
RitaDias fix(sanity): add prop for constraintSize (#7421) 17a7b1d
Drew Lyton feat(sanity): add always present document action to copy url to clipboard (#7416) 7afcdb4
renovate[bot] fix(deps): update dependency groq-js to ^1.13.0 (#7424) 14530aa
Drew Lyton feat(sanity): Update presence menu button for inviting new collaborators (#7406) 064519a

v3.55.0

20 Aug 14:55
Compare
Choose a tag to compare

✨ Highlights

Request access to Studios

Users can now request access to a project they're not yet a member of, straight from the Studio's "Not authorized" screen. Project administrators will be alerted by email and can approve or deny the request from the project settings area.
image

TypeGen updates

Running sanity typegen will now by default generate a query typemap which the Sanity Client can use to automatically infer the returned types of a query.

🐛 Notable bugfixes

  • The TypeGen CLI command should now correctly detect and generate types defined by defineQuery from the next-sanity package.
  • Fixes an issue with FormInput causing includeField to not have any effect for nested paths.
  • Fixes an issue with the cursor sometimes moving around as you typed in the Portable Text Editor.
  • Fixes an issue where references would not open if clicked inside a Field Group.
  • Fixes an issue where it wasn't possible to copy a text selection inside a text field.

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.

📓 Full changelog

Author Message Commit
Bjørge Næss fix(form): fix issue where FormInput was not rendering field when passed 'includeField' (#7350) e6185ef
Jordan Lawrence chore(tests): collapsing ct test report comment (#7378) cd341d8
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.10.10 (#7381) 292b7d0
renovate[bot] fix(deps): update dependency get-it to ^8.6.5 (#7376) b5d7418
renovate[bot] fix(deps): update dependency @portabletext/editor to ^1.0.15 (#7377) f273249
Bjørge Næss refactor(preview): extract global listener, refactor preview APIs and improve typings (#7360) 5c75a38
Bjørge Næss chore: add docgen script (#7387) e3a02c4
Sindre Gulseth fix(typegen): find queries imported with defineQuery from next-sanity (#7391) b86e3d0
Sindre Gulseth feat(typegen): set overload client methods to default to true (#7390) c11e51f
Jordan Lawrence test(core): updating import on helpers to using jest and not playwright (#7384) 87316d6
Carolina Gonzalez fix: do not show latest version if auto-updating (#7388) 1872388
Espen Hovlandsdal chore(types): deprecate studioHost, externalStudioHost properties (#7369) 565eb49
Bjørge Næss chore: fix wrong version format in generate documents script (#7393) 1a2ef91
Fred Carlsen fix(core): fix copy related issues (#7394) 49083dd
Drew Lyton feat(sanity): request access flow (#7248) 5ab35a5