## The problem
Using react-calendly's PopupButton in Next.js throws "Target container is not a DOM element" because the component renders a React portal into rootElement={document.getElementById(...)} during server-side rendering, where document does not exist. The same code worked in plain React but broke under Next.js SSR. Guarding the render with typeof window !== 'undefined' and pointing rootElement at the '__next' div resolved it for the reporter.
## What fixed it
Only render the Calendly component on the client. Either wrap it in a client-side guard: {typeof window !== 'undefined' && [PopupButton url="..." rootElement={document.getElementById('__next')} text="..." /]}, or load it with next/dynamic and ssr: false: const PopupButton = dynamic(() => import('react-calendly').then(m => m.PopupButton), { ssr: false }). Note the element id must exist in your document (Next.js uses '__next'), otherwise the portal still fails. The reporter confirmed this fixed it.