Skip to content

Commit

Permalink
chore: updated demo site to renderReadableStream
Browse files Browse the repository at this point in the history
  • Loading branch information
nickytonline committed Feb 21, 2023
1 parent 008f627 commit cdf0ac6
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 20 deletions.
16 changes: 15 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@
"dependencies": {
"@netlify/edge-functions": "^2.0.0",
"husky": "^8.0.3",
"if-env": "^1.0.4"
"if-env": "^1.0.4",
"isbot": "^3.6.6"
},
"engines": {
"node": ">=14"
Expand Down
42 changes: 24 additions & 18 deletions packages/edge-demo-site/app/entry.client.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
import { RemixBrowser } from '@remix-run/react'
import { startTransition, StrictMode } from 'react'
import { hydrateRoot } from 'react-dom/client'
import type { EntryContext } from '@remix-run/server-runtime'
import { RemixServer } from '@remix-run/react'
import { renderToReadableStream } from 'react-dom/server'
import isbot from 'isbot'

function hydrate() {
startTransition(() => {
hydrateRoot(
document,
<StrictMode>
<RemixBrowser />
</StrictMode>,
)
export default async function handleRequest(
request: Request,
responseStatusCode: number,
responseHeaders: Headers,
remixContext: EntryContext,
) {
const body = await renderToReadableStream(<RemixServer context={remixContext} url={request.url} />, {
onError() {
responseStatusCode = 500
},
})
}

if (typeof requestIdleCallback === 'function') {
requestIdleCallback(hydrate)
} else {
// Safari doesn't support requestIdleCallback
// https://caniuse.com/requestidlecallback
setTimeout(hydrate, 1)
if (isbot(request.headers.get('user-agent'))) {
await body.allReady
}

responseHeaders.set('Content-Type', 'text/html')

return new Response(body, {
status: responseStatusCode,
headers: responseHeaders,
})
}

0 comments on commit cdf0ac6

Please sign in to comment.