Quick answer
Framer is enough when the thing is a marketing site: pages, a CMS, a form, maybe one code component. It is not enough when people log in to their own data, when you have roles and billing, or when most of the page is already hand-written React. We keep the site in Framer and move the product to a stack that can own accounts. We do not graduate a healthy marketing site for sport, and we do not stretch the canvas into a SaaS because the first version was pretty.
Key takeaways
- The ceiling is the job, not the logo. Framer hosts sites. It does not owe you a product.
- A small code component is the escape hatch. A page that is only code is a resignation letter.
- Login, permissions, billing, and user-owned data are the usual tripwires.
- Graduation means two surfaces: the site stays, the app leaves. That is cheaper than a rewrite of both.
- If the complaint is taste or speed, stay. Those are different guides.
What Framer is still enough for
A brand site. A launch page. Docs links, changelog, careers, a blog a marketer updates. Collections. A pricing table. A calculator or a custom form that is one component with named props. That is the job we take on as Framer development every week. If that is still your brief, this page is not for you. Read Framer vs Webflow or website vs product instead.
We are a Framer Enterprise Agency. The useful version of that badge is knowing when to put the file down. Framer Pro is $30 a month per site on the yearly list we checked in Sep 2026. That line does not buy you auth. Stretching the canvas past the job is how you get a slow, uneditable “app” that still cannot reset a password.
Signs you have hit the wall
Not a form. An account, their records, a session that has to be wrong-safely. That is a product.
Admin versus member versus billed seat. CMS roles are for editors. They are not tenancy.
Plans, seats, usage, invoices the customer can see. Stripe in an embed is a checkout. Billing is a system.
If a designer cannot change the label without a repo, you have left no-code. Finish the move.
Relations that are really a graph, records that are really user data. Collections are pages. They are not your product model.
One of those is a conversation. Three of them is a brief for custom SaaS or an MVP, with the marketing site left where it is. “We like Framer” is not a counter-argument. We like it too. We like it for the job it has.
When a code component is still enough
A code component is the honest middle. Real React, named props, still on the canvas. Use it for a pricing calculator, a chart, a form the native blocks cannot do, a piece of motion the timeline cannot express. One surface. Documented so a designer can still change the label.
The rule: if the rest of the page is still Framer, the hatch is doing its job. If you are writing the layout in code because the canvas got in the way, stop. You are paying no-code rent for a repo. At that point the cheaper move is a product page in the product, and a marketing page in Framer.
Slow LCP, late fonts, a chat widget — that is a budget. Read Framer speed in practice. Do not graduate the stack because a PNG was heavy. Do not stay on the stack because the hero was pretty.
How we graduate — without throwing the site away
The site stays. URLs that earn stay. The app gets its own origin, its own auth, its own model. Shared type and colour if you have a design system. That is the split most companies already needed when they asked for “Framer plus an account.”
- 01Name the loop that is not a page
Sign in, their records, the job they return for. If you cannot name it, you do not have a product yet. You have a feature request on a website.
- 02Keep every URL that sells
The homepage, pricing, the story. Those stay in Framer. Redirects are for paths you are killing, not for a re-platform of the brochure.
- 03Pick the smallest product stack
An MVP if you are proving the loop. A custom build if the model already broke a template. Lovable or Replit if the next step is a spike, not a tenant graph.
- 04Cut over on the action, not the brand
The CTA that used to fake a dashboard now goes to the real app. Dual-running a fake portal is how you teach users the wrong thing.
“Framer's job is the page a stranger trusts. The moment the stranger is a user with data, you are in a different business. Keep the page. Move the data.”
Chris NutbeenNuttifox
When not to leave
- The site converts and marketing can edit it. Stay. Taste is not a ceiling.
- You wanted Webflow or WordPress instead. That is a canvas or a desk, not an escape from this problem. Read those pages.
- You wanted Figma first. That is a file question. It does not give you auth.
- The only pain is speed. Fix the file. Do not buy a framework.
- The “app” is three people in ops. That is an internal tool. Graduation to SaaS is a market, not a feeling.
We will say this on the call. Rebuilding a healthy Framer marketing site into Next.js because a tweet said “production” is how you spend the quarter you needed for the actual product. Rates are on the contact page. The quote should name which surface we are moving.


