SDK Comparison
Explore the key distinctions and functionalities between the first and second generations of Builder SDKs using the comprehensive comparison and feature tables below, tailored to help you select the most suitable SDK for your development needs.
Recommended Gen to use per framework
The Builder SDKs are divided into two generations, Gen 1, and Gen 2. Use the table below to find the recommended SDK generation for your framework.
| Framework | Gen 1 | Gen 2 |
Qwik | n/a | Recommended |
React* | Recommended | |
Remix | Recommended | |
Hydrogen | Recommended | |
Vue** | Recommended | |
Swift (beta) | n/a | n/a |
Svelte | n/a | Recommended |
Solid | n/a | Recommended |
React Native | n/a | Recommended |
Angular † | Up to Angular 18 | Recommended (Angular 17+) |
Angular SSR † | Up to Angular 18 | Recommended (Angular 17+) |
*Includes React-based frameworks such as Gatsby, Next.js Pages Router, and Next.js App Router.
**Includes Nuxt.
† Gen 1 SDK supports Angular versions up to 18. Gen 2 SDK requires Angular 17 or higher and is the recommended choice for new projects and Angular 19+.
Table of features supported
The table below outlines the features available for Builder's SDKs.
| Feature | React (Gen1) | React (Gen2) | Vue | React Native | Svelte | Qwik | Angular (Gen1) | Angular (Gen2) | HTML API |
TypeScript Types | ✅ | ✅ | ✅ | 🔵 | ✅ | ✅ | ❌ | ✅ | ❌ |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | n/a | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | n/a | ✅ | ✅ | ⚠️ | ✅ | ✅ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ❌ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
View Current Draft | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
Custom Styles | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
✅ | ✅ | ✅ | n/a | ✅ | ✅ | ✅ | ✅ | ✅ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | 🔵 | ✅ | 🔵 | ✅ | ✅ | ✅ | ✅ | ✅ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ | |
✅ | ✅ | 🔵 | 🔵 | 🔵 | 🔵 | ✅ | 🔵 | ✅ | |
Global content styles | ✅ | ✅ | ✅ | n/a | ✅ | ✅ | ❌ | ✅ | ❌ |
✅ | ✅ | ✅ | n/a | ✅ | ✅ | ✅ | ✅ | ✅ | |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ | |
✅ | ✅ | ✅ | 🔵 | ✅ | ✅ | ❌ | 🔵 | ❌ |
Legend
✅ Full support
🔵 In development
⚠️ Partial support
(hover for a tooltip with details)
❌ Not supported
Blocks available by framework
| Feature | React (Gen1) | React (Gen2) | Vue | React Native | Svelte | Qwik | Angular |
Columns | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Text | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Image | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Button | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Video | ✅ | ✅ | ✅ | 🔵 | ✅ | ✅ | ✅ |
Custom code | ✅ | ✅ | ✅ | 🔵 | ✅ | ✅ | ✅ |
Section | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Fragment | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Embed | ✅ | ✅ | ✅ | 🔵 | ✅ | ✅ | ✅ |
Slot | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Form | ✅ | ✅ | ✅ | 🔵 | ✅ | 🔵 | ✅ |
Input | ✅ | ✅ | ✅ | 🔵 | ✅ | 🔵 | ✅ |
Select | ✅ | ✅ | ✅ | 🔵 | ✅ | 🔵 | ✅ |
SubmitButton | ✅ | ✅ | ✅ | 🔵 | ✅ | 🔵 | ✅ |
Legend
✅ Full support
🔵 In development
⚠️ Partial support
(hover for a tooltip with details)
❌ Not supported
Rendering content
Rendering your Builder content differs between Gen 1 and Gen 2.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
In Gen 2 SDKs the component is Content.
For recommended usage and a description of the props of the Content component, visit Using the Content Component.
In Gen 1 SDKs the component is BuilderComponent.
For recommended usage and a description of the props and methods of BuilderComponent, visit Using BuilderComponent.
Fetching data
Fetching data differs between Gen 1 and Gen 2.
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
In Gen 2, import fetchOneEntry() and fetchEntries() to fetch single and multiple entries respectively. Additionally, note that the apiKey is a required field:
In Gen 1, import builder and use the get() or getAll() helper:
For more information, visit the Content API documentation.
Registering custom components
Registering custom components differs between Gen 1 and Gen 2.
In Gen 1, import the Builder object and use registerComponent():
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 1, import the Builder object and use registerComponent():
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 1, import the Builder object and use registerComponent():
When adding children, Builder's Gen 1 SDKs use withChildren(), while the Gen 2 SDKs require <Blocks>. For more information on the SDKs, visit SDK Comparision.
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 1, import the Builder object and use registerComponent():
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 1, import the Builder object and use registerComponent():
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the builder-content component:
In Gen 2, create a customComponents array containing all the custom components, and pass that to builder-content:
In Gen 1, import the Builder object and use registerComponent():
In Gen 2, create a customComponents array containing all the custom components, and pass that as a prop to the Content component:
In Gen 1, import the Builder object and use registerComponent():
For more information on custom components, visit Registering Custom Components.
Configuring the Visual Editor
Configuring the Visual Editor differs between React Gen 1 and React Gen 2.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
In Gen 2, import register:
For your custom menu to function properly, remember to include the customComponents property within your Content component.
In Gen 1, import Builder and use the register() helper:
Gen 1 and Gen 2 package names
The table below lists the available package names by framework and generation. Use these names for installs and imports.
| Framework | Gen 1 | Gen 2 |
Qwik | n/a |
|
React* |
|
|
Vue** |
|
The Vue Gen 2 is the recommended SDK. |
Svelte | n/a |
|
Solid | n/a |
|
React Native | n/a |
|
Angular |
|
|
*Includes React-based frameworks such as Remix, Hydrogen, Gatsby, Next.js, and App Router.
**Includes Nuxt.
What's next
For fetching in advanced use cases, read Using Enrich to Fetch References and Symbols.