Sanity Studio – Rapidly configure content workspaces powered by structured content
MIT License
Bot releases are hidden (Show)
Published by juice49 25 days ago
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.
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.
Author | Message | Commit |
---|---|---|
Rico Kahler | feat(perf): add new eFPS benchmark suite (#7407) | 2de06de0ea |
Ryan Bonial | Fix: prevent flash of "Untitled" when loading a document w/ preview (#7505) | b7f0135e67 |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#7521) | 4729e84b8f |
Pedro Bonamin | fix(core): hide versions.* documents from search, update getPublishedId to account for versions (#7470) |
7c814a88e4 |
RitaDias | fix(structure): live edit on draft documents (#7526) | 7bf9995f4d |
RitaDias | refactor(structure): add virtualization when rendering assigneeds list (#7536) | e10267991d |
Bjørge Næss | fix(core): skip updating focusPath state if unchanged (#7524) | 7183b2448e |
Pedro Bonamin | fix(core): document store cache memo not working (#7530) | 8c677c29cd |
Bjørge Næss | fix(core): clean up portable text input's selection change handling (#7525) | 714b3e1e5d |
Ash | chore(sanity): add return type to StudioErrorBoundary component |
b7b677c213 |
Ash | chore: fix spelling mistake | a7ca8b6172 |
Ash | chore(sanity): remove unused parameter from onRetry function signature |
61e981b489 |
Ash | feat(sanity): add ErrorActions component |
7809762b79 |
Ash | feat(sanity): refine StudioErrorBoundary component UI |
d11efce410 |
Ash | feat(sanity): add "Copy error details" button to document list error UI | a218c88030 |
Pedro Bonamin | feat(core): Studio announcements (#7515) | 3593bf56a4 |
RitaDias | refactor(structure): add timeout to reconnecting message (#7531) | 9ab4086ea7 |
Published by cngonzalez about 1 month ago
This release introduces significant performance improvements for form state computation in Sanity Studio, especially for complex documents:
_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.3.52.3
, affecting large Portable Text documents, has now been fixed.markDefs
arrays to blocks if missing.onItemPrepend
and onItemAppend
hooks to the insert button/array functions component.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.
Author | Message | Commit |
---|---|---|
Cody Olsen | chore(deps): bump typescript to 5.6.2 (#7494) |
caec753b31 |
Ash | fix(sanity): prevent empty patches being created (#7499) | 99f1bb6163 |
renovate[bot] | chore(deps): update typescript-tooling (#7504) | 9a646d82f0 |
Phat Tran | fix(core): correctly reset PTE list counts after non-numbered lists and in sublists (#7506) | 4918a9e5fa |
renovate[bot] | chore(deps): update dependency turbo to ^2.1.2 (#7507) | 618d95c2e1 |
renovate[bot] | chore(deps): update pnpm to v9.10.0 (#7509) | cf55d9d5d9 |
renovate[bot] | chore(deps): update linters (#7508) | 453c4a4e58 |
renovate[bot] | fix(deps): Update dev-non-major (#7510) | fe75e37617 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.1.0 (#7501) | a6e038941a |
Jordan Lawrence | fix(core): drafts not using server actions always generate a created at (#7503) | 728311e4a2 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.1.1 (#7514) | daf4ffad04 |
Simeon Griggs | fix: add padding above the "Push to reload" button instead of below (#7464) | 1a33125c50 |
Bjørge Næss | fix: forward received onItemPrepend/onItemAppend to ArrayFunctions (#7516) | 4a50023cc7 |
Rico Kahler | perf(core): memoize prepareFormState (#7498) |
3bf70962b4 |
Published by rexxars about 1 month ago
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.
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
Author | Message | Commit |
---|---|---|
RitaDias | docs(sanity): remove @beta tags from migrate (#7490) |
aba8072c2f |
renovate[bot] | fix(deps): Update dev-non-major (#7488) | fd379762bb |
renovate[bot] | fix(deps): update dependency @sanity/insert-menu to v1.0.9 (#7492) | e4afd03a35 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.16.5 (#7493) | f9d354ffec |
Carolina Gonzalez | chore: add help text for auto-updates in the studio (#7461) | 8b0eeff8c3 |
Carolina Gonzalez | feat(cli): use auto-updates flag in init (#7401) | 17c02f99a2 |
Published by juice49 about 1 month ago
sanity init
is run inside a Next.js project, an appropriate CORS origin is added to the projectsanity init
is run inside a Next.js project, environment variables are written to an .env.local fileTo 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.
Author | Message | Commit |
---|---|---|
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.11.0 (#7441) | ef7fff8a86 |
RitaDias | feat(sanity): add telemetry when creating a draft (#7459) | e6b0614c0b |
Jordan Lawrence | refactor(core): minor type usage improvement and using task plugin name (#7453) | 23086e26aa |
Ryan Bonial | fix(core): Fix Title in "Untitled was published" toast (#7473) | f44786c1bc |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.21.3 (#7373) | 2002add60b |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.101 (#7382) | 3a18971e84 |
Jordan Lawrence | chore(core, structure): validation on references (#7431) | 112df249d8 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.9 (#7436) | 048068e41c |
renovate[bot] | chore(deps): update pnpm to v9.9.0 (#7480) | f1e2a55e8d |
renovate[bot] | fix(deps): Update dev-non-major (#7477) | dce41fb7a2 |
renovate[bot] | chore(deps): update dependency turbo to ^2.1.1 (#7478) | 5ef2990e60 |
renovate[bot] | chore(deps): update peter-evans/create-pull-request action to v7 (#7481) | b241a3db4e |
renovate[bot] | chore(deps): update linters (#7479) | d05a8ec3c9 |
Cody Olsen | chore: fix tsc build errors in latest @types/react (#7482) |
e2a30fe44a |
renovate[bot] | fix(deps): update dependency @sanity/mutate to ^0.10.0 (#7451) | ea3a79ae50 |
Simeon Griggs | fix(cli) use Next.js specific defaults for new projects (#7465) | de03c577f2 |
Jordan Lawrence | Revert "chore: support for sticky params in URL and intent ops (#7429)" (#7489) | 5cb335b1a2 |
Published by ricokahler about 1 month ago
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.
Author | Message | Commit |
---|---|---|
Rico Kahler | fix(core): ensure all keys are reconciled | 6393df8 |
Published by juice49 about 2 months ago
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'),
},
}
},
})
--max-fetch-concurrency
to prevent stalled validatorsThis 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:
--max-fetch-concurrency
to allow users to adjust the maximum number of concurrent client.fetch
requests during validation.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.
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.
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) | 35b6600fe8 |
Jordan Lawrence | fix(structure): passing from operation context to label for success toast (#7437) | f4e414cfb8 |
Cody Olsen | fix: significantly speed up styled-components in dev mode (#7440) | c2591194ef |
Jordan Lawrence | test: improved context mocking on TestProvider (#7433) | 58863af782 |
Jordan Lawrence | chore(core): single addon dataset context (#7432) | 9da634e8c1 |
Jordan Lawrence | chore: improved data testing by ui and test id (#7428) | deca1388bf |
RitaDias | test(sanity): skip toolbar test (#7446) | 713c3f9f1d |
renovate[bot] | chore(lockfile): update dependency styled-components to v6.1.13 (#7443) | 7395a93c35 |
renovate[bot] | chore(deps): update dependency styled-components to ^6.1.13 (#7442) | c5a4207a56 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.19 (#7405) | 5ebff0df71 |
Published by ricokahler about 2 months ago
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.
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.
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.
--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.DateTimeInput
UI component, providing more control over its appearance, especially in modal contexts.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.
Author | Message | Commit |
---|---|---|
Carolina Gonzalez | feat(cli): respect --no-auto-updates flag in CLI config (#7396) |
c83021ebaf |
Pedro Bonamin | chore(structure): add DocumentListBuilder.filter JSdoc details (#7402) | 445384d417 |
Pedro Bonamin | fix(structure): make sync document toast dismisable (#7209) | dc40f6ee94 |
Pedro Bonamin | chore(core): end "Array Tree Editing" beta (#7411) | 9894c6dbd8 |
Rune Botten | fix(core): avoid unnecessary re-renders in useDocumentPresence (#7365) | 379620e0a9 |
Simeon Griggs | output path when extracting schema (#7414) | 6fdfcac0c5 |
RitaDias | refactor(sanity): Move date inputs UI Components to ui-components (#7410) | 0d1dcd7bec |
renovate[bot] | fix(deps): update dependency @sanity/icons to ^3.4.0 (#7417) | 6bd4f8cd20 |
RitaDias | fix(sanity): add prop for constraintSize (#7421) | 17a7b1d9f8 |
Drew Lyton | feat(sanity): add always present document action to copy url to clipboard (#7416) | 7afcdb408c |
renovate[bot] | fix(deps): update dependency groq-js to ^1.13.0 (#7424) | 14530aa3b0 |
Drew Lyton | feat(sanity): Update presence menu button for inviting new collaborators (#7406) | 064519a2aa |
Published by ricokahler about 2 months ago
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.
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.
defineQuery
from the next-sanity
package.FormInput
causing includeField
to not have any effect for nested paths.text
field.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.
Author | Message | Commit |
---|---|---|
Bjørge Næss | fix(form): fix issue where FormInput was not rendering field when passed 'includeField' (#7350) | e6185ef8d7 |
Jordan Lawrence | chore(tests): collapsing ct test report comment (#7378) | cd341d8f86 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.10.10 (#7381) | 292b7d0dca |
renovate[bot] | fix(deps): update dependency get-it to ^8.6.5 (#7376) | b5d7418d60 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.15 (#7377) | f2732495d6 |
Bjørge Næss | refactor(preview): extract global listener, refactor preview APIs and improve typings (#7360) | 5c75a38933 |
Bjørge Næss | chore: add docgen script (#7387) | e3a02c4894 |
Sindre Gulseth | fix(typegen): find queries imported with defineQuery from next-sanity (#7391) | b86e3d0cf4 |
Sindre Gulseth | feat(typegen): set overload client methods to default to true (#7390) | c11e51fdb2 |
Jordan Lawrence | test(core): updating import on helpers to using jest and not playwright (#7384) | 87316d683e |
Carolina Gonzalez | fix: do not show latest version if auto-updating (#7388) | 1872388e2b |
Espen Hovlandsdal | chore(types): deprecate studioHost, externalStudioHost properties (#7369) | 565eb490cd |
Bjørge Næss | chore: fix wrong version format in generate documents script (#7393) | 1a2ef91d9a |
Fred Carlsen | fix(core): fix copy related issues (#7394) | 49083ddc86 |
Drew Lyton | feat(sanity): request access flow (#7248) | 5ab35a54f3 |
Published by binoy14 2 months ago
Introduces support for adding multiple [my-company].sanity.studio
deployments for a project. Link your studio code to a specific hostname with the new studioHost
property in the CLI config as shown below, or select or create a deployment target when prompted while running sanity deploy
. You can now see all your studio deployments in the project management settings.
// ./sanity.cli.ts
import {defineCliConfig} from 'sanity/cli'
export default defineCliConfig({
api: {
projectId: 'projectid',
dataset: 'production'
},
// Tip: You can use an environment variable for studioHost if you want
// to deploy separate studios for production, staging, testing etc.
studioHost: 'my-company'
})
Read more in the Hosting and deployment article in the docs.
getValueAtPath()
utility wouldn't work for 0 index path segments (['array', 0])
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.
Author | Message | Commit |
---|---|---|
Sindre Gulseth | chore(typegen): move prettier formatting into generateAction (#7333) | 3c34f0808a |
Cody Olsen | fix(deps): @bjoerge/mutiny is now @sanity/mutate (#7344) |
4aeb5b6f0d |
Bjørge Næss | chore(dev): add groq package to monorepo aliases (#7340) | d44b06e6fd |
renovate[bot] | chore(deps): update pnpm to v9.7.0 (#7346) | 0772245bbd |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.12 (#7352) | ecde097776 |
renovate[bot] | fix(deps): update dependency @sanity/insert-menu to v1.0.8 (#7343) | 088139dac3 |
renovate[bot] | fix(deps): update dependency get-it to ^8.6.4 (#7353) | f6b6378052 |
renovate[bot] | fix(deps): Update dev-non-major (#7345) | eefb5ea138 |
Christian Grøngaard | chore(test-studio): fix custom markers PTE example (#7358) | 43b9969d3c |
RitaDias | test(dev): add media plugin to studio e2e & test (#7236) | 12d14111a3 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.16.4 (#7359) | 441d7e576d |
Ash | feat(test-studio): add noop custom publish action example | 7860c8e58b |
Ash | fix(sanity): prevent empty actions being executed | c2e4eb3255 |
Fred Carlsen | feat(core): support pasting object into array + copying individual array items (#7292) | ea558269fc |
Rune Botten | fix(deps): update and pin react-i18next to 14.0.2 (#7364) | 3cecfdd8c1 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.21.2 (#7354) | db6741b192 |
Sindre Gulseth | fix(typegen): dont treat all document type refs as references (#7366) | 32958d3e75 |
Pedro Bonamin | fix(core): update eslintrc config to show no-restricted-imports rules (#7367) | 22e717e1a6 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.13 (#7370) | a36106315b |
Rico Kahler | feat(cli): update CLI to use new deploy endpoint (#7244) | 14ae5cb831 |
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.
With the new defineQuery
utility it is no longer necessary to pass generics into client.fetch
calls for the sanity typegen
command to generate type definitions for query results. 🥳
Update @sanity/client
to v6.21.0
or later, then add "overloadClientMethods": true
to your sanity-typegen.json
configuration file, and finally wrap your query strings in the new defineQuery
utility method from groq
:
import {createClient} from '@sanity/client'
-import groq from 'groq'
+import {defineQuery} from 'groq'
-import type { SettingsQueryResult } from "~/sanity.types";
const client = createClient({ /* ... */ })
-const settingsQuery = groq`
+const settingsQuery = defineQuery(`
*[_type == "settings"][0]
-`
+`)
-const settings = await client.fetch<SettingsQueryResult>(settingsQuery)
+const settings = await client.fetch(settingsQuery)
Huge thanks to @romeovs for championing this feature!
sanity init --env
Author | Message | Commit |
---|---|---|
renovate[bot] | fix(deps): update dependency react-rx to v4 (#7266) | a9b9febc31 |
Simeon Griggs | feat: embellish nextjs blog starter (#7258) | 0fc8216ee6 |
renovate[bot] | chore(deps): update linters (#7285) | eebb27b843 |
renovate[bot] | chore(deps): update dependency turbo to ^2.0.10 (#7284) | ecc74b417d |
Cody Olsen | chore: remove agressive npmrc options (#7282) | 8e992729fb |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.87 (#7287) | cade4c78aa |
Cody Olsen | fix: remove react hooks linter suppressions in PT hooks (#7222) | f5cac7b335 |
Cody Olsen | fix: ensure search context provider value is memoized (#7200) | edf7560eb7 |
Espen Hovlandsdal | chore(test-studio): add workspace for us based dataset (#7293) | 9f60cdc7ee |
Simeon Griggs | fix(cli): don't prepend message about .env.local if creating .env.local (#7288) | ec27de0f8d |
renovate[bot] | fix(deps): Update dev-non-major (#7294) | 8d47f3e375 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.10.8 (#7278) | 9ac527f10c |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.10 (#7290) | e5e2c899f8 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.88 (#7296) | b22182829e |
renovate[bot] | chore(deps): update dependency @bjoerge/mutiny to ^0.7.0 (#7274) | 9edbcd9d5b |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.88 (#7295) | e32932c499 |
Christian Grøngaard | fix(core): correctly reset PTE list counts (#7286) | acbc3518be |
renovate[bot] | chore(deps): update dependency turbo to ^2.0.11 (#7300) | 1b2169112d |
renovate[bot] | chore(deps): update dependency eslint-config-turbo to ^2.0.11 (#7299) | 45bfdd090c |
Geoff Ball | Update types.ts | c041d289c7 |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.16.3 (#7302) | cc744df230 |
renovate[bot] | chore(deps): update dependency @bjoerge/mutiny to ^0.7.1 (#7306) | 6a6c4bf455 |
renovate[bot] | fix(deps): Update dev-non-major (#7307) | fe40cafb41 |
Cody Olsen | feat(codegen): generate SanityQueries interface in @sanity/codegen (#6997) (#7304) | 886ab25c46 |
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to v6.10.9 (#7313) | 33c3c7bd4e |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.90 (#7314) | ffaf81b33a |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.90 (#7315) | e5563b6fb5 |
Rico Kahler | fix(cli): dedupe styled-components in vite config (#7310) |
e82e8157db |
Rico Kahler | refactor: flatten _singletons and increase usage of sanity/_createContext (#7311) |
c512fa776e |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.11 (#7316) | cec7b12249 |
Binoy Patel | chore(deps): updates ora to ^8.0.1 (#7320) | 327e5b4e69 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.11 (#7317) | de01242bb9 |
renovate[bot] | chore(deps): update dependency lerna to ^8.1.8 (#7322) | d53ab3321a |
Cody Olsen | refactor: remove prefersLatestPublished handling (#7305) |
542b07b45c |
Cody Olsen | fix: support field presence avatars on react 19 (#7308) | 8d003e83ee |
Bjørge Næss | fix(migrate): properly decode chunks of multibyte unicode strings (#7321) | ba4d4a86ac |
Sindre Gulseth | feat(typegen): add location of discovered query (#7327) | d77e3ad07e |
Sindre Gulseth | chore(typegen): trace overloadClientMethods usage (#7326) | 68fe8cd7d2 |
Published by ricokahler 3 months ago
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.
Author | Message | Commit |
---|---|---|
Rico Kahler | fix(core): early return if paste target is a file/image (#7269) | 6fc602c6e2 |
Cody Olsen | fix(deps): bump @sanity/pkg-utils to v6.10.7 (#7277) |
56d9e16c4c |
Published by ricokahler 3 months ago
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.
FieldPresenceWithOverlay
export to address issues with third-party plugins relying on this feature. Plugin authors are advised to use the FieldPresence
export instead, as the two have always been identical.'image'
literal to ImageMetadataType
. Thanks @xuzuodong!Author | Message | Commit |
---|---|---|
Rico Kahler | test: adds jest config for CLI tests within the sanity module (#7243) |
917dc59ae4 |
renovate[bot] | fix(deps): update dependency groq-js to ^1.11.1 (#7247) | 0d6c67e2e1 |
renovate[bot] | fix(deps): update dependency groq-js to ^1.12.0 (#7252) | ef01b921c9 |
Nina Andal Aarvik | fix(chore): add aria label to datepicker button (#6952) | a5c05d900c |
Rico Kahler | fix(cli): remove conditions to prevent CJS interop errors (#7267) |
5031cef0f0 |
Cody Olsen | fix: add back FieldPresenceWithOverlay export (#7263) |
b9785f04ef |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.9 (#7250) | 10fa5cbbd0 |
renovate[bot] | chore(deps): update dependency lerna to ^8.1.7 (#7219) | a7dbe80c73 |
renovate[bot] | chore(deps): update dependency @types/lodash to ^4.17.7 (#7271) | fe82ee6b68 |
renovate[bot] | chore(deps): update testing-library monorepo (#7272) | 57daedb54a |
renovate[bot] | chore(deps): update dependency esbuild-register to ^3.6.0 (#7275) | dfc003ef22 |
renovate[bot] | fix(deps): Update dev-non-major (#7273) | 95e4ce0317 |
Hash Brown | chore: add literal to ImageMetadataType (#7190) | 61734db9f6 |
Bjørge Næss | chore(deps): upgrade to pnpm 9 (#7279) | 5758665a64 |
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.
Author | Message | Commit |
---|---|---|
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.21.1 (#7215) | 08658f2049 |
Cody Olsen | chore: enable production react profiling in test studios (#7198) | 3a9dafafdd |
Cody Olsen | fix: remove "a key prop is spread into JSX" warning (#7224) | 615c3c8b31 |
renovate[bot] | fix(deps): update dependency @sanity/export to ^3.41.0 (#7223) | 0332d38776 |
Cody Olsen | fix(WorkspacesProvider): run prepareConfig in a passive effect (#7226) |
2c35087448 |
Cody Olsen | chore: add dev:test-studio-production-profiling script (#7225) |
8dfa353584 |
Cody Olsen | fix: improve hook collection state performance (#7218) | bebeac52eb |
Cody Olsen | refactor: replace useClickOutside with useClickOutsideEvent (#7201) |
b4740aa039 |
renovate[bot] | fix(deps): update dependency groq-js to ^1.11.0 (#7229) | 8b92196875 |
Cody Olsen | feat: refactor createTrackerScope internals to be more efficient (#6946) |
c4f9a1f2bf |
Carolina Gonzalez | fix: hard link between datasets, for now (#7228) | 2e77986f24 |
Published by ricokahler 3 months ago
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.
sanity-plugin-media
) to crash due to a configuration issue with the build tooling in the CLI.Author | Message | Commit |
---|---|---|
Cody Olsen | fix: ensure context provider values are memoized (#7199) | ff49411d4e |
renovate[bot] | fix(deps): Update dev-non-major (#7216) | f6bb3117fe |
RitaDias | chore: set up | c0cec212eb |
RitaDias | fix(sanity/cli): issue with plugins would crash | 3682286db2 |
Published by cngonzalez 3 months ago
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.
sanity build
and sanity deploy
to prevent missing React context issues.node_modules
.Author | Message | Commit |
---|---|---|
Cody Olsen | fix(deps): update dependency @sanity/ui to ^2.7.0 (#7168) | b60195b08f |
Espen Hovlandsdal | chore: clean up e2e studio tasks, headless env var (#7158) | 9dbb9f61b3 |
Ash | fix(sanity): ensure Actions API client uses adequate API version (#7166) | 25a983bc7c |
renovate[bot] | chore(deps): update dependency styled-components to ^6.1.12 (#7178) | 8805315cbc |
renovate[bot] | chore(deps): update dependency turbo to ^2.0.7 (#7182) | 9b79104df0 |
renovate[bot] | chore(deps): update pnpm to v8.15.9 (#7183) | f73fb0f32b |
renovate[bot] | fix(deps): Update dev-non-major (#7184) | 706a86b59b |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.2 (#7188) | ef0d9373e9 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.2 (#7185) | 6535562ebc |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.5 (#7192) | 1515df1fbf |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.5 (#7191) | 8a9730c0f1 |
Rico Kahler | fix: unify externals in auto-updating builds (#7187) | a6def041b6 |
Cody Olsen | refactor: replace useOnClickOutside with useClickOutsideEvent (#7189) |
d68bb948c6 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.6 (#7196) | 7771ee0ee1 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.7 (#7197) | fe8efa0c1b |
renovate[bot] | fix(deps): update dependency @sanity/icons to ^3.3.1 (#7204) | bf9ca0b622 |
renovate[bot] | fix(deps): Update dev-non-major (#7203) | f0d5f82fc5 |
Cody Olsen | fix: detect duplicate context errors (#7160) | 7f3a8814e9 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.8.8 (#7210) | 944d392a07 |
renovate[bot] | chore(lockfile): update dependency @sanity/logos to v2.1.13 (#7211) | 208a2d14f9 |
renovate[bot] | fix(deps): Update dev-non-major (#7212) | a20e9b1256 |
Rico Kahler | feat(core): add aliases to mitigate context issues (#7172) | 776f16b803 |
Published by cngonzalez 3 months ago
URLs included in comments are now rendered as clickable links, which is infinitely more useful than unclickable links.
src
folder in your directory if it exists, some changes to schemas and how they're imported.Ctrl + Option + D
for duplicating a document) not to be displayed in tooltips.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.
Author | Message | Commit |
---|---|---|
Espen Hovlandsdal | fix: force arborist ^7.5.4 | 49f278adb1 |
ecospark[bot] | chore(prettier): fix unformatted files 🤖 ✨ (#7146) | 213f4b136c |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#7145) | 75a409a121 |
Espen Hovlandsdal | fix(core): restore platform-aware keyboard shortcuts (#6819) | 512965c1b2 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.6.8 (#7144) | 3fca2ef7ac |
renovate[bot] | fix(deps): Update dev-non-major (#7149) | 3ae92a50e0 |
Herman Wikner | feat(core): clickable links in comment message (#7093) | 6fad0c53e7 |
Simeon Griggs | feat: update schema types formatting and init to include src (#7094) | d42da143a7 |
Cody Olsen | chore: remove 3d demos from test studio (#7157) | 97fed17d3f |
Cody Olsen | chore: setup workflow for E2E tests that @sanity/ui can run on its PRs (#7156) |
88bd6c46ad |
Rupert Dunk | fix(sanity): open correct groups and fieldsets on setOpenPath (#7154) |
b278800dea |
renovate[bot] | fix(deps): Update dev-non-major (#7164) | 41a3039b20 |
Published by ricokahler 3 months ago
This version of Sanity Studio introduces a powerful new way to work with structured content within Sanity Studio: Copy-paste support for fields and documents. You can now use the familiar copy-and-paste hotkeys (cmd/ctrl+c and cmd/ctrl+v) and the field and document actions menus to copy content across different fields and document types seamlessly.
https://github.com/sanity-io/sanity/assets/10551026/43698966-4ab0-45fe-b6fd-b45b5de9072e
Sanity offers powerful content models that let you define lists of object types and even nest these, if necessary. This enables developers to work with intuitive and convenient data structures in the API, but it has sometimes led to a cumbersome editorial experience with a lot of navigation between layers of modals.
That's why we're thrilled to introduce an improved experience for editing arrays of objects. With the array tree editing, you can browse and edit array items in one place, making working with nested content much simpler and faster.
To enable the new array tree editor, add the following to your Sanity Studio configuration:
// sanity.config.ts
export default defineConfig({
// ...
beta: {
treeArrayEditing: {
enabled: true,
},
},
});
Note: While in beta, the array tree editor has limited support for references. References to other documents do not appear in the array tree editor and will open in a new modal. Additionally, Portable Text fields are not fully supported.
We're shipping improvents and fixes to Sanity Studio on a weekly basis. To make it easier to get these improvements to Sanity Studio users without requiring developer involvement, we have shipped a way to build the studio for auto-updates.
You can try this out with the new --auto-updates
flag to the sanity build
and sanity deploy
CLI commands. This enables your Sanity Studio to automatically update to the latest minor and patch versions (3.x.x
) of Sanity Studio without having to rebuild and redeploy new bundles.
Learn more about the new auto-update flag in docs.
To improve the export experience for users with large datasets, we have introduced a new cursor
export mode in the Sanity CLI:
sanity dataset export --mode cursor
In this mode, the CLI will use cursors under the hood when exporting, which can significantly speed up the export process for larger datasets.
Note: Unlike the traditional export mode, the cursor mode does not create a snapshot of the dataset. Instead, it pulls data as it exports, which may result in inconsistencies if documents in the dataset is modified during the export process.
document.execCommand
at import time.useClient()
without specifying an API version.styled-components
listed in devDependencies
instead of dependencies
would cause the CLI to try to install it as a dependency in a loop.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.
Author | Message | Commit |
---|---|---|
Binoy Patel | fix(core): fixes url for checking studio version (#7060) | a44fd5b3a7 |
Sindre Gulseth | refactor(typegen): use typenode to lookup referencing type names (#7038) | e6220110d0 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.75 (#7005) | 48a72661c7 |
Herman Wikner | feat(core): focus root array item when closing tree editing dialog (#7049) | 8e80b146e9 |
renovate[bot] | chore(deps): update dependency turbo to ^2.0.6 (#7067) | d04d061543 |
renovate[bot] | chore(deps): update dependency ts-node to ^10.9.2 (#7066) | 630f5584ad |
renovate[bot] | chore(deps): update dependency lerna to ^8.1.5 (#7065) | 0d2f0d95d7 |
Sindre Gulseth | feat(cli): Add support for exporting dataset with cursor (#7068) | d0198454bc |
Jordan Lawrence | chore(config): comment to clarify logo deprecation (#7075) | 6d1f496753 |
Jordan Lawrence | docs(migrate): updating insert examples to showing always 3 args (#7070) | 60ad7e792d |
Espen Hovlandsdal | fix(cli): mock document.execCommand when emulating browser env (#7062) |
e54ae8a339 |
Herman Wikner | fix(core): handle array fields within nested objects in array items (#7069) | 3c057a86ad |
renovate[bot] | fix(deps): update dependency @sanity/presentation to v1.16.2 (#7078) | 7aa57323a9 |
renovate[bot] | chore(deps): update dependency @sanity/insert-menu to v1.0.7 (#7064) | c3079c1dc9 |
renovate[bot] | chore(deps): update dependency lerna to ^8.1.6 (#7083) | 5d94ce79b9 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.20.1 (#7088) | baa20cbe7b |
renovate[bot] | fix(deps): Update dev-non-major (#7086) | 554d5791d7 |
Ash | feat(sanity): allow Actions API enablement based on Studio version semver constraint | 47a160bee0 |
Ash | test(e2e): add helper to mock Actions API feature toggle response | f31671b588 |
Ash | test(e2e): re-enable tests for Actions API feature toggle and expand test cases | daca8e9377 |
Cody Olsen | chore(renovate): add preset that allows internal PRs to open right away (#7087) | 43616e473f |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#7096) | e4a237b978 |
Cody Olsen | chore(renovate): add fixtures to ignorePaths (#7081) |
e948e68a70 |
renovate[bot] | fix(deps): update dependency @portabletext/editor to ^1.0.8 (#7101) | 07771edc2f |
renovate[bot] | fix(deps): update dependency @sanity/icons to ^3.3.0 (#7098) | 451e841023 |
renovate[bot] | fix(deps): Update dev-non-major (#7100) | b9d98bf25e |
renovate[bot] | fix(deps): update dependency get-it to ^8.6.3 (#7108) | 32024fe340 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.20.2 (#7111) | 8ec952ef52 |
RitaDias | refactor(sanity): remove "features" (#7097) | a5e6212cec |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.20.2 (#7110) | 2e1c86a64e |
renovate[bot] | fix(deps): update dependency @sanity/bifur-client to ^0.4.1 (#7102) | 048b4fb807 |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.6.3 (#7104) | 8cba533c19 |
renovate[bot] | fix(deps): update dependency react-rx to ^3.1.1 (#7113) | 0d4c8e60e1 |
renovate[bot] | chore(deps): update dependency @sanity/tsdoc to v1.0.83 (#7080) | 5b8de2d7d9 |
renovate[bot] | chore(deps): update dependency esbuild to ^0.23.0 (#7106) | 24c8c9680c |
Espen Hovlandsdal | test(cli): use separate tarball location for cursor export test (#7118) | 7025ffadf7 |
Espen Hovlandsdal | fix(core): minor typo fix in i18n comment (#7115) | 04c374aa02 |
Pedro Bonamin | feat(router): update router to support query params in intent links (#7095) | 793b2b0759 |
renovate[bot] | chore(lockfile): Update dev-non-major to v1.1.5 (#7122) | 6e4ad38bd2 |
Espen Hovlandsdal | chore(deps): roll back esbuild dependency to 0.21.5 (#7126) | b02fe6f793 |
renovate[bot] | fix(deps): update dependency react-rx to ^3.1.2 (#7123) | 3030181d5a |
Cody Olsen | chore(renovate): only bump esbuild within 0.21.x (#7128) |
0c2103c0f0 |
Espen Hovlandsdal | fix(core): error reporting consent tweaks (#7131) | 1552e20d26 |
Rune Botten | chore(core): update copy for new version available toast (#7129) | d298503825 |
Espen Hovlandsdal | fix(cli): allow styled-component as dev dependency (#7132) | ff31556cc6 |
Espen Hovlandsdal | fix(i18n): allow locale plugins to translate "All fields" field group (#7117) | 24f99367c9 |
renovate[bot] | fix(deps): update dependency react-rx to ^3.1.3 (#7138) | 137bf758b2 |
renovate[bot] | fix(deps): update dependency @sanity/client to ^6.21.0 (#7137) | a23b2a5d6e |
renovate[bot] | fix(deps): Update dev-non-major (#7139) | 5606d857fe |
renovate[bot] | fix(deps): update dependency @sanity/ui to ^2.6.6 (#7136) | 2548de6925 |
renovate[bot] | fix(deps): Update dev-non-major (#7140) | b95094c8f2 |
Rune Botten | chore: Update PULL_REQUEST_TEMPLATE.md (#7133) | 27c13a528c |
Fred Carlsen | feat(core): global copy paste (#6856) | 53aa46b0b8 |
Rico Kahler | fix(deps): bump @sanity/ui ^2.6.7 (#7143) | b58b0f8ed1 |
Published by ricokahler 4 months ago
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.
We have added the following improvements to type generation for GROQ query results:
dateTime::now()
and global::now()
.round()
, upper()
, and lower()
functions.*[!(_type == "post")]
TypeGen now correctly expands all unions inside an object, addressing this reported issue on GitHub. Previously, only a part of a union might be returned. TypeGen now ensures that all object types in a union are expanded and included in the generated types.
// Example query
export const HomePageQuery = groq`*[_type == "page" && slug.current == "homepage"]{
title,
components[] {
_type == "hero" => { title, "image": image.asset->url },
_type == "cta" => { title, link }
}
}`;
TyeGen will now generate the following type for the query above:
export type HomePageQueryResult = Array<{
title: string;
components: Array<
| { _type: 'hero'; title: string; image: string }
| { _type: 'cta'; title: string; link: string }
>;
}>;
We’ve started work on a standalone Portable Text Editor package, and thus transitioned to using the @portabletext/editor
package instead of the now deprecated @sanity/portable-text-editor
package. This change includes several internal improvements and fixes. You can follow this work in this repository on GitHub — more documentation to come.
Advanced users who have used the @sanity/portable-text-editor
dependecy should update to @portabletext/editor
to ensure continued support and improvements.
FormInput
would not render fields inside a fieldset.Author | Message | Commit |
---|---|---|
Cody Olsen | chore(deps): upgrade turbo to v2 (#6985) | 2fb8f9b454 |
Nina Andal Aarvik | fix(core): change padding to fix tab box (#7000) | 7ed682e36a |
Herman Wikner | fix(core): handle fieldset members in FormInput (#7045) |
b932de61fb |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#7034) | 8820979e14 |
Herman Wikner | fix(core): open PTE dialogs in tree editing dialog with openPath (#7046) |
d0b9ab0143 |
renovate[bot] | fix(deps): update dependency groq-js to ^1.10.0 (#7053) | 628cb76f40 |
Rico Kahler | refactor: use @portabletext/editor instead of @sanity/portable-text-editor (#7035) |
9864985bef |
renovate[bot] | fix(deps): update dependency get-it to ^8.6.2 (#7052) | b73b68c298 |
renovate[bot] | fix(deps): update dependency @sanity/export to ^3.40.0 (#7056) | c44c405d67 |
Published by ricokahler 4 months ago
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.
--no-dry-run
and --no-confirm
CLI options to be used together. Big thanks to @pawelngei!Author | Message | Commit |
---|---|---|
Binoy Patel | fix(core): update url for notify endpoint (#7022) | 6e2ad738b4 |
Christian Grøngaard | chore(page-building): clean up schema types (#6973) | af414d5aae |
Rostislav Melkumyan | Fix(CLI): Set integration value for createProject directly in the createProject function (#7021) | 2d11505f7b |
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#7028) | 8c66d24a71 |
Jason Rose | Fixes NO_CHANGES localization key (#7008) | 666c4209ea |
Carolina Gonzalez | fix: check for telemetry consent before error reporting (#7019) | 83e11116e1 |
Rico Kahler | fix(core): put back select button for single-asset source (#7030) | 4af12eb0b0 |
Rico Kahler | fix(cli): allow no-confirm no-dry-run migrations (#7031) | b06d14356c |
Rico Kahler | build: remove Version step from release workflow (#7032) |
5006d7f3a3 |
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.
dataset export
workflow.Author | Message | Commit |
---|---|---|
ecospark[bot] | chore(deps): dedupe pnpm-lock.yaml (#6994) | 1d3b68ded7 |
Fred Carlsen | chore(ci): upgrade pnpm setup to use node20 (#6968) | e39e7f6009 |
RitaDias | test(e2e): rewrite e2e toolbar tests to component tests & update e2e expectations on others (#6967) | 5aa2ee8152 |
renovate[bot] | chore(deps): update dependency recast to ^0.23.9 (#7006) | b29a444164 |
Rostislav Melkumyan | fix: remove trailing commas when sanitizing (#7007) | 6b9f910292 |
Christian Grøngaard | feat(core): support insert menu options in array item context menus (#6921) | 784cfd3f4a |
RitaDias | feat(core): array editing improvements (#6682) | 6fbfcdc70b |
Herman Wikner | fix(core): tree editing dialog open issue (#7013) | fcb09f9847 |
Sindre Gulseth | chore(deps): always bump @sanity/export package (#7010) | fd6f56c466 |
renovate[bot] | fix(deps): update dependency @sanity/export to ^3.38.2 (#7015) | d09cc9b658 |
Rico Kahler | chore: update release note template (#7017) | 7e633bb21d |
Christian Grøngaard | fix: deprecate @sanity/portable-text-editor (#7020) | f2ddfa7d4f |
Rico Kahler | feat: utilize timestamps in build and renderDocument for AUS (#6964) | a1da8ccdb9 |
Rico Kahler | feat: include hashes in vendor builds (#7018) | 4bbe337ce6 |