diff --git a/app/react/src/client/preview/render.tsx b/app/react/src/client/preview/render.tsx
index cb972f17d6dc..2ed55bec144b 100644
--- a/app/react/src/client/preview/render.tsx
+++ b/app/react/src/client/preview/render.tsx
@@ -39,10 +39,10 @@ const WithCallback: FC<{ callback: () => void; children: ReactElement }> = ({
children,
}) => {
// See https://github.com/reactwg/react-18/discussions/5#discussioncomment-2276079
- const once = useRef(false);
+ const once = useRef<() => void>();
useLayoutEffect(() => {
- if (once.current) return;
- once.current = true;
+ if (once.current === callback) return;
+ once.current = callback;
callback();
}, [callback]);
@@ -55,11 +55,7 @@ const renderElement = async (node: ReactElement, el: Element) => {
return new Promise((resolve) => {
if (root) {
- root.render(
- resolve(null)}>
- {node}
-
- );
+ root.render( resolve(null)}>{node});
} else {
ReactDOM.render(node, el, () => resolve(null));
}