---
title: Distribute builder components
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

After you create a custom [Page Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder.md) or [Form Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/form-builder.md) component for your project, you might want to share the code of this component among other projects inside your company, or with the rest of the world.

The most common way of distributing code in the .NET community is using [NuGet packages](https://docs.microsoft.com/en-us/nuget/what-is-nuget). NuGet packages are code bundles containing compiled code along with other content needed in the projects for which they are created. Developers can share these packages with other developers directly or by publishing them to public or private hosts (such as [nuget.org](https://www.nuget.org/)). Another possible way of distributing your code is simply by sharing the code packaged in [ZIP files](https://en.wikipedia.org/wiki/Zip_\(file_format\)).

On this page, you can read about best practices related to distributing builder components. See the following sections for information about individual types of components:

## Widgets

- Use a **unique prefix** in your widget identifiers to prevent conflicts when deploying the widgets to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the widgets using resource strings. Create a **designated RESX file** for the resource strings of each of your widgets in the _\~/App\_Data/Global/Resource&#x73;_&#x64;irectory.
- Place all custom code into _\~/Components/PageBuilder/Widgets/_. This includes the widget's:
  - Controller.
  - Property and view models.
  - View files.
- Place administration-only script and stylesheet files into the _\~/wwwroot/PageBuilder/Admin/Widgets/_ directory.
- Place general script and stylesheet files into the _\~/wwwroot/PageBuilder/Public/Widgets/_ directory.

See [Widgets for Page Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder/widgets-for-page-builder.md) for more information.

## Inline property editors

- Use a **unique prefix** in your inline editor identifiers to prevent conflicts when deploying the editors to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the inline editors using resource strings. Create a **designated RESX file** for the resource strings of each of your inline editors in the _\~/App\_Data/Global/Resources_ directory.
- Place all custom code into _\~/Components/PageBuilder/InlineEditors/_. This includes the editor's:
  - View models.
  - View files.
- Place script and stylesheet files into the _\~/wwwroot/PageBuilder/Admin/InlineEditors/_ directory.

See [Inline editors for widget properties](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder/widgets-for-page-builder/inline-editors-for-widget-properties.md) for more information.

## Page Builder sections

- Use a **unique prefix** in your section identifiers to prevent conflicts when deploying the widgets to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the widgets using resource strings. Create a **designated RESX file** for the resource strings of each of your widgets in the _\~/App\_Data/Global/Resources_ directory.
- Place all custom code into _\~/Components/PageBuilder/Sections/_. This includes the section's:
  - Controller.
  - View model.
  - View files.
- Place administration-only script and stylesheet files into the _\~/wwwroot/PageBuilder/Admin/Sections/_ directory.
- Place general script and stylesheet files into the _\~/wwwroot/PageBuilder/Public/Sections/_ directory.

See [Sections for Page Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder/sections-for-page-builder.md) for more information.

## Page templates

- Use a **unique prefix** in your page template identifiers to prevent conflicts when deploying the page templates to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the page templates using resource strings. Create a **designated RESX file** for the resource strings of each of your page templates in the _\~/App\_Data/Global/Resources_ directory.
- Place all custom code into _\~/Components/PageBuilder/Templates/_. This includes the template's:
  - View model.
  - View files.
- Place administration-only script and stylesheet files into the _\~/wwwroot/PageBuilder/Admin/Templates/_ directory.
- Place general script and stylesheet files into the _\~/wwwroot/PageBuilder/Public/Templates/_ directory.
- Place your [page template filters](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder/page-templates-for-page-builder/page-template-filtering.md) into the _\~/Components/PageBuilder/Templates/PageTemplateFilters_ directory.

See [Page templates for Page Builder](https://docs.kentico.com/documentation/developers-and-admins/development/builders/page-builder/page-templates-for-page-builder.md) for more information.

## Form components

- Use a **unique prefix** in your form component identifiers to prevent conflicts when deploying the components to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the form components using resource strings. Create a **designated RESX file** for the resource strings of each of your components in the _\~/App\_Data/Global/Resources_ directory.
- Place all custom code into _\~/Components/FormBuilder/FormComponents/_. This includes the component's:
  - Form component classes.
  - Form component properties.
  - View files.
- Place administration-only script and stylesheet files into the _\~/wwwroot/FormBuilder/Admin/FormComponents/_ directory.
- Place general script and stylesheet files into the _\~/wwwroot/FormBuilder/Public/FormComponents/_ directory.

See [Form components](https://docs.kentico.com/documentation/developers-and-admins/development/builders/form-builder/form-components.md) for more information.

## Form Builder sections

- Use a **unique prefix** in your form section identifiers to prevent conflicts when deploying the sections to other projects. For example, the prefix can match your company's name.
- Store all text displayed by the form builder sections using resource strings. Create a **designated RESX file** for the resource strings of each of your sections in the _\~/App\_Data/Global/Resources_ directory.
- Place all custom code into _\~/Components/FormBuilder/FormSections/_. This includes the section's:
  - Controllers.
  - Model classes.
  - View files.
- Place administration-only script and stylesheet files into the _\~/wwwroot/FormBuilder/Admin/FormSections/_ directory.
- Place general script and stylesheet files into the _\~/wwwroot/FormBuilder/Public/FormSections/_ directory.

See [Form sections](https://docs.kentico.com/documentation/developers-and-admins/development/builders/form-builder/form-sections.md) for more information.

## Personalization condition types

- Use a **unique prefix** in your condition type identifiers to prevent conflicts when deploying the condition types to other projects. For example, use your company's name as the prefix.
- Store all text displayed by the condition types using resource strings. Create a **designated RESX file** for the resource strings of each of your condition types in the _\~/App\_Data/Global/Resources_ directory.
- Place all code into _\~/Components/PageBuilder/Personalization/_.
- Place administration-only CSS and JavaScript files into the _\~/wwwroot/PageBuilder/Admin/Personalization/_ directory.
- Place general CSS and JavaScript files into the _\~/wwwroot/PageBuilder/Public/Personalization/_ directory.

See [Develop personalization condition types](https://docs.kentico.com/documentation/developers-and-admins/digital-marketing-setup/content-personalization/develop-personalization-condition-types.md) for more information.

## Single class components

When distributing components consisting of a single class, such as [personalization condition types](https://docs.kentico.com/documentation/business-users/digital-marketing/widget-personalization.md) or [Form Builder validation rules](https://docs.kentico.com/documentation/developers-and-admins/development/builders/form-builder/form-builder-validation-rules.md):

- Use a **unique prefix** in your component identifiers to prevent conflicts when deploying the components to other projects. For example, the prefix can match your company's name.
- For text displayed by the components in the admin UI, use [localization files](https://docs.kentico.com/documentation/developers-and-admins/customization/admin-ui-localization.md).
