The persistent frame around an application: header, sidebar or drawer, active navigation state, breadcrumbs, search, and content region. The shell helps users understand where they are, where they can go, and what stays stable while pages change.
When to use it
Use the shell when a product has enough information architecture that users need a persistent frame, not just links inside page content.
Use a navigation shell when
The product has multiple related pagesUse a shell when users move between sections, detail pages, settings, reports, or workflows inside the same product area.
Users need persistent orientationThe current section, current page, and parent hierarchy should remain visible while the content changes.
Global actions need a stable homeSearch, theme, account, help, notifications, or create actions should live in a predictable frame rather than inside each page.
Use something else when
The task is a focused modal or wizardUse a dialog or wizard frame when users should stay inside one contained flow until they finish or cancel.
The experience is a single-purpose toolA calculator, upload drop zone, or embedded widget may need a compact toolbar instead of a full app frame.
The shell would duplicate a host productEmbedded tools should respect the surrounding product shell instead of nesting a second sidebar or header.
Anatomy
The shell owns global orientation. Page content owns the task inside the frame.
Header
Required
The persistent top bar contains product identity and global actions such as search, help, account, or theme.
Keep global controls in the header; do not repeat them inside every page.
Primary navigation
Required
A sidebar or drawer lists major sections and exposes the active section and page.
Use links for navigation destinations and buttons only for expand/collapse behavior.
Breadcrumb
Conditional
Use breadcrumbs when the current page sits under a parent or detail object. They should mirror hierarchy, not browser history.
Do not show breadcrumbs for single-level pages where the sidebar already answers location.
Content region
Required
The main landmark holds page-specific content. The shell stays stable while this region changes.
Use one main region and avoid nesting independent app shells inside it.
Responsive menu behavior
Conditional
On smaller screens, collapse primary navigation into a drawer controlled by a visible menu button.
Manage focus when the drawer opens and closes, and preserve the same navigation labels across breakpoints.
Variants
The same navigation model adapts across desktop, mobile, and local detail contexts.
Desktop sidebar shell
A persistent header and left navigation for multi-section products.
Trigger: Desktop or tablet-wide products with stable information architecture and repeated cross-section navigation.
Job: Keep the current section visible, expose sibling destinations, and reserve the main area for page content.
Mobile drawer shell
A compact header with navigation behind a menu button.
Trigger: Small screens where a persistent sidebar would crowd the content.
Job: Keep global orientation available without shrinking the main task area.
Section with local navigation
A product shell plus local tabs or links for a detail area.
Trigger: A detail page has several sibling views, such as Summary, Activity, Documents, and Settings.
Job: Keep global navigation separate from local detail navigation.
Examples
The previews show the frame, the active location, and the relationship between global and local navigation.
Vendor portal
Vendor overview
The sidebar shows major product sections while the breadcrumb confirms the current page.
Vendor portal
Help
Vendors/Overview
Vendor overview
The sidebar shows major product sections while the breadcrumb confirms the current page.
HeaderGlobal search, create action, account, and theme controls.
SidebarSection navigation with one active page.
ContentThe page changes; the frame stays stable.
Mobile vendor portal
Vendor overview
The menu button opens the same navigation tree and returns focus when closed.
Vendor portal
Help
Vendors/Overview
Vendor overview
The menu button opens the same navigation tree and returns focus when closed.
HeaderMenu, product name, search, and utility actions.
DrawerTemporary navigation panel with focus management.
ContentPrimary task stays full width.
Vendor detail
Acme Services LLC
The shell shows global location; local tabs switch within the current vendor.
Vendor portal
Help
Vendors/Acme Services LLC
Acme Services LLC
The shell shows global location; local tabs switch within the current vendor.
SummaryActivityDocumentsSettings
Global navMajor product sections.
Local navSibling views inside the current object.
ContentThe selected local view.
Active page state
Wrong
Vendors
The sidebar section is highlighted, but no child page has aria-current or visible active state.
Right
Vendor overview
The active page link is visibly selected and marked with aria-current="page."
Vendor overview
Users need to know the exact page they are on, not just the broad section.
Mobile navigation
Wrong
Hidden navigation
The sidebar disappears on mobile with no equivalent menu or focus behavior.
Right
Menu button opens navigation
The same navigation tree opens in a drawer, focus is managed, and labels remain consistent.
Open menu
Responsive behavior should preserve orientation, not remove it.
Voice and content
Navigation copy is product vocabulary. Keep labels stable enough that users can build a map of the product.
Use stable section labels
Navigation labels should be short nouns or noun phrases: "Vendors," "Documents," "Settings." Avoid clever verbs or campaign language.
Match labels across surfaces
Sidebar labels, breadcrumbs, page titles, and search results should use the same terms for the same destination.
Name the current page exactly
The active navigation item should match the page heading or the nearest plain-language equivalent.
Keep utility actions separate
Global utilities belong in the header. Page-specific actions belong near the page title or form actions.
Accessibility
Shell accessibility depends on landmarks, active state, expand/collapse semantics, and drawer focus management.
Use landmarks
Header, navigation, main, and footer regions should be semantic so assistive technology users can jump between them.
Expose current location
Use aria-current="page" on the active navigation link. Do not rely on color alone to mark the current page.
Wire expandable sections
Expandable navigation groups use buttons with aria-expanded and aria-controls. Links remain links.
Manage mobile drawer focus
When the drawer opens, focus moves into it. When it closes, focus returns to the menu button. Escape closes the drawer.
Implementation notes
The shell should be centralized. Every product area should not invent its own frame.
Use the existing shell components
Compose Header, Sidebar, SidebarNav, and ShellLayout rather than rebuilding a new frame per product area.