App header

An app header is a consistently available element that sits at the top of every application interface. It contains a brand logo or mark and application-wide functionality, including navigation and utility actions.

App header example

Use as the primary element to orient users within the UI. The app header should be globally persistent, enabling easy navigation and access to utilities.

The app header has three functional areas:

  1. Branding: Displays a brand logo or mark followed by the application name in text form. This should always link to the product’s homepage.
  2. Navigation: Serves as the container for the primary navigation. Its inclusion is optional if you have single-page applications or use a persistent side navigation.
  3. Utilities: Provides access to persistent application-wide utilities, such as external links, search, notifications, help, account details and settings.
Header functional areas—branding, navigation and utilities.
  • Use NavigationItem to build the horizontal page navigation, as explained in the navigation pattern.

  • Use FlexLayout with justify set to space-between to position the brand logo, navigation and utilities.

    Example showing header’s desktop layout construction.
  • Use a stack layout with the direction property set to row to position the menu button and the logo.

  • The menu button opens and closes the navigation drawer.

  • Use a stack layout to position the vertical navigation and utilities within the drawer.

    Example showing header’s mobile layout construction.

Always place your logo on the top-left corner of the application. It can be preceded by the app name in text form as part of the branding area. This area can vary in size and composition where:

  • The max-height follows the fixed default height for base components in each density —size-base.
  • The width responds to its content —standalone logo; or logo & app name together.

Refer to the J.P. Morgan Brand Toolbox brand guidelines if using an authorized J.P. Morgan logo.

Example showing the logo layout construction.

Consider the following when placing your logo in the app header:

  • Keep the aspect ratio of your logo when resizing it in each density. Consider visual balance and affordance.
  • You don't need to resize your logo to fit the max-height (size-base) of the branding area.
  • If preceded by the app name, the text should follow density aware body-text.
  • Consider creating a compact version of your logo for small viewport experiences.
Example showing the comapct logo layout construction.
Best practices
  • Always place the logo on the top-left corner of the application.
  • You can place a title or app name in text form next to the logo.
  • Link the logo to the app home page.
  • The logo should give users a sense of place while providing a large enough clickable target area.

In this layout, the app header is globally persistent. You can use it as standalone navigation for a small number of sections that don’t require secondary navigation. Although this layout provides more horizontal space for content, it has limited space for navigation items, and you may need to use combined navigation for complex hierarchies.

Example of the header-only variant.

The app header with vertical navigation offers an additional layer of hierarchy. This layout allows users to navigate complex structures and perform system and product tasks in the UI. Under this configuration, submenus can remain on display without interfering with the content. For more details about navigation hierarchy, visit the navigation pattern.

Header paired with vertical navigation.
An app header paired with vertical navigation.

The app header is responsive to the width of the application viewport and responds dynamically to the Salt breakpoints. As the app header scales down to fit smaller viewports, its elements adjust dynamically to provide the best possible user experience.

For small viewport experiences, the app logo remains visible, while navigation and utility actions collapse into a hamburger menu positioned to the left of the brand logo. The navigation items will sit on top of the utility actions in the hierarchy of the vertical navigation.

App header with desktop layout for medium, large and extra large viewport experiences.
App header with desktop layout for medium, large and extra large viewport experiences.
App header with mobile layout for extra small and small viewport experiences.
App header with mobile layout for extra small and small viewport experiences.
Best practices
  • Navigation items sit on top of the utility actions in the hierarchy of the hamburger menu.
  • If a search utility action is part of the app header, keep search functionality persistently available for small viewports.
  • Consider medium, large and extra large Salt breakpoints for desktop experiences.
  • Consider extra small and small Salt breakpoints for mobile experiences.

The app header should sit in the north region, above the main, in a sticky position while the user scrolls down the page. This increases the discoverability of the elements in the header, where users can quickly access the navigation and utility actions elements without scrolling up to the top of the page.

The header stays in place while the user scrolls.
The header stays in place while the user scrolls.

If you're implementing a complex app header with several navigation items and utility actions, you should precede those header components with a skip link. This enables keyboard and screen reader users to shift focus quickly to the main page content and navigate your application more efficiently.

Example of the 'Skip to content' link in the app header.
Example of the 'Skip to content' link in the app header.

If you need to expand the pattern or share feedback with us, please contact the team.