A typical web project rarely goes beyond the creation of custom templates for the system components and website templates. However, there may be tasks sometimes that simply cannot be solved using the standard components, which requires that a developer create custom Components 2.0 from scratch.

Consider the following development stages when implementing your custom Components 2.0.

- Discern all custom components that are potentially possible in the web project and describe them in the project technical specification.
- Define a namespace for the new components. Use the project name for that purpose; for example: "trustbank:". The name of the Bitrix Framework component namespace is "bitrix:" and cannot be changed.
- Find any standard component that most closely resembles features of the custom component you need to create. A standard component in itself is a good example of standard compliant API calls and programming techniques; it is recommended to create custom components using a standard component as a foundation.
- Devise proper interface for each of the custom components by picking the parameters to be placed in the properties bar. For example, a weather component could use properties "Weather web service URL" and "Web service connection timeout".
- Define the branch of the visual editor's component tree to which the new component(s) will be added.
- Implement the component. Pay special attention to autocache and performance. Profile your component to ensure it does not perform any database queries if the cached data is up-to-date; performs minimum queries on outdated cache data; caches only really required data; keeps RAM usage to minimum (doesn't sort arrays of hundreds of megabytes, or anything like that).

Use your custom components as a basis for new components, or reuse them in other projects. A good idea is to keep the reusable components is a separate namespace, for example "library:".

1. The "/bitrix/components/" folder may only contain additional subfolders whose names match the namespaces in use, for example "myproject" and "library". In the process, developers sometimes create helper namespaces named like "dummy" or "test" and forget to remove them even after release. Delete such folders.
2. In the visual editor, ensure the Components 2.0 tree include custom components in a separate branch.
3. Ensure that all custom components have configurable parameters (if any) visible in the public section. All such parameters must be thoroughly tested and documented. All service, non-user friendly settings (anything like "Registry object array nesting level") should not be present in the public section.