# Support for Components & Variables

> Update: New Designer API endpoints for Components and Variables introduced with our October 5th, 2023 release.

We're excited to announce the expansion of Webflow's Designer API with comprehensive support for Components and Variables. This release introduces a suite of new endpoints that empower developers to implement component-based architecture and manage design systems through variable collections. These capabilities enable programmatic creation, modification, and management of components, alongside the ability to define and control design tokens such as colors, typography, and spacing variables.

## Feature highlights

* **Component creation and management** - Create, register, and manipulate components programmatically
* **Variable collections** - Work with design variables to maintain consistency across your projects
* **Component navigation** - Enter and exit component instances during development

## New endpoints

### Element methods

* **[`webflow.getRootElement()`](/designer/reference/get-root-element)** <br />
  Access the root element of the current context, enabling traversal of the element tree.

### Component methods

* **[`webflow.getAllComponents()`](/designer/reference/get-components)** <br />
  Retrieve all components available in the current project.

* **[`webflow.registerComponent(name, element)`](/designer/reference/create-component-definition)** <br />
  Register a new component with the specified name and root element.

* **[`webflow.unregisterComponent(component)`](/designer/reference/delete-component-definition)** <br />
  Remove a component from the registry.

* **[`webflow.enterComponent(instance)`](/designer/reference/enter-component)** <br />
  Enter a component instance to make edits to its structure.

* **[`webflow.exitComponent()`](/designer/reference/exit-component)** <br />
  Exit the current component context.

* **[`webflow.createInstance(component)`](/designer/reference/create-component-instance)** <br />
  Create a new instance of a component.

* **[`component.getName()`](/designer/reference/get-component-name)** <br />
  Get the name of a component.

* **[`component.setName(name)`](/designer/reference/set-component-name)** <br />
  Change the name of a component.

### Variables and collections

* **[`webflow.getDefaultVariableCollection()`](/designer/reference/get-default-variable-collection)** <br />
  Access the default variable collection for the current project.

* **[`collection.getName()`](/designer/reference/get-collection-name)** <br />
  Get the name of a variable collection.

* **[`collection.getVariable(id)`](/designer/reference/get-variable)** <br />
  Retrieve a variable by its unique identifier.

* **[`collection.getVariableByName(name)`](/designer/reference/get-variable-by-name)** <br />
  Retrieve a variable by its name.

* **[`collection.getAllVariables()`](/designer/reference/get-all-variables)** <br />
  Get all variables in a collection.

* **[`variable.getName()`](/designer/reference/get-variable-name)** <br />
  Get the name of a variable.

* **[`variable.setName(newName)`](/designer/reference/set-variable-name)** <br />
  Change the name of a variable.

* **[`variable.set(value)`](/designer/reference/set-variable-value)** <br />
  Set the value of a variable.

* **[`variable.get()`](/designer/reference/get-variable-value)** <br />
  Get the current value of a variable.

* **[`variable.remove()`](/designer/reference/remove-variable)** <br />
  Remove a variable from its collection.