Build extensions that run inside Webflow's Designer as iframes, interacting with the Designer API to manipulate elements, styles, pages, and more.
Prerequisite: Register your app in Webflow first — see references/register-app.md. You'll need a Workspace with Admin permissions.
npx create-webflow-extension@latest (interactive prompts for project name, package manager, linter)cd <name> && pnpm dev (serves at localhost:1337; also works with npm/yarn/bun)pnpm build for deploymentbash
npx create-webflow-extension@latest [project-name] [options]
Options:
--pm <pnpm|npm|yarn|bun> Package manager to use (default: pnpm)
--linter <oxlint|biome|eslint> Linter to use (default: oxlint)
--skip-git Skip git initialization
--skip-install Skip dependency installation
--quiet Suppress output
For all API methods, patterns, and code examples, refer to the reference documentation below. Start with the quick lookup reference for a complete overview:
webflow.* methods in one tableGenerated by create-webflow-extension (React 19 + TypeScript + Rspack):
text
my-extension/
├── public/
│ └── index.html # Entry point
├── src/
│ ├── App.tsx # Main React component
│ ├── main.tsx # React entry point
│ └── index.css # Styles
├── webflow.json # Extension settings
├── rspack.config.ts # Rspack bundler configuration
├── package.json
└── tsconfig.json
Each reference file includes YAML frontmatter with name, description, and tags for searchability. Use the search script to find relevant references quickly:
bash
# List all references with metadata
python scripts/search_references.py --list
# Search by tag (exact match)
python scripts/search_references.py --tag <tag>
# Search by keyword (across name, description, tags, and content)
python scripts/search_references.py --search <query>
create-webflow-extension scaffolding CLIscripts/search_references.py: Search reference files by tag, keyword, or list all with metadataassets/webflow-variables.css: CSS variables for Webflow's design system colors, typography, and shadowselement.children before append/prepend, element.textContent before text operationswebflow.notify() for user feedback — see Error Handlingwebflow.setExtensionSize() for proper panel dimensions — see Extension Utilities