.jsx by default) that render as native React components. No iframe, no embed. The generated components run in your React app with the lightweight unframer runtime package.┌────────────────────┐ ┌────────────────────────┐ ┌────────────────────┐ │ Framer Editor │ │ Unframer Database │ │ Your React App │ │ │ Plugin │ │ CLI │ │ │ Design your ├────────────>Stores component ├────────────>.jsx components│ │ components │ export │JavaScript URLs │ bundle │chunks/*.js │ │ │ │and metadata │ │styles.css │ └────────────────────┘ └────────────────────────┘ └────────────────────┘
npx unframer {projectId}, the CLI fetches each component's JavaScript URL from Framer's CDN. These URLs point to ES modules that Framer uses internally to render your site..jsx entry files plus shared chunks/*.js files. Code splitting keeps shared code deduplicated. External npm packages used in your Framer code components are resolved and installed automatically.propertyControls field. These controls (the inputs you see in Framer's right panel) are converted into JSDoc type comments injected directly into the .jsx files. Variants become union types, images become {src, srcSet, alt} objects, etc. Your editor picks up these types for autocomplete and type checking without separate declaration files.styles.css file is generated containing Framer's base styles, the fonts used in your components, and your color styles as CSS variables (prefixed with --unframer-).| Output | Description |
component-name.jsx | React component entry file with JSDoc type comments |
chunks/*.js | Shared bundled chunks imported by component files |
styles.css | Base Framer styles, fonts, and color style CSS variables |
| Change in Framer | Action needed |
| Edit existing component content/layout | Re-run CLI only (after publishing) |
| Add a new component | Re-open plugin, select it, then re-run CLI |
| Change color styles | Re-open plugin, then re-run CLI |
| Add new pages | Re-open plugin, then re-run CLI |
| Add new locales | Re-open plugin, then re-run CLI |
| Change breakpoints | Re-open plugin, then re-run CLI |
styles.css file ensures fonts and base styles load correctly during SSR.variant — union type of all variant namesevent variables in Framerstring (URL) for basic image controls{ src: string, srcSet?: string, alt?: string }React.ReactNode (from component variables like Ticker)