This error means Framer could not publish your website to production. Common causes include code component errors, oversized CMS collections, invalid custom domain DNS settings, and nested link elements. Check the publish error details for the specific cause, fix the issue in the editor, and try publishing again.
What does "Project failed to publish" mean in Framer?
When Framer shows "Project failed to publish," it means the build process that converts your design into a live website encountered an error. Framer publishes sites as optimized static pages with server-side rendering for code components, and any issue in this pipeline blocks publishing. The error message usually includes a specific reason, such as a component crash ID or an asset size warning.
The most common publish failure is "Failed to publish because there is an error on a page" with the inspector showing an internal error like ensureComponentsInLoader. Code component crashes are identified by crash IDs like code-crash:IilknqsQI:TlIGJvk3t — you can paste these into Quick Actions (CMD+K) to locate the problematic component.
CMS-related publish failures occur when collections grow too large, triggering "Module too large" warnings. Framer aggressively optimizes images but SVGs above 1 MB cause performance issues and can block publishing. Nested link elements (links inside links) cause Framer to replace them with non-accessible placeholders, and this can also block the publish process.
Common causes
A code component crashes during server-side rendering
accessing window, document, or navigator without useEffect()
A CMS collection grew too
large, triggering the 'Module too large' warning that halts publishing
An SVG or image asset
exceeds size limits and blocks the optimization pipeline
Nested link elements (links inside
links) cause invalid HTML that Framer cannot publish
Custom domain DNS is misconfigured
non-Framer A records, Cloudflare proxy enabled, or missing CNAME
A code component's useEffect returns a non-function value, causing
a silent crash during SSR
How to fix Framer publish failures
Check the publish error details for a specific message or crash ID. If you see a crash ID (code-crash:xxx:xxx), press CMD+K to open Quick Actions and paste the ID to jump to the broken component. The most common code component fix is wrapping browser API calls (window, document, navigator) in useEffect() so they only run on the client, not during server-side rendering.
For CMS 'Module too large' errors, reduce the collection size or remove unused CMS items. For oversized SVGs, optimize them with a tool like SVGO before uploading. For nested link warnings, check your design for links that contain other clickable elements — separate them into distinct layers. For custom domain issues, verify your DNS settings: only Framer IP addresses as A records, CNAME pointing to Framer, and Cloudflare proxy disabled (grey cloud icon). If publish failures persist in complex projects, RapidDev can help debug the build pipeline and optimize your Framer site for reliable publishing.
// Code component crashes during SSRimport { useEffect } from 'react';export function MyComponent() { // Accessing window during SSR crashes the publish const width = window.innerWidth; return <div>Width: {width}</div>;}// Fixed — browser APIs wrapped in useEffectimport { useState, useEffect } from 'react';export function MyComponent() { const [width, setWidth] = useState(0); useEffect(() => { setWidth(window.innerWidth); const handleResize = () => setWidth(window.innerWidth); window.addEventListener('resize', handleResize); return () => window.removeEventListener('resize', handleResize); }, []); return <div>Width: {width}</div>;}Prevention tips
- Paste crash IDs into Quick Actions (CMD+K) to instantly locate the component causing the publish failure
- Wrap all browser API calls (window, document, navigator) in useEffect() in code components to prevent SSR crashes
- Optimize SVGs with SVGO before uploading — Framer blocks publishing for SVGs over 1 MB
- Check for nested links in your design — links inside links cause invalid HTML that blocks publishing
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
My Framer project failed to publish with a code component crash. The crash ID is code-crash:IilknqsQI. How do I find and fix the component that causes SSR failures?
Fix my Framer code component to work with server-side rendering by wrapping all browser API calls in useEffect and handling the initial server render without window or document.
Frequently asked questions
Why does my Framer project fail to publish with a code component crash?
Code components that access window, document, or navigator during server-side rendering crash the publish process. Wrap all browser API calls in useEffect() so they only run on the client.
How do I find which component is causing the "Project failed to publish" error?
The error usually includes a crash ID (code-crash:xxx:xxx). Press CMD+K to open Quick Actions, paste the crash ID, and Framer will navigate to the problematic component.
Can large CMS collections prevent Framer from publishing?
Yes. Very large CMS collections trigger 'Module too large' warnings that can block publishing. Reduce the collection size, archive old items, or split large collections into smaller ones.
Why does Framer fail to publish with custom domain errors?
Custom domain publishing requires specific DNS settings: only Framer IP addresses as A records and CNAME pointing to Framer. Cloudflare proxy must be disabled (grey cloud). Extra A records from parking pages also cause failures.
What causes the 'nested link' warning in Framer?
Placing a link inside another link creates invalid HTML. Framer replaces nested links with non-accessible placeholders that are not SEO-friendly. Restructure your design to avoid links containing other clickable elements.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your issue.
Book a free consultation