Skip to content

Overview

uframe is an engine for an embeddable, block-based page editor. You drop it into your own app and give your users a visual canvas where they compose a page from blocks, style it, and serialize the result to JSON or HTML. It is a building block for your product — not a hosted website builder.

Who it's for

  • Product teams who need an in-app page/content builder. SaaS apps, CMSes, landing-page tools — anywhere end users should assemble pages from blocks without you shipping a heavy editor in your bundle or fighting CSS clashes. Use the embed client: the editor runs in an iframe and you drive it from any stack (React, Svelte, plain HTML — no framework lock-in).
  • Vue teams who need an extensible editor. Already on Vue and want to add your own blocks, plugins, toolbar buttons, or sidebar panels? Import <PageEditor> directly. A plugin is just an object an npm package exports — no runtime to learn.
  • Platforms & agencies offering white-label editing. The editor chrome rebrands through uf-* theme tokens and stays isolated in its iframe, so you can hand it to your own customers as part of your product.

What you'd build with it

  • Let non-technical users compose pages from blocks — landing pages, content sections, forms (structure, typography, media, and form blocks ship built-in).
  • Offer visual layout editing without code — flex/grid with drag handles and gap grips, a spacing overlay, stacked shadow/filter effects, responsive breakpoints, and document-level CSS variables. See Editing on the canvas.
  • Ship reusable design via symbols (components) with variants.
  • Keep your data in your format — the document is zod-validated JSON with an HTML export, and persistence runs through a storage adapter you supply. Your backend, your rules.

What it's not

  • Not a hosted website builder. There's no backend, deploy, or auth — uframe is the editor engine you embed, not a Tilda/Webflow-style service.
  • Vue at the core. The host can be anything via the embed client, but custom blocks are authored as Vue components.
  • Early stage. The library is pre-1.0 and under active development; APIs may still shift.

Two ways to integrate

Embed clientVue component
Importuframe/embeduframe (<PageEditor>)
Host stackAny (iframe + postMessage)Vue
Bundle impactTiny — DOM + postMessagePulls in Vue
IsolationFull (iframe sandbox)In-app
Extend (custom blocks/plugins/panels)

uframe is embed-first, but not embed-only. Start with Getting started for the embed path, or jump to Extending the editor for the Vue path.