Framer to React
Framer runs on React, but there's no button that exports a site as React. Here are the tools that do, what each one actually exports, and what a converted Framer site looks like as a component project.
The short answer
There's no button in Framer that exports a site as React. Framer is built on React, which is why people expect one, but a published site runs on Framer's runtime and hosting. Third-party tools fill the gap, and they come in two kinds that do different jobs:
- Component exporters (React Export with the unframer CLI, Reframe) copy components you pick into a React app you already have. Good for reusing a Framer-designed section inside an existing codebase; they don't export a site.
- Whole-site converters (FNJ, ConvertFramer, and the Full Site Export plugin's readable mode) turn a published site into a React project.
Among the whole-site options, what matters is whether the result is still your site. FNJ gives one file per section, named as you named it in Framer, composed by a view and rendered by a route, and it still renders the original page exactly, animations and breakpoints included: a project a developer can open and continue.
Framer to React tools, compared
| Tool | What it exports | Works from | Price |
|---|---|---|---|
| React Export + unframer | Components you pick, as typed React files for an app you already have | A plugin inside the Framer project, then a CLI | $50/month hobby, $250/month commercial |
| Reframe | Components you publish, installed into your React app | A plugin inside the Framer project, then a CLI | Starter, Pro and one-time Lifetime Pro plans |
| Full Site Export (readable mode) | A whole site rebuilt as React/Next.js components, close to the original but not identical | A plugin inside the Framer project | 3 free exports of 3 pages, then $10/month or $99/year |
| ConvertFramer | One page per export, as JSX with extracted CSS | A file from its Chrome extension, uploaded | $15 per page |
| FNJ | The whole site as a Next.js project, one named component per section, rendering the original exactly | The site's public URL; no Framer project access needed | One payment (FNJ Lifetime) |
Read off each tool's own page on 20 October 2026; prices and features change, so check before you buy. Full Site Export also has exact static and Next.js copies of a site; its readable React mode is the one listed here. ConvertFramer's automated tier doesn't keep Framer's responsive behaviour, and puts animations in its paid migration service.
What you actually get
A Next.js App Router project. The parts that matter:
src/sections/home/Hero.tsx one file per Framer section src/sections/home/Pricing.tsx named from your Framer section names src/sections/shared/Footer.tsx sections reused across pages, emitted once src/views/HomePage.tsx composes that page's sections src/styles/custom.css your CSS, last in the cascade app/route.ts serves the page, prerendered at build app/work/project/route.ts nested routes preserved as authored
Section names come straight from Framer, so the file tree reads like your layer panel. That is the whole trick: the names you already chose become the API of the codebase, instead of a developer having to invent them after the fact from a wall of generated markup.
Text lives apart from markup
Each section's copy is hoisted into a named copy export, so changing a headline is editing a string, not editing JSX:
import { copy } from "@/src/sections/home/Hero/copy";This is also what makes the MCP tools safe on a converted site ā an agent rewriting a headline changes one string and cannot disturb the layout around it.
One caveat: Framer's runtime, which still loads from Framer's CDN, re-renders the text it controls after the page loads. Editing a string changes the HTML search engines read, but visitors can still see Framer's original until you change it in Framer and convert again. Styles you write in the exported CSS always apply.
What this is not
Worth being blunt, because the category oversells here. The components are your original markup and inline styles organised into filesā not a hand-written rewrite. Class names are Framer's generated ones. Framer's runtime still runs the page, loaded from Framer's CDN, which is what keeps every animation identical and also what keeps this mode off the top of the Lighthouse chart.
The honest framing: this is a conversion optimised for ownership and fidelity. The HTML modemakes the same trade as plain static files instead of components; neither mode removes Framer's runtime. No converter turns a Framer design into code that looks hand-authored, and any that claims to is describing a rewrite you would still have to check line by line.
Related: All routes from Framer to code Ā· How to export a Framer site Ā· Convert Framer to Next.js Ā· Framer to HTML converter Ā· Framer vs owning your code
Starting a new site instead?
FNJ also makes an AI website builder. Describe the site and show it one you like: it designs every page for desktop, tablet and phone on a canvas you can edit, then gives you the code, a Next.js project or static HTML, to host wherever you want.
FAQ
Can you export a Framer site to React?
Not with Framer itself. Framer is built on React internally, which is why people assume an export exists, but there is no button that exports a published site. Third-party tools fill the gap: plugins such as React Export and Reframe copy individual components into a React app you already have, while whole-site converters such as FNJ turn the published site into a React project from its public URL.
What do the exported React components actually look like?
One file per section, named from the section names you set in Framer. A Hero section on the home page becomes src/sections/home/Hero.tsx. Each page gets a view that composes its sections at src/views/HomePage.tsx, and an App Router route renders that view. Sections used on more than one page are emitted once into src/sections/shared/ rather than duplicated.
Is it real React or just HTML wrapped in a component?
Real components with real boundaries ā one file per section, composed by a view, imported by a route. What it is not is a hand-written rewrite: the markup and inline styles are the ones Framer authored, organised into files, so the rendered DOM matches the original exactly. Measured element parity with the source is 100%. You get code you can extend and move; you do not get code that looks like a developer wrote it from scratch, and no converter can honestly promise that.
Can I edit the text without touching the markup?
Yes. Each section's text is hoisted into a named copy export, so changing a headline means editing a string rather than hunting through generated JSX. MCP tools can also update supported copy without disturbing the layout around it.
Do animations survive the React conversion?
Yes, in the Next.js Converter. It keeps Framer's runtime intact on purpose, so every animation, scroll effect and interaction behaves as authored. The trade is performance: that runtime still ships. The HTML mode keeps the runtime as well; neither mode is a runtime-free rebuild.
Can I use the exported components in an existing React project?
Section files are ordinary React components, so they can be imported elsewhere ā but be realistic about it. They carry Framer's generated class names and expect the runtime and stylesheet that ship with the project, so lifting one section into an unrelated codebase means bringing that context along. Moving whole pages, or extending the exported project itself, is the path that works cleanly.
Is it Next.js or plain React?
A Next.js App Router project ā one route per page, prerendered. Next.js is React, so anything you know about React components applies; you additionally get routing, prerendering and a build that deploys to Vercel, Netlify or Cloudflare Pages without configuration. There is no plain-CRA output, because a bare React bundle would lose the per-page routes and the prerender that keeps the DOM identical.
What does a Framer to React conversion cost?
Conversion is included with FNJ Lifetime, a one-time purchase. See the pricing page for the current offer and terms; conversions are counted per site, not per page.
See your own site as components
Paste your published Framer URL and get a Next.js project with one named component per section ā yours to extend, host and keep.
Example: https://your-site.framer.website