# Background revalidation, simplified resource config, and new permission and mutation hooks

**Version:** v3.0.0

**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**

```shell
npm install @sanity/sdk-react@latest
```

**pnpm**

```shell
pnpm add @sanity/sdk-react@latest
```

**yarn**

```shell
yarn add @sanity/sdk-react@latest
```

**bun**

```shell
bun add @sanity/sdk-react@latest
```

Otherwise, work through the [App SDK v2 to v3 migration guide](https://www.sanity.io/docs/help/sdk-v2-to-v3).

### Breaking changes

- **Project and organization hooks revalidate in the background.** `useProject`, `useProjects`, `useOrganization`, and `useOrganizations` now 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's `error` property 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`, where `useDashboardOrganizationId` is now `useOrganizationId` and `useDashboardNavigate` is now `useNavigate`.
- **Deprecated APIs are removed.** This includes the `source`, `sourceName`, and `sources` options (use `resource`, `resourceName`, and the `resources` prop), the `Source`-suffixed resource types (use their `Resource` counterparts), `getPreviewState` and `resolvePreview` (use `getProjectionState` and `resolveProjection`), the `studioMode`, `ValidProjection`, `sanityConfigs`, and `ProjectWithoutMembers` names, 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.** `useSanityInstance` no longer accepts a config argument, and `SanityInstance.getParent()`, `createChild()`, and `match()` are removed. Pass an explicit `resource` to individual operations; the singular `resource` option on `SanityConfig` now works as the instance's default.

