From fd404981169efce66775fdea1ab19f7b876dad8b Mon Sep 17 00:00:00 2001 From: Zai Shi Date: Tue, 25 Jun 2024 17:07:22 +0200 Subject: [PATCH] Added SsrScript to work around suspended script (#99) * simplified browser script * improved code structure * added ssr script --- .../components/elements/maybe-full-page.tsx | 14 ++---- .../components/elements/ssr-layout-effect.tsx | 13 ++++++ .../stack/src/providers/theme-provider.tsx | 40 ++++++++++++++++- packages/stack/src/utils/browser-script.tsx | 45 +++---------------- 4 files changed, 60 insertions(+), 52 deletions(-) create mode 100644 packages/stack/src/components/elements/ssr-layout-effect.tsx diff --git a/packages/stack/src/components/elements/maybe-full-page.tsx b/packages/stack/src/components/elements/maybe-full-page.tsx index 99ff7c5ee..864a40bdc 100644 --- a/packages/stack/src/components/elements/maybe-full-page.tsx +++ b/packages/stack/src/components/elements/maybe-full-page.tsx @@ -1,7 +1,8 @@ "use client"; import { Container } from "@stackframe/stack-ui"; -import React, { useEffect, useId } from "react"; +import React, { useId } from "react"; +import { SsrScript } from "./ssr-layout-effect"; export function MaybeFullPage({ children, @@ -23,13 +24,6 @@ export function MaybeFullPage({ el.style.minHeight = \`calc(100vh - \${offset}px)\`; })(${JSON.stringify([id])})`; - useEffect(() => { - // TODO fix workaround: React has a bug where it doesn't run the script on the first CSR render if SSR has been skipped due to suspense - // As a workaround, we run the script in the