Skip to content

Commit 1c1f714

Browse files
committed
chore: updated demo site to renderReadableStream
1 parent 8a05efd commit 1c1f714

File tree

3 files changed

+41
-21
lines changed

3 files changed

+41
-21
lines changed

package-lock.json

Lines changed: 15 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@
5555
"dependencies": {
5656
"@netlify/edge-functions": "^2.0.0",
5757
"husky": "^8.0.3",
58-
"if-env": "^1.0.4"
58+
"if-env": "^1.0.4",
59+
"isbot": "^3.6.6"
5960
},
6061
"engines": {
6162
"node": ">=14"
Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
import { RemixBrowser } from '@remix-run/react'
2-
import { startTransition, StrictMode } from 'react'
3-
import { hydrateRoot } from 'react-dom/client'
1+
import type { EntryContext } from '@remix-run/server-runtime'
2+
import { RemixServer } from '@remix-run/react'
3+
import { renderToReadableStream } from 'react-dom/server'
4+
import isbot from 'isbot'
45

5-
function hydrate() {
6-
startTransition(() => {
7-
hydrateRoot(
8-
document,
9-
<StrictMode>
10-
<RemixBrowser />
11-
</StrictMode>,
12-
)
6+
export default async function handleRequest(
7+
request: Request,
8+
responseStatusCode: number,
9+
responseHeaders: Headers,
10+
remixContext: EntryContext,
11+
) {
12+
const body = await renderToReadableStream(<RemixServer context={remixContext} url={request.url} />, {
13+
onError() {
14+
responseStatusCode = 500
15+
},
1316
})
14-
}
1517

16-
if (typeof requestIdleCallback === 'function') {
17-
requestIdleCallback(hydrate)
18-
} else {
19-
// Safari doesn't support requestIdleCallback
20-
// https://caniuse.com/requestidlecallback
21-
setTimeout(hydrate, 1)
18+
if (isbot(request.headers.get('user-agent'))) {
19+
await body.allReady
20+
}
21+
22+
responseHeaders.set('Content-Type', 'text/html')
23+
24+
return new Response(body, {
25+
status: responseStatusCode,
26+
headers: responseHeaders,
27+
})
2228
}

0 commit comments

Comments
 (0)