npm @sanity/vision 3.21.0
v3.21.0

latest releases: 3.57.4, 3.57.4-memoized-form-state.18, 3.57.4-upgrade-vite-v5.9...
9 months ago

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

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

npm install sanity@latest

🐛 Notable bugfixes

  • Removes a console warning about using an experimental API version
  • Adds type declarations for the assetRequired rule to validation for image and file schema types
  • Fixes an issue in the Next.js template where the urlForImage function would return a class instead of a url
  • Fixes an issue where the image crop tool would not work on touchscreen devices with connected pointer devices
  • Fixes a bug in the Portable Text Editors drag-and-drop functionality that would make any block which opens in a modal, that was dragged and placed directly above an array block wrongly affect the array, leading to a “Can’t upload this file here” error
  • Fixes an issue where the --skip-cross-dataset-references flag was not working with sanity dataset import

📓 Full changelog

Author Message Commit
Cody Olsen fix: remove circular dependency between useGlobalPresence and usePresenceStore (#5286) 5aa6c74
Cody Olsen fix: prevent props that are unknown html attributes from passing through (#5284) edf2709
Ash fix(form): include group name in group tab test id (#5278) 6890b10
Espen Hovlandsdal chore: prevent tests, workshop files from being published (#5276) ee008de
Snorre Eskeland Brekke feat(i18n): proof of concept i18n framework daa3fa8
Espen Hovlandsdal fix(core): adjust mismatched tsdoc visibility f855ec8
Espen Hovlandsdal fix(i18n): fallback when no localStorage is available d1dee31
Espen Hovlandsdal refactor(i18n): drop ability to provide i18n init options bf6b172
Espen Hovlandsdal chore(i18n): provide example of local studio localization 8f8de21
Espen Hovlandsdal refactor(core): dedupe localStorage checks 060753e
Espen Hovlandsdal refactor(config): improve i18n config error messages 4676485
Espen Hovlandsdal refactor(i18n): align naming to locale over language/i18n 843a693
Espen Hovlandsdal refactor(i18n): drop default namespace exception in backend ebf2f5e
Espen Hovlandsdal feat(i18n): make backend retry on failure to load bundles 32c2dc2
Espen Hovlandsdal refactor(i18n): simplify i18next initialization, providers d849edd
Espen Hovlandsdal refactor(i18n): limit exposure to i18next library 593bab9
Espen Hovlandsdal refactor(i18n): drop unused resource key test 9919009
Espen Hovlandsdal refactor(i18n): add i18n property to config context 31609cb
Espen Hovlandsdal refactor(i18n): provide a smaller locales object through context 5f31016
Espen Hovlandsdal fix(i18n): drop use of flags for languages 2a8b5a7
Espen Hovlandsdal fix(i18n): change tsdoc visibility tag for LocaleSource 2cbb3c1
Espen Hovlandsdal fix(i18n): annotate alpha/beta items with @hidden 3a1e589
Espen Hovlandsdal feat(i18n): weave locale source into validation context b34301e
Espen Hovlandsdal refactor(types): use interface instead of type for ValidationContext 3308ab0
Espen Hovlandsdal refactor(i18n): do not load language variations for now 848d174
Espen Hovlandsdal fix(desk): show all validation errors for a given path f6e3980
Espen Hovlandsdal feat(i18n): add loadNamespaces method to i18n source f0cb6e3
Espen Hovlandsdal feat(i18n): localize default validation messages 7ac27f6
Espen Hovlandsdal fix(i18n): error in minimal seconds/minutes localization string 0c00667
Espen Hovlandsdal feat(i18n): allow specifying object of localized validation messages e97f606
Espen Hovlandsdal chore(test-studio): provide norwegian validation strings 49d62e7
Espen Hovlandsdal fix(i18n): hide internal helper method, use explicit exports 760a2f9
Espen Hovlandsdal chore(test-studio): include validation example with "all" types 0c3502a
Espen Hovlandsdal fix(core): re-export ValidationContext from sanity module b473973
Espen Hovlandsdal feat(i18n) allow returning localized messages from custom validators 9ebec52
Espen Hovlandsdal refactor: do not expose locale namespaces as exports e00cbf5
RitaDias feat(desk): add i18n primitives to ChangesInspector b3036a0
RitaDias feat(desk): add i18n primitives to NoChanges a45ae42
RitaDias feat(desk): add i18n primitives to LoadingContent 02c99cc
RitaDias feat(desk): add i18n primitives to ChangeList - Change all button 1aae71b
RitaDias feat(desk): add i18n primitives to FieldChange 6d6010e
RitaDias feat(desk): add i18n primitives to GroupChange 8331556
RitaDias feat(desk): add i18n primitives to DiffTooltip e9f5b42
RitaDias feat(desk): add i18n primitives to timelineMenu ac2c3fc
RitaDias feat(desk): add i18n primitives to TimelineError a7f553b
RitaDias feat(desk): add i18n primitives to timeline db821b8
RitaDias feat(desk): add i18n primitives to timelineItem + removal of unused consts 162e5dc
RitaDias refactor(desk): capitalisation on i18n for timeline 2e527d3
RitaDias refactor(desk): remove unneeded method for revLabel 9921ad0
RitaDias refactor(desk): remove unused imports + rely on i18n translate for time formatting - timelineMenu 895a3b8
RitaDias refactor(desk): remove "desk" prefix from resources b9caa15
RitaDias refactor(desk): remove "core" prefix from studio 24de805
RitaDias refactor(core): add plural to diff "revert changes" 3490c08
RitaDias refactor(desk): update error subgroup c6b9baa
RitaDias chore(desk): remove unused usememo 67c46a7
RitaDias fix(core): add 'action' subgroup to core (change panel) c7b443d
RitaDias fix(core): add 'action' subgroup to desk (change panel) 61ecda0
Espen Hovlandsdal refactor: move all change-related resources to core 77695e5
Espen Hovlandsdal refactor: pluralize revert changes confirmation 1e88672
Espen Hovlandsdal refactor: sort dependencies of useMemo call e20f492
Espen Hovlandsdal refactor: use unabbreviated resource strings ef190e6
Espen Hovlandsdal refactor: move timeline resources into core 4bbffd5
Espen Hovlandsdal refactor: import from sanity, not i18next bf51e99
Espen Hovlandsdal refactor: remove unused import b1a4eba
RitaDias feat(core): add i18n primitives to SlugInput 86d3373
Espen Hovlandsdal refactor(i18n): use inputs subgroup for resource keys 264ef2c
RitaDias feat(vision): add translation bundle + "dataset" translate key 0cc3a19
RitaDias feat(vision): add i18n primitives to VisionGui 375df2e
RitaDias feat(vision): add i18n primitives to PerspectivePopover 02ab218
RitaDias feat(vision): add i18n primitives to perspectives dropdown (adjust consts) 199751f
RitaDias feat(vision): add i18n primitives to QueryErrorDetails 8f12e07
RitaDias feat(vision): add i18n primitives to tryParseParams c2d0817
RitaDias fix(vision): add missing 't' param to tryParseParams in ParamsEditor b6ab762
Espen Hovlandsdal refactor(vision): reorganize strings by responsibility, move i18n into src f58c231
RitaDias feat(core): add i18n primitives to StudioNavBar 3e8872f
RitaDias feat(core): add i18n primitives to WorkspaceMenuButton 8b3ee10
RitaDias feat(core): add i18n primitives to NewDocumentButton 22f3e40
RitaDias feat(core): add i18n primitives to SearchDialog a0c84fa
RitaDias feat(core): add i18n primitives to Filters fbfb5f3
RitaDias feat(core): add i18n primitives to FilterPopoverContentHeader + DocumentTypesPopoverContent 782c12b
RitaDias feat(core): add i18n primitives to FilterButton 74a4c65
RitaDias feat(core): add i18n primitives to AddFilterButton 7c85b25
RitaDias feat(core): add i18n primitives to AddFilterPopoverContent + add plural for "filters" + generic no search found ff37beb
RitaDias feat(core): add i18n primitives to NoResults 45c88e9
RitaDias feat(core): add i18n primitives to SearchPopover 224e142
RitaDias feat(core): add i18n primitives to SearchResults a86f88f
RitaDias feat(core): add i18n primitives to SearchError d9b9aee
RitaDias feat(core): add i18n primitives to RecentSearches defe3bd
RitaDias feat(core): add i18n primitives to Instructions c8827e1
RitaDias feat(core): add i18n primitives to ConfigIssuesButton 60801be
RitaDias feat(core): add i18n primitives to SchemaProblemGroups 847cb1b
RitaDias feat(core): add i18n primitives to ResourcesButton 44705ba
RitaDias feat(core): add i18n primitives to ResourcesMenuItems 43f9db2
RitaDias feat(core): add i18n primitives to UserMenu + AppearanceMenu 0cd9e3b
RitaDias feat(core): add i18n primitives to LocaleMenu d89f467
RitaDias feat(core): add i18n primitives to NavDrawer 65bd1da
RitaDias feat(core): add i18n primitives to NewDocumentList 21a477f
RitaDias feat(core): add i18n primitives to NewDocumentListOption b7a932d
RitaDias feat(core): add i18n primitives to PresenceMenu 126c5b8
RitaDias feat(core): add i18n primitives to PresenceMenuItem 548dac9
RitaDias feat(core): add i18n primitives to FilterTooltip 109dca7
RitaDias feat(core): add i18n primitives to createFilterMenuItems 4489693
RitaDias feat(core): add i18n primitives to ButtonValue 43e4610
RitaDias feat(core): add i18n primitives to Asset aec0156
RitaDias feat(core): add i18n primitives to AssetSourceError d8b9866
RitaDias feat(core): add i18n primitives to Boolean 1cbbad9
RitaDias feat(core): add i18n primitives to Number 142aaa3
RitaDias feat(core): add i18n primitives to NumberRange a292a85
RitaDias feat(core): add i18n primitives to Reference 47138ff
RitaDias feat(core): add i18n primitives to ReferenceAutocomplete 1059d17
RitaDias feat(core): add i18n primitives to String f4db5f9
RitaDias feat(core): add i18n primitives to StringList 7a3841c
RitaDias feat(core): add i18n primitives to FilterError 2677178
RitaDias feat(core): add i18n primitives to SearchHeader 5d8e790
RitaDias feat(core): add i18n primitives to useSearchState 11b3330
RitaDias feat(core): add i18n primitives to documentTypesTruncated 5e20a23
RitaDias fix(core): workplace -> workspace fe85683
RitaDias feat(core): add i18n primitives to Layout (in WorkspaceAuth) 60b1586
RitaDias feat(core): add i18n primitives to WorkspaceAuth 19a804e
RitaDias refactor(core): way that intruction for search was being called ff036a4
RitaDias chore(core): update packages/sanity/src/core/i18n/bundles/studio.ts typo 3d3c74f
RitaDias chore(core): remove unused keys from workspace menu d09bf78
RitaDias chore(core): update comments for fall back links for help and resources 9bef0c3
RitaDias refactor(core): use component in NewDocumentList + ReferenceAutocomplete f3adc73
RitaDias refactor(core): use Trans component in SchemaProblemGroups c04cc05
Espen Hovlandsdal fix(core): inconsistent navbar prefix 5338da4
Espen Hovlandsdal fix(core): fix namespace generic for TFunction b16807c
Espen Hovlandsdal refactor: improve resource string names for new documents menu, workspace selector f2d5038
Espen Hovlandsdal feat(core): add sliceString/truncateString unicode utility functions 6343939
Espen Hovlandsdal refactor(i18n): move search resources out of navbar prefix 8a4620e
Espen Hovlandsdal refactor(i18n): align remaining search filter resources a8891f6
Espen Hovlandsdal refactor(i18n): drop configuration issues translations for now f4a6fb4
Espen Hovlandsdal refactor(i18n): drop navbar prefix for help & resources menu cb76b07
Espen Hovlandsdal refactor(i18n): prepare to send locale for help & resources request 4d37f89
Espen Hovlandsdal refactor(i18n): drop navbar prefix for user menu resources 894a5dc
Espen Hovlandsdal refactor(i18n): drop navbar prefix for presence resources 8fdc4b5
Bjørge Næss feat(i18n): implement simplified Translate component (#4921) c42d65b
Espen Hovlandsdal refactor(i18n): drop unused imports in useLocale hook b48aebd
Espen Hovlandsdal refactor(i18n): allow string arrays as values c61fe1c
Espen Hovlandsdal refactor(i18n): make components prop required for e970afc
Bjørge Næss feat(i18n): convert date/datetime input strings to use i18n primitives (#4973) 8ecf93a
Espen Hovlandsdal feat(i18n): add useIntlListFormat hook 259e901
Espen Hovlandsdal feat(i18n): localize reference input 6289e54
Espen Hovlandsdal fix(i18n): improve error message on whitespace in translation components 0af303b
Espen Hovlandsdal feat(i18n): localize reference preview 8e0b035
Espen Hovlandsdal chore: minor norwegian i18n fix (timeAgo needs complete refactoring) 52a42d7
Espen Hovlandsdal refactor(i18n): drop unused value in locale message 2591ef6
Espen Hovlandsdal refactor(i18n): use consistent naming (searchTerm over searchString) b501d21
Espen Hovlandsdal refactor(i18n): add missing visibility tag to useIntlListFormat 92ba78f
RitaDias feat(core): add i18n primitives to Grid/ErrorItem + List/ErrorItem 123b06d
RitaDias feat(core): add i18n primitives to GridArrayInput + ListArrayInput 13162e1
RitaDias feat(core): add i18n primitives to IncompatibleItemType (array, grid, list) 8e563d5
RitaDias feat(core): add i18n primitives to GridItem + PreviewItem 0945e09
RitaDias feat(core): add i18n primitives to ArrayOfObjectsFunctions + ArrayOfPrimitivesFunctions 524a664
RitaDias refactor(core): use Trans component in InsertMenu e1c5678
RitaDias feat(core): add i18n primitives to uploadTarget in array inputs 7b1c2b8
RitaDias feat(core): add i18n primitives to ArrayOfObjectsItem e0f2c69
Espen Hovlandsdal refactor: drop unused imports a7c344a
Espen Hovlandsdal refactor(i18n): drop use of <Trans /> component b204882
Espen Hovlandsdal fix(i18n): use translated strings for primitive array item row actions 8da638f
Espen Hovlandsdal refactor(i18n): remove unused import c34ab69
Espen Hovlandsdal chore(test-studio): use norwegian schema for allTypes type feefa56
Bjørge Næss feat(i18n): convert document actions strings to use i18n primitives (#4968) caf69d4
Bjørge Næss feat(i18n): convert file, image and imagetool input strings to use i18n primitives (#4984) 23b9658
Tommy Petty feat(i18n): convert review changes button to use i18n primitives (#4993) 4b769b5
Tommy Petty fix(i18n): camelCase to kebab-case for resource ids (#4994) 71ec6ad
Espen Hovlandsdal feat(i18n): add internal intlCache for instances 9540581
Espen Hovlandsdal refactor(i18n): make useIntlListFormat() hook use intlCache aeeb20c
Espen Hovlandsdal feat(i18n): implement relative time/timeAgo using i18n primitives 4984d54
Espen Hovlandsdal refactor(i18n): reimplement timeAgo using Intl APIs only be7182a
Espen Hovlandsdal refactor: use RelativeTime instead of TimeAgo e0e7caf
Espen Hovlandsdal test: add LocaleProvider to TestProvider c4cf286
Espen Hovlandsdal feat(i18n): use i18n primitives for publish status button 96b6862
Espen Hovlandsdal chore(i18n): add missing norwegian resource strings a8f44de
Espen Hovlandsdal feat(i18n): use i18n primitives for document changes, validation panels f891949
Espen Hovlandsdal feat(i18n): use i18n primitives for inspect dialog, document pane menu items 6910c6d
Espen Hovlandsdal refactor(i18n): use kebabcased resource names for "help & resources" 1d12b35
Espen Hovlandsdal feat(i18n): add flag for debugging i18n (#5010) b5e328c
Tommy Petty chore(i18n): add the i18next/no-literal-string eslint rule (#4999) 6a56e97
Espen Hovlandsdal refactor(i18n): pass locale to help/versions check (#5022) 1f2e719
Espen Hovlandsdal feat(i18n): provide formatted duration hook (useFormattedDuration) (#5014) 9ef27b8
Espen Hovlandsdal fix(i18n): add missing calendar labels (#5011) ef71aab
Tommy Petty chore(i18n): add no-literal-string lint exceptions for workshop dirs (#5064) 73b88b0
Rico Kahler chore: add eslint-plugin-no-attribute-string-literals (#5086) 685db47
Tommy Petty feat(i18n): add localization for UnknownPaneType (#5019) c15012c
Tommy Petty feat(i18n): adds translation for desk panes (#5085) 669ef64
Rico Kahler feat(desk): localize desk tool components 0e91a72
Rico Kahler chore(core): add release tags to RelativeTime 1f9141a
Rico Kahler fix(i18n): move quotes to resource string 6c77039
Espen Hovlandsdal feat(i18n): allow certain simple HTML tags when using Translate component (#5114) 7c192c8
Espen Hovlandsdal fix(i18n): allow < and > before/after tags in resource strings ccf2323
Espen Hovlandsdal fix(i18n): allow more types as values for Translate component f1f88b4
Espen Hovlandsdal feat(i18n): add useUnitFormatter hook 206428d
Espen Hovlandsdal feat(i18n): add useIntlDateTimeFormat hook 0a28b22
Espen Hovlandsdal feat(i18n): localize global search filters and results 461a268
Espen Hovlandsdal feat(i18n): allow debugging i18n by using right-to-left modifier d6860bf
Espen Hovlandsdal fix(i18n): drop microsecond, nanosecond from unit formatter e3d8760
Espen Hovlandsdal feat(i18n): translate/localize diff components (#5129) 036bcc4
Espen Hovlandsdal refactor: minor type import adjustments 52e716f
Espen Hovlandsdal fix(i18n): pass through the count parameter to replacement values (#5138) bb65da9
Espen Hovlandsdal feat(i18n): translate form field components (#5137) e69303e
Tommy Petty fix(i18n): rework translation keys for form/inputs/files (#5134) 9680513
Tommy Petty feat(i18n): updates translation for object form inputs (#5135) b61a804
Tommy Petty chore(i18n): temporarily ignore i18n in Comments files (#5143) 32e9d8d
Rico Kahler feat(i18n): fix confirm delete dialog (#5139) 5a538b2
Espen Hovlandsdal feat(i18n): translate preview components (#5159) 023f4f7
Espen Hovlandsdal feat(i18n): translate/localize references, cross-dataset references 75e6198
Espen Hovlandsdal refactor(i18n): simplify "no results" message by using simple components 7315501
Espen Hovlandsdal refactor(i18n): simplify simple translation usages 9ddda8e
Tommy Petty chore(i18n): updates eslint config to exclude more comments files (#5167) 0e476ff
Tommy Petty chore(i18n): fixes missing react import for some files (#5182) 7bf1e4f
Bjørge Næss fix(core): remove unused css selector 18152ec
Bjørge Næss refactor(form): improve internal structure of default asset source 8dfd3eb
Bjørge Næss feat(i18n): localize default asset source 89791c5
Rico Kahler feat(i18n) localize insufficient permissions message (#5140) 602faef
Tommy Petty chore(i18n): adds missing react import (#5206) 5b58d3f
Espen Hovlandsdal chore(i18n): add missing Norwegian translations ed28672
Espen Hovlandsdal chore(i18n): add missing Norwegian desk translations 1be5c7e
Espen Hovlandsdal fix(i18n): correct title text for pane context menu button 52a0faf
Espen Hovlandsdal feat(i18n): expose useIntlDateTimeFormat hook 00df522
Espen Hovlandsdal feat(desk): use localized date time format for timeline 49c3b94
Tommy Petty chore(i18n): ignore i18n eslint rules for files out of scope for translation (#5220) d4c7597
Tommy Petty feat(i18n): adds missing translation for a few random files d4939da
Espen Hovlandsdal feat(i18n): translate portable text editor (#5225) 532569e
Espen Hovlandsdal refactor(i18n): adjust types to correct i18nTitle rename 0f8e783
Espen Hovlandsdal feat(i18n): add a few missing translations for aria labels 7de94df
Espen Hovlandsdal refactor(core): drop duplicate export of ValidationContext 9671724
Espen Hovlandsdal refactor(core): prevent circular reference e243f6e
Espen Hovlandsdal feat(i18n): translate insert block/inline object actions for PTE cc2e970
Espen Hovlandsdal refactor(i18n): align changes i18n keys (change => changes) affb972
Espen Hovlandsdal feat(i18n): translate vision to norwegian 53da0a9
Espen Hovlandsdal refactor(i18n): add missing norwegian strings 5c53fa9
Espen Hovlandsdal refactor(i18n): rename desk namespace to structure c438344
Espen Hovlandsdal refactor(i18n): allow english strings in desk rename prompt 87907c3
Espen Hovlandsdal fix(i18n): use static titles for workspace links a7239ea
Espen Hovlandsdal refactor: work around console warning from eslint 1ad49fc
ecospark[bot] chore(deps): dedupe yarn.lock (#5289) 54b2350
ecospark[bot] chore(deps): dedupe yarn.lock (#5295) 5bf0088
Pedro Bonamin fix(dialog): drag events in edit portal are applied to underlying elements (#5282) a7e0ec8
Robin Pyon fix: ensure image tool drag handles work when both coarse + fine pointers are present (#5277) 69ed0fc
RD fix(cli): next template image url builder not returning a url (#5293) 0bfc989
Espen Hovlandsdal feat(i18n): allow debug mode that only logs 6a544b0
Espen Hovlandsdal feat(i18n): add helper to remove undefined locale resources from object 60176a3
Espen Hovlandsdal fix(i18n): correct return type for undefined locale resource helper 0f3eae0
Espen Hovlandsdal fix(i18n): fix incorrect key being used for create button 2e57c5b
Cody Olsen fix: update rollup and esbuild tooling (#5243) 962c11c
ecospark[bot] chore(deps): dedupe yarn.lock (#5301) 9ea7537
Espen Hovlandsdal fix(i18n): inconsistent name for document inspector item 26b795b
Espen Hovlandsdal refactor(i18n): use separate prefix for changes timeline operations fa9392c
Espen Hovlandsdal refactor(i18n): sort resource keys alphabetically df3152f
Binoy Patel test(ci): move cli test to separate workflow without sharding (#5292) 91d2481
Binoy Patel fix(core): add missing assetRequired type to image and file rule (#5303) 1916c31
Binoy Patel feat(i18n): localize datetime input placeholder (#5304) c91c16f
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.0.13 (#5312) 31ff42a
Robin Neatherway fix(cli): make dataset import --skip-cross-dataset-references flag work (#5297) c9877a7
Tommy Petty chore(core): update CODEOWNERS file to use teams over individuals (#5315) 70a3fbc
Espen Hovlandsdal fix(i18n): correct permission check banner interpolation (#5326) 7b83ad5
Espen Hovlandsdal fix(i18n): invalid key for cdr "copy id to clipboard" button tooltip (#5324) 86a09fd
Binoy Patel feat(i18n): localize PTE activation message (#5305) f0b042e
Espen Hovlandsdal fix(i18n): key being used instead of translated value (#5323) d2b7ec6
Espen Hovlandsdal chore(test-studio): drop no-nb locale plugin (#5325) 1c4b3ad
Robin Neatherway fix(cli): improve help output of dataset import command (#5318) 5018ea0
Robin Pyon fix(i18n): use correct keys for file asset source headings and accepted types (#5328) dddcdc1
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to ^3.3.2 (#5330) 7fc47af
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.1.1 (#5331) 3bd2fe3
Herman Wikner fix(core): presence menu ui (#5298) f2f6f40
Herman Wikner fix(core): field actions hidden state (#5317) 92f35f1
Espen Hovlandsdal fix(comments): experimental API warning for dataset profile request (#5329) 55edc2e
Cody Olsen fix: delete unused focus managers internals (#5283) 5d3e825

Don't miss a new vision release

NewReleases is sending notifications on new releases.