Drag and drop page building for any site

Drag and drop page building for any site

Drag and drop page building for any site.


Builder logo

Drag and drop page building for any website.

Design with your React components, publish remotely.



Editor example




What is it good for?

  • Landing pages
  • Documentation
  • Blogging
  • Marketing pages (homepage, etc)
  • Content pages (about, FAQ, etc)
  • Optimization (ab test pages)
  • Marketing teams that never stop asking for changes
  • Developers who are tired of pushing pixels

Supported Frameworks

Framework Status Supports using your custom components SSR supported
React stable Yes Yes
Next.js stable Yes Yes
Webcomponents stable Yes Yes with HTML API
Angular stable Yes with angular elements Yes
Email stable Yes Yes
Preact beta Yes Yes
Vue Use webcomponents Coming soon Coming soon
React native Coming soon Coming soon n/a
Shopify Coming soon Coming soon Coming soon
Wordpress Coming soon Coming soon Coming soon
Everyting else - Go, Php, Svelte, Java, Vanilla JS, etc Stable - Use our HTML API and/or webcomponents Yes (your webcomponents) Yes

Want suppoert for something not listed here or for us to priotize something coming soon? Drop us an issue and let us know! We prioritize based on the community's needs and interests.

Getting Started with React

npm install --save @builder.io/react

Grab a free account at builder.io and find your API key

import { builder, BuilderComponent } from '@builder.io/react';

builder.init(YOUR_KEY);

Then in your router

<Route path="/something" render={() => <BuilderComponent model="page" />}>

Create a new page and open your-dev-url:port/something and edit!

See our docs site for more info or contact us if you run into any issues or questions!

Using your components

Wrap a component

import { BuilderBlock } from '@builder.io/react';

@BuilderBlock({
  name: 'Simple Text',
  inputs: [{ name: 'text', type: 'string' }],
})
export class SimpleText extends React.Component {
  render() {
    return <h1>{this.props.text}</h1>;
  }
}

Then back at your page

import './simple-page'

// ...

<Route path="/something" render={() => <BuilderComponent model="page">}>

Open the dashboard and use it!

See our docs site for additional help and information, or contact us if you run into any issues or questions!

For lots of examples of using React components in Builder, see the source for our built-in Builder blocks here and widgets here

For Builder decorator support you need to be using typescript or babel with legacy decorators. Alternatively you can use the alternative syntax:

import { BuilderBlock } from '@builder.io/react';

class SimpleText extends React.Component {
  render() {
    return <h1>{this.props.text}</h1>;
  }
}

BuilderBlock({
  name: 'Simple Text',
  inputs: [{ name: 'text', type: 'string' }],
})(SimpleText);

Dynamic landing pages

One of Builder's most powerful features is allowing the creation of new pages for you. See a simple example of how to do this with react-router below:

class CatchAllPage extends Component {
  state = {
    notFound: false,
  };

  render() {
    return this.props.notFound ? (
      'Page not found'
    ) : (
      <BuilderComponent
        name="page"
        onContentLoad={content => {
          if (!content) {
            this.setState({
              notFound: true,
            });
          }
        }}
      >
        Loading...
      </BuilderComponent>
    );
  }
}

// Then in your app.js
export default () => (
  <Switch>
    <Route path="/" component={Home} />
    {/* Your other routes... */}
    {/* IMPORTANT: Be sure the patchall is your LAST route so it only loads if nothing else matches! */}
    <Route component={CatchAllPage} />
  </Switch>
);

For more advanced usage, like checking for page existence/404 on the server using the Content API, see our detail landing page docs here or if using Next.js see our docs for that here

Don't use React?

Builder webcomponents support all sites and frameworks!

<script src="https://cdn.builder.io/js/webcomponents"></script>
<builder-component name="page"></builder-component>

See our official docs on Builder Webcomponents here

Additionally see our HTML API for server side rendering

Troubleshooting and feedback

Problems? Requests? Open an issue. We always want to hear feedback and interesting new use cases and are happy to help.

Github Repository