;
+}
\ No newline at end of file
diff --git a/examples/suspense/app/rsc/[user]/[repo]/loading.jsx b/examples/suspense/app/rsc/[user]/[repo]/loading.jsx
new file mode 100644
index 000000000..ac709eb97
--- /dev/null
+++ b/examples/suspense/app/rsc/[user]/[repo]/loading.jsx
@@ -0,0 +1,3 @@
+export default function Loading() {
+ return
Loading...
;
+}
\ No newline at end of file
diff --git a/examples/suspense/app/rsc/[user]/[repo]/page.jsx b/examples/suspense/app/rsc/[user]/[repo]/page.jsx
new file mode 100644
index 000000000..762190dcb
--- /dev/null
+++ b/examples/suspense/app/rsc/[user]/[repo]/page.jsx
@@ -0,0 +1,23 @@
+import Repo from './repo'
+import fetcher from '../../../../libs/fetch'
+import Link from 'next/link'
+import { Suspense } from 'react'
+const Page = ({ params }) => {
+ const { user, repo } = params
+ const id = `${user}/${repo}`
+ const serverData = fetcher('http://localhost:3000/api/data?id=' + id)
+ return (
+
+
Repo: {id}
+ Loading stats
}>
+
+
+
+
+ Back
+
+ )
+}
+
+
+export default Page
\ No newline at end of file
diff --git a/examples/suspense/app/rsc/[user]/[repo]/repo.jsx b/examples/suspense/app/rsc/[user]/[repo]/repo.jsx
new file mode 100644
index 000000000..a87c8df0f
--- /dev/null
+++ b/examples/suspense/app/rsc/[user]/[repo]/repo.jsx
@@ -0,0 +1,21 @@
+'use client'
+import fetcher from '../../../../libs/fetch'
+import useSWR from 'swr'
+
+const Repo = ({ id, serverData }) => {
+ const { data } = useSWR('/api/data?id=' + id, fetcher, { suspense: true, fallbackData: serverData })
+ return (
+ <>
+ {data ? (
+
+
forks: {data.forks_count}
+
stars: {data.stargazers_count}
+
watchers: {data.watchers}
+
+ ) : null}
+
+ >
+ )
+}
+
+export default Repo
\ No newline at end of file
diff --git a/examples/suspense/app/rsc/loading.jsx b/examples/suspense/app/rsc/loading.jsx
new file mode 100644
index 000000000..ac709eb97
--- /dev/null
+++ b/examples/suspense/app/rsc/loading.jsx
@@ -0,0 +1,3 @@
+export default function Loading() {
+ return
Loading...
;
+}
\ No newline at end of file
diff --git a/examples/suspense/app/rsc/page.jsx b/examples/suspense/app/rsc/page.jsx
new file mode 100644
index 000000000..a6df667a6
--- /dev/null
+++ b/examples/suspense/app/rsc/page.jsx
@@ -0,0 +1,8 @@
+import fetcher from '../../libs/fetch'
+import Repos from './repos'
+const Page = () => {
+ const serverData = fetcher('http://localhost:3000/api/data')
+ return
+}
+
+export default Page
diff --git a/examples/suspense/app/rsc/repos.jsx b/examples/suspense/app/rsc/repos.jsx
new file mode 100644
index 000000000..557641844
--- /dev/null
+++ b/examples/suspense/app/rsc/repos.jsx
@@ -0,0 +1,24 @@
+'use client'
+import useSWR from 'swr'
+import fetcher from '../../libs/fetch'
+import Link from 'next/link'
+
+const Repos = ({ serverData }) => {
+ const { data } = useSWR('/api/data', fetcher, {
+ suspense: true,
+ fallbackData: serverData
+ })
+ return (
+ <>
+ {data.map(project => (
+
+
+ {project}
+
+
+ ))}
+ >
+ )
+}
+
+export default Repos
\ No newline at end of file
diff --git a/examples/suspense/next-env.d.ts b/examples/suspense/next-env.d.ts
new file mode 100644
index 000000000..fd36f9494
--- /dev/null
+++ b/examples/suspense/next-env.d.ts
@@ -0,0 +1,6 @@
+///
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/examples/suspense/pages/[user]/[repo].js b/examples/suspense/pages/[user]/[repo].js
index e7fef9f7f..178762d4d 100644
--- a/examples/suspense/pages/[user]/[repo].js
+++ b/examples/suspense/pages/[user]/[repo].js
@@ -2,13 +2,10 @@ import { Suspense } from 'react'
import Link from 'next/link'
import fetcher from '../../libs/fetch'
import ErrorHandling from '../../components/error-handling'
-
import useSWR from 'swr'
-const isServer = typeof window === 'undefined'
-
-const Detail = ({ id }) => {
- const { data } = useSWR('/api/data?id=' + id, fetcher, { suspense: true })
+const Detail = ({ id, serverData }) => {
+ const { data } = useSWR('/api/data?id=' + id, fetcher, { suspense: true, fallbackData: serverData })
return (
<>
@@ -23,25 +20,25 @@ const Detail = ({ id }) => {
)
}
-export default function Repo() {
- const id =
- typeof window !== 'undefined' ? window.location.pathname.slice(1) : ''
-
+export default function Repo({ id, serverData }) {
return (