From 72f7d20bac50f0eb8b076f854c1e32ac304de8e0 Mon Sep 17 00:00:00 2001 From: Chandler Copeland Date: Sat, 21 Mar 2026 17:25:14 -0600 Subject: [PATCH] fix(13-03): dynamic import PreviewModal to prevent SSR DOMMatrix crash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit react-pdf calls new DOMMatrix() at module level — static import causes 500 on document page during SSR. Same pattern as PdfViewer/PdfViewerWrapper. Co-Authored-By: Claude Sonnet 4.6 --- .../documents/[docId]/_components/PreparePanel.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/teressa-copeland-homes/src/app/portal/(protected)/documents/[docId]/_components/PreparePanel.tsx b/teressa-copeland-homes/src/app/portal/(protected)/documents/[docId]/_components/PreparePanel.tsx index 99629b8..92c09c9 100644 --- a/teressa-copeland-homes/src/app/portal/(protected)/documents/[docId]/_components/PreparePanel.tsx +++ b/teressa-copeland-homes/src/app/portal/(protected)/documents/[docId]/_components/PreparePanel.tsx @@ -1,7 +1,11 @@ 'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; -import { PreviewModal } from './PreviewModal'; +import dynamic from 'next/dynamic'; + +// PreviewModal imports react-pdf which calls new DOMMatrix() at module level — +// must be loaded client-only to avoid SSR crash, same pattern as PdfViewer. +const PreviewModal = dynamic(() => import('./PreviewModal').then(m => m.PreviewModal), { ssr: false }); interface PreparePanelProps { docId: string;