From 77134c6a171accee1326b96ea3ea2acc65a25e16 Mon Sep 17 00:00:00 2001 From: Chris Villa Date: Tue, 27 Jan 2026 17:22:20 +0000 Subject: [PATCH] feat: add iframe.srcDoc param --- packages/core/components/AutoFrame/index.tsx | 7 +++++-- packages/core/types/API/index.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/core/components/AutoFrame/index.tsx b/packages/core/components/AutoFrame/index.tsx index f73d03eccd..4c7d4e1393 100644 --- a/packages/core/components/AutoFrame/index.tsx +++ b/packages/core/components/AutoFrame/index.tsx @@ -8,6 +8,7 @@ import { } from "react"; import hash from "object-hash"; import { createPortal } from "react-dom"; +import { usePropsContext } from "../Puck"; const styleSelector = 'style, link[rel="stylesheet"]'; @@ -285,7 +286,6 @@ const CopyHostStyles = ({ }); // Reset HTML (inside the promise) so in case running twice (i.e. for React Strict mode) - doc.head.innerHTML = ""; // Inject initial values in bulk doc.head.append(...filtered); @@ -340,6 +340,9 @@ function AutoFrame({ const [ctx, setCtx] = useState({}); const [mountTarget, setMountTarget] = useState(); const [stylesLoaded, setStylesLoaded] = useState(false); + const { + srcDoc = '
', + } = usePropsContext().iframe ?? {}; useEffect(() => { if (frameRef.current) { @@ -368,7 +371,7 @@ function AutoFrame({ {...props} className={className} id={id} - srcDoc='
' + srcDoc={srcDoc} ref={frameRef} onLoad={() => { setLoaded(true); diff --git a/packages/core/types/API/index.ts b/packages/core/types/API/index.ts index 05eaeaff3a..b5e010efd2 100644 --- a/packages/core/types/API/index.ts +++ b/packages/core/types/API/index.ts @@ -19,6 +19,7 @@ export type Permissions = { export type IframeConfig = { enabled?: boolean; waitForStyles?: boolean; + srcDoc?: string; }; export type OnAction = (