diff options
author | 2022-08-26 00:20:45 +0530 | |
---|---|---|
committer | 2022-08-25 14:50:45 -0400 | |
commit | 3b5f34d606dddff433e8e6fd88a609d246864984 (patch) | |
tree | 1a5ac0c5fe4aaf5b72153ee8d0978ad30ecee969 /packages/integrations/react/client.js | |
parent | 1aa5208cbeca89a989bef6883c634c645cd8af34 (diff) | |
download | astro-3b5f34d606dddff433e8e6fd88a609d246864984.tar.gz astro-3b5f34d606dddff433e8e6fd88a609d246864984.tar.zst astro-3b5f34d606dddff433e8e6fd88a609d246864984.zip |
Adding time-slicing with `startTransition` to prevent hydration from blocking the main thread for too long for those users who immediately scroll. (#4313)
* Adding timeslicing for hydrating :)
* update
Diffstat (limited to 'packages/integrations/react/client.js')
-rw-r--r-- | packages/integrations/react/client.js | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/integrations/react/client.js b/packages/integrations/react/client.js index b41d7845a..753b4a21c 100644 --- a/packages/integrations/react/client.js +++ b/packages/integrations/react/client.js @@ -1,4 +1,4 @@ -import { createElement } from 'react'; +import { createElement, startTransition } from 'react'; import { createRoot, hydrateRoot } from 'react-dom/client'; import StaticHtml from './static-html.js'; @@ -27,7 +27,11 @@ export default (element) => delete element[rootKey]; } if (client === 'only') { - return createRoot(element).render(componentEl); + return startTransition(() => { + createRoot(element).render(componentEl); + }) } - return hydrateRoot(element, componentEl); + return startTransition(() => { + hydrateRoot(element, componentEl); + }) }; |