Getting started

Create and share a code component library for your Webflow projects.
Private Beta

This quickstart guides you through creating an example code component library for Webflow sites. To configure your existing codebase for code components, see the installation and setup reference.

What you’ll accomplish:

  • Set up your development environment
  • Declare a Webflow code component with props
  • Share your component library to Webflow
  • Use your component in a Webflow project

Before you start

Before running this quickstart, make sure you have:

  • A Webflow account with a Workspace on a Freelancer, Core, Growth, Agency, or Enterprise plan
  • A Webflow site where you can test components
  • Node.js 18+ and npm 10+ installed
  • Basic familiarity with React components and TypeScript

1. Setup your development environment

Set up your local development environment to create and share code components.

1

Setup your React project

Code Components are compatible with a wide variety of local setups. To get started, create a new React project.

If you’re working with an existing repository, you can skip this step.

$npx create-react-app code-components
>cd code-components
2

Install the Webflow CLI

Install the Webflow CLI and the necessary dependencies to create a code component library.

$npm i --save-dev @webflow/webflow-cli @webflow/data-types @webflow/react
3

Create a Webflow configuration file

Create a webflow.json file in the root of your repository. This file will define the configuration for your code component library.

webflow.json
1{
2 "library": {
3 "name": "<Your Library Name>",
4 "components": ["./src/**/*.webflow.@(js|jsx|mjs|ts|tsx)"]
5 }
6}

Give your library a name and specify the path to your code component files.

4

Create or update a .env file

Create or update a .env file in the root of your repository. This file will store your Webflow API token.

.env
$CODE_LIBRARIES="true" # Only needed for Private Beta
5

Add an example component to your library

In your editor, navigate to your src or components directory. Create a new file called Badge.tsx, and paste the following code. In the next step, you’ll create a code component declaration file to map this component to a Webflow component.

Badge.tsx
1import * as React from "react";
2
3interface BadgeProps {
4 text: string;
5 variant: 'Light' | 'Dark';
6}
7
8export const Badge = ({ text, variant }: BadgeProps) => (
9 <span
10 style={{
11 backgroundColor: variant === 'Light' ? '#eee' : '#000',
12 borderRadius: '1em',
13 color: variant === 'Light' ? '#000' : '#fff',
14 display: 'inline-block',
15 fontSize: '14px',
16 lineHeight: 2,
17 padding: '0 1em',
18 }}
19 >
20 {text}
21 </span>
22);

2. Define a Webflow code component

Create a code component declaration file to map a React component to a Webflow component. In this step, you’ll create a Badge component with two props mapping to an example Badge.tsx component.

1

Create a code component file

In your editor, navigate to the your src or components directory where you added your Badge component. Create a new file called Badge.webflow.tsx. This file will define how your Badge component appears in Webflow.

2

Import the React component and Webflow functions

Import the necessary dependencies to create your code component: the React component, prop types and the declareComponent function.

Badge.webflow.tsx
1import { Badge } from './Badge'; // Import your React component here
2import { props } from '@webflow/data-types';
3import { declareComponent } from '@webflow/react';
3

Declare the component

Declare the code component using the declareComponent function.

Badge.webflow.tsx
1import { Badge } from './Badge';
2import { props } from '@webflow/data-types';
3import { declareComponent } from '@webflow/react';
4
5export default declareComponent(Badge, {
6 name: 'Badge',
7 description: 'A badge with variants',
8 group: 'Info',
9});

The declareComponent function takes two parameters:

  • Your React component (Badge)
  • Configuration options:
    • name: The name of the component
    • description?: A description of the component (optional)
    • group?: The group the component belongs to (optional)
    • props?: The props of the component, which we’ll define in the next step. (optional)
    • options?: The options of the component, (optional)

For more information and detailed configuration options for code components, see the component definition reference.

4

Define the component props

Add configurable properties that users can edit in the Webflow designer.

Add a props object to the declareComponent function. This object defines which properties designers can configure in the Webflow editor, and maps them to appropriate Webflow prop types using the props constructor.

Badge.webflow.tsx
1import { Badge } from './Badge';
2import { props } from '@webflow/data-types';
3import { declareComponent } from '@webflow/react';
4
5export default declareComponent(Badge, {
6 name: 'Badge',
7 description: 'A badge with variants',
8 group: 'Info',
9 props: {
10 text: props.Text({
11 name: "Text",
12 defaultValue: "Hello World",
13 }),
14 variant: props.Variant({
15 name: "Variant",
16 options: ["Light", "Dark"],
17 defaultValue: "Light",
18 }),
19 },
20});

This code component defines two props:

  • text: A text field for the Badge content
  • variant: A dropdown with predefined style options

3. Share your library to Webflow

In your terminal, run the following command to upload your library:

$npx webflow library share

The Webflow CLI will:

  • Authorize your workspace: The CLI will check for a Workspace authentication token in your .env file. If one is not found, the CLI will prompt you to authenticate by opening a browser window to the Workspace authorization page. Authorize a workspace to continue.
  • Bundle your library: The CLI will bundle your library, and ask you to confirm the components you want to share.
  • Upload your library to your Workspace

For more information and detailed configuration options for bundling and deploying code components, see the bundling and deployment reference. →

4. Use the component on your Webflow site

Add your component to the canvas and update the props to customize the component.

1

Install the library on your Webflow site

Install the library on any site in your Workspace to start using your code components.

  1. Open any Webflow site in your workspace.

  2. Open the Libraries panel by pressing “L” or clicking the Resources icon icon in the left sidebar.

    Available to install
  3. Find your library in the list of available libraries.

  4. Install the library by clicking the Install icon next to your library.

2

Open the Components panel

Open the Components panel by pressing “⇧C” or clicking the Components icon icon in the left sidebar.

Scroll to the section for the library you just installed. You should see your “Badge” component listed under the “Info” group.

Components panel
3

Add the component to your page

Click and drag the Badge component from the components panel onto your page. The component will appear with its default text and styling.

4

Customize the component

Customize your component in the Properties panel on the right. You’ll see two configurable properties:

  • Text: Change the text content of the Badge
  • Variant: Select from Light or Dark styling
Badge component

Try changing the text to “Welcome!” and selecting a different variant to see your component update in real-time.

Congratulations

You’ve successfully created and shared a code component library for your Webflow projects! You now know how to:

  • Set up a development environment for code components
  • Declare a code component with configurable properties
  • Share component libraries to Webflow
  • Use custom components in your Webflow projects

Next steps

Now that you’ve created your first code component, explore these resources to build more advanced components:

Advanced configuration

  • Frameworks and libraries - Learn how to use CSS frameworks like Tailwind CSS, tools like Shadcn/UI, and component libraries like Material UI with code components.
  • Bundling and deployment - Explore advanced configuration options for bundling and deploying code components.

Learn the fundamentals