summaryrefslogtreecommitdiff
path: root/packages/integrations/react/client.js
diff options
context:
space:
mode:
authorGravatar Sanjaiyan Parthipan <parthipankalayini@gmail.com> 2022-08-26 00:20:45 +0530
committerGravatar GitHub <noreply@github.com> 2022-08-25 14:50:45 -0400
commit3b5f34d606dddff433e8e6fd88a609d246864984 (patch)
tree1a5ac0c5fe4aaf5b72153ee8d0978ad30ecee969 /packages/integrations/react/client.js
parent1aa5208cbeca89a989bef6883c634c645cd8af34 (diff)
downloadastro-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.js10
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);
+ })
};