diff --git a/.changeset/better-forks-ring.md b/.changeset/better-forks-ring.md
new file mode 100644
index 00000000000..6b4ba92156f
--- /dev/null
+++ b/.changeset/better-forks-ring.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": major
+---
+
+Remove `type DraftPerspective`, `type DraftEnvironment` and `type ClientPerspective` from `import 'next-sanity/hooks'`
diff --git a/.changeset/bright-jokes-stay.md b/.changeset/bright-jokes-stay.md
new file mode 100644
index 00000000000..3204bdba86c
--- /dev/null
+++ b/.changeset/bright-jokes-stay.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": major
+---
+
+Remove the experimental `` API
diff --git a/.changeset/fair-rats-sell.md b/.changeset/fair-rats-sell.md
new file mode 100644
index 00000000000..cb32c8d6e4e
--- /dev/null
+++ b/.changeset/fair-rats-sell.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": patch
+---
+
+Add temp debug function
diff --git a/.changeset/four-jobs-type.md b/.changeset/four-jobs-type.md
new file mode 100644
index 00000000000..afc60d24202
--- /dev/null
+++ b/.changeset/four-jobs-type.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": major
+---
+
+Merge `next-sanity/experimental/live` export into `next-sanity/live`
diff --git a/.changeset/free-hoops-marry.md b/.changeset/free-hoops-marry.md
new file mode 100644
index 00000000000..cf8da2910c5
--- /dev/null
+++ b/.changeset/free-hoops-marry.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": patch
+---
+
+Fix missing server action
diff --git a/.changeset/heavy-doors-ask.md b/.changeset/heavy-doors-ask.md
new file mode 100644
index 00000000000..4a6c3761997
--- /dev/null
+++ b/.changeset/heavy-doors-ask.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": minor
+---
+
+Add `import {sanity} from 'next-sanity/cache-life'`
diff --git a/.changeset/moody-news-stay.md b/.changeset/moody-news-stay.md
new file mode 100644
index 00000000000..e688bcd00ff
--- /dev/null
+++ b/.changeset/moody-news-stay.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": patch
+---
+
+Remove `next-sanity/debug`
diff --git a/.changeset/pre.json b/.changeset/pre.json
new file mode 100644
index 00000000000..1faa183a046
--- /dev/null
+++ b/.changeset/pre.json
@@ -0,0 +1,22 @@
+{
+ "mode": "pre",
+ "tag": "cache-components",
+ "initialVersions": {
+ "next-sanity": "12.0.3"
+ },
+ "changesets": [
+ "better-forks-ring",
+ "bright-jokes-stay",
+ "fair-rats-sell",
+ "four-jobs-type",
+ "free-hoops-marry",
+ "heavy-doors-ask",
+ "moody-news-stay",
+ "some-towns-rush",
+ "tall-flies-sing",
+ "tender-parents-mix",
+ "true-dragons-wink",
+ "twelve-moose-work",
+ "yummy-bears-juggle"
+ ]
+}
diff --git a/.changeset/some-towns-rush.md b/.changeset/some-towns-rush.md
new file mode 100644
index 00000000000..a6eca02d5e8
--- /dev/null
+++ b/.changeset/some-towns-rush.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": major
+---
+
+`sanityFetch` and `SanityLive` are replaced by `fetch` and `SanityLive`
diff --git a/.changeset/tall-flies-sing.md b/.changeset/tall-flies-sing.md
new file mode 100644
index 00000000000..f8abbb15b75
--- /dev/null
+++ b/.changeset/tall-flies-sing.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": patch
+---
+
+Dedupe `resolvePerspectiveFromCookies`
diff --git a/.changeset/tender-parents-mix.md b/.changeset/tender-parents-mix.md
new file mode 100644
index 00000000000..6a26e5d2697
--- /dev/null
+++ b/.changeset/tender-parents-mix.md
@@ -0,0 +1,6 @@
+---
+"next-sanity": patch
+---
+
+Test pre release
+
\ No newline at end of file
diff --git a/.changeset/true-dragons-wink.md b/.changeset/true-dragons-wink.md
new file mode 100644
index 00000000000..e2bab817bf8
--- /dev/null
+++ b/.changeset/true-dragons-wink.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": patch
+---
+
+Use private import for `#isCorsOriginError`
diff --git a/.changeset/twelve-moose-work.md b/.changeset/twelve-moose-work.md
new file mode 100644
index 00000000000..ce634777c52
--- /dev/null
+++ b/.changeset/twelve-moose-work.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": major
+---
+
+Removed `type DefineSanityLiveOptions`, `type DefinedSanityFetchType` and `type DefinedSanityLiveProps` type exports
diff --git a/.changeset/yummy-bears-juggle.md b/.changeset/yummy-bears-juggle.md
new file mode 100644
index 00000000000..4082a2f664a
--- /dev/null
+++ b/.changeset/yummy-bears-juggle.md
@@ -0,0 +1,5 @@
+---
+"next-sanity": minor
+---
+
+Add `resolvePerspectiveFromCookies` export
diff --git a/apps/mvp/app/(website)/PostsLayout.tsx b/apps/mvp/app/(website)/PostsLayout.tsx
index f25d96f601c..08760d4a8a4 100644
--- a/apps/mvp/app/(website)/PostsLayout.tsx
+++ b/apps/mvp/app/(website)/PostsLayout.tsx
@@ -34,7 +34,7 @@ export type PostsLayoutProps = {
}
export default async function Posts(props: PostsLayoutProps) {
- 'use cache: remote'
+ 'use cache'
const posts = postsQuery.parse(props.data)
// oxlint-disable-next-line no-console
diff --git a/apps/mvp/app/(website)/layout.tsx b/apps/mvp/app/(website)/layout.tsx
index dc2645a2ddb..0f8a9b4e639 100644
--- a/apps/mvp/app/(website)/layout.tsx
+++ b/apps/mvp/app/(website)/layout.tsx
@@ -1,18 +1,16 @@
'use cache'
import '../globals.css'
-import {
- // cookies,
- draftMode,
-} from 'next/headers'
+import {resolvePerspectiveFromCookies, type LivePerspective} from 'next-sanity/live'
import {VisualEditing} from 'next-sanity/visual-editing'
+import {refresh, updateTag} from 'next/cache'
+import {cookies, draftMode} from 'next/headers'
+import {Suspense} from 'react'
import {DebugStatus} from './DebugStatus'
import {FormStatusLabel} from './FormStatus'
-import {SanityLive} from './live'
+import {Live} from './live'
import {RefreshButton} from './RefreshButton'
-// import {resolvePerspectiveFromCookies} from 'next-sanity/experimental/live'
-// import {Suspense} from 'react'
async function toggleDraftMode() {
'use server'
@@ -26,6 +24,16 @@ async function toggleDraftMode() {
}
}
+async function SanityLive() {
+ let perspective: LivePerspective = 'published'
+ const isDraftMode = (await draftMode()).isEnabled
+ if (isDraftMode) {
+ perspective = await resolvePerspectiveFromCookies({cookies: await cookies()})
+ }
+
+ return
+}
+
export default async function RootLayout({children}: {children: React.ReactNode}) {
const isDraftMode = (await draftMode()).isEnabled
return (
@@ -33,6 +41,33 @@ export default async function RootLayout({children}: {children: React.ReactNode}
+
Debug: {JSON.stringify({env: 'unknown'})}
+
+
+
+
Draft mode: {isDraftMode ? 'On' : 'Off'}
{isDraftMode &&
}