Setup Your Development Environment

Learn about the recommended development environment to extend Umbraco.
This page is a work in progress. It will be updated as the software evolves.

Required Software

Make sure you have the following installed on your machine:
Tip: use NVM (Node Version Manager) for Windows or Mac/Linux to manage the Node.js versions.

Package Setup


Extensions will go into a folder called App_Plugins. If you don't have this folder, you can create it at the root of your Umbraco project.

Source Code

Source code for your extensions should ideally be placed in a different project. This will make it easier to maintain and test your code. You can create a new project in the root of your Umbraco project, or you can create a new project in a separate folder. If you are using a bundler like Vite, you can configure it to copy over the files to the App_Plugins folder when you build your project.


You can use any package manager you like to install dependencies. We recommend using NPM or Yarn. You can install packages by running the command npm install --registry -D <package-name>. This will install the package and save it to your package.json file. You need to setup a package.json file if you don't have one already. You can do this by running the command npm init -y.

Umbraco Backoffice

Umbraco publishes an NPM package called "@umbraco-cms/backoffice" that holds typings and other niceties to build extensions. You can install this package by running the command npm install --registry -D @umbraco-cms/[email protected]. This will install the relevant packages used for IntelliSense and TypeScript definitions in your IDE. The --preview007 is the version of the package, which will change as new versions are released.
It is important that this namespace is ignored in your bundler. If you are using Vite, you can add the following to your vite.config.ts file:
import { defineConfig } from "vite";
export default defineConfig({
// other config
// ...
// add this to your config
build: {
rollupOptions: {
external: [/^@umbraco/],
This ensures that the Umbraco Backoffice package is not bundled with your package.
Read more about using Vite with Umbraco in the Vite Package Setup article.

Visual Studio Code

If you're using Visual Studio Code we recommend the extension called Lit-Plugin to get intellisense for Lit Elements and Umbraco UI Library Components.