Background revalidation, simplified resource config, and new permission and mutation hooks
Published: August 25, 2026
App SDK v3
v3 is a major release of the App SDK. The project and organization hooks now revalidate their data in the background, several long-deprecated APIs are removed, and agent, comlink, and dashboard utilities moved to dedicated entry points. For apps that don't touch those areas, this is a one-line upgrade:
npm install @sanity/sdk-react@latestpnpm add @sanity/sdk-react@latestyarn add @sanity/sdk-react@latestbun add @sanity/sdk-react@latestOtherwise, work through the App SDK v2 to v3 migration guide.
Breaking changes
- Project and organization hooks revalidate in the background.
useProject,useProjects,useOrganization, anduseOrganizationsnow return{data, isFetching, error, refetch}instead of the raw value. Fetched data stays fresh for 30 seconds, then refetches in the background, and a failed background refetch surfaces through the hook'serrorproperty instead of your error boundary. - Agent, comlink, and dashboard utilities moved to dedicated entry points. Agent functions now live in
@sanity/sdk/agent, comlink utilities in@sanity/sdk/comlink, and dashboard hooks in@sanity/sdk-react/dashboard, whereuseDashboardOrganizationIdis nowuseOrganizationIdanduseDashboardNavigateis nowuseNavigate. - Deprecated APIs are removed. This includes the
source,sourceName, andsourcesoptions (useresource,resourceName, and theresourcesprop), theSource-suffixed resource types (use theirResourcecounterparts),getPreviewStateandresolvePreview(usegetProjectionStateandresolveProjection), thestudioMode,ValidProjection,sanityConfigs, andProjectWithoutMembersnames, and a set of internal helpers that were never intended for use outside the SDK's React layer. The migration guide lists each replacement. - Child instances are gone.
useSanityInstanceno longer accepts a config argument, andSanityInstance.getParent(),createChild(), andmatch()are removed. Pass an explicitresourceto individual operations; the singularresourceoption onSanityConfignow works as the instance's default.