Best practices for Add-on development


  • You should develop add-ons on an empty Sitefinity CMS project. 
    This will limit any external factors that are part of the development of a particular website and that might interfere with the exported add-on.

    IMPORTANT: If you want to export an add-on from an already developed website, you must make sure that the produced NuGet contains only the required content and assemblies.

  • You should do custom development, for example custom widgets and modules, in separate projects in order to enable the packaging of the add-on. Separate projects containing custom code can be easily referenced in the add-on .nuspec file.
  • We recommend to develop the add-on in a Continuous delivery process, where you can produce and test the add-on properly.
    For more information, see Create add-ons.
  • We recommend to install and activate an add-on in a Continuous delivery process, where you can ensure that the add-on works properly and does not break the project.
    For more information, see Install and activate add-ons.

Types of development

The different aspects of development fall in two categories:

  • Server-side development
    Usually consists of development of custom CMS widgets, services, modules, etc. It does not include the styling of HTML, creating and using CSS, creating widget or page templates.
  • Client-side development 
    Usually consists of development related to the visual representation of the produced markup - creating and using CSS, creating and editing widget and page templates.

Server-side and client-side development can be done separately, having highly specialized experts working on each, or could be spread across people with roles that have a broader skillset. Following the guidelines listed below will facilitate the use of either approach.

Want to learn more?

Sign up for our free beginner training. Boost your credentials through advanced courses and certification.
Register for Sitefinity training and certification.

Was this article helpful?