Workspace Views
Learn how to create workspace views that provide tab-based content areas for organizing different aspects of entity editing.
If you have worked with Umbraco versions prior to version 14, you likely know this feature as Content Apps. In the new Management API and Web Component-based backoffice, this concept is unified under Workspaces.
While Content Apps implied they only lived on Content nodes, Workspace Views can be attached to any entity (Media, Members, Document Types, and so on.). A Workspace is the entire editing environment, and a View is a specific tab within that environment.
Workspace Views provide tab-based content areas within workspaces, allowing you to organize different aspects of entity editing into focused interfaces. They appear as tabs alongside the default content editing interface.
Purpose
Workspace Views provide:
Tab-based organization for different editing aspects.
Contextual interfaces related to the current entity.
Workspace integration with access to workspace contexts.
Custom functionality specific to entity types.
Manifest
Key Properties
weight- Tab ordering (higher weight appears first).meta.label- Text displayed on the tab.meta.pathname- URL segment for the view.meta.icon- Icon displayed on the tab.conditions- Determines workspace availability.
Implementation
Implement your workspace view as a Lit element that extends UmbElementMixin. This creates a tab-based interface that users can navigate to within the workspace:
Conditions
Conditions control when a Workspace View is shown. Every condition entry has an alias that references a built-in or custom condition, and a match value that the condition evaluates against.
UMB_WORKSPACE_CONDITION_ALIAS is a typed constant for Umb.Condition.WorkspaceAlias. Import it from @umbraco-cms/backoffice/workspace to get type safety when referencing workspace aliases in your manifest.
Built-in Workspace-relevant Conditions
The following conditions are available out-of-the box and are most relevant for Workspace Views. For the complete list of all extension conditions, see the Extension Conditions article.
Alias
Description
Example match value
Umb.Condition.WorkspaceEntityType
Requires the workspace to be working on a specific entity type.
document, media, member, block, user
Umb.Condition.WorkspaceAlias
Restricts the view to a specific workspace. Use the UMB_WORKSPACE_CONDITION_ALIAS constant from @umbraco-cms/backoffice/workspace for type safety.
Umb.Workspace.Document
Umb.Condition.WorkspaceContentTypeAlias
Requires the workspace to be based on a Content Type whose alias matches the value. Use this to target a specific Document Type (for example, only show on Blog Post nodes).
myCustomDocTypeAlias
Umb.Condition.WorkspaceContentTypeUnique
Requires the workspace to be based on a Content Type matched by its unique key (GUID). Use this when you need to target a specific Content Type without relying on its alias.
A content type GUID
Umb.Condition.SectionAlias
Restricts the view to a specific section (sidebar area).
Umb.Section.Content
Umb.Condition.EntityIsTrashed
Only shows the view if the current entity is in the recycle bin.
No match needed
Umb.Condition.EntityIsNotTrashed
Only shows the view if the current entity is not in the recycle bin.
No match needed
Explore the full list of registered conditions in the Umbraco Backoffice by navigating to Settings > Extension Insights and filtering by "Condition".
Targeting a specific Document Type
To show a workspace view only for a specific Document Type (for example, "Blog Post"), use Umb.Condition.WorkspaceContentTypeAlias:
Custom Conditions
If the built-in conditions don't meet your needs, you can create your own by implementing the UmbExtensionCondition interface. See the Extension Conditions documentation for a full guide.
View Lifecycle
Initialization
Views initialize when their tab becomes active.
Context consumption happens during construction.
Views have access to workspace-scoped contexts.
Tab Navigation
Views are lazy-loaded when first accessed.
Navigation updates the workspace URL with view pathname.
Views remain in memory while the workspace is open.
Context Integration
Views can consume multiple workspace contexts:
Common Patterns
Entity Information View
Interactive Configuration View
Analytics Dashboard View
Best Practices
View Organization
Use descriptive tab labels that indicate the view's purpose.
Order views by importance using the
weightproperty.Group related functionality into a single view rather than many small tabs.
Context Usage
Consume contexts in the constructor for immediate availability.
Use
observe()for reactive updates when context state changes.Check context availability before accessing properties.
Performance
Keep views lightweight for fast tab switching.
Load expensive data only when view becomes active.
Use loading states for async operations.
Last updated
Was this helpful?