---
title: Navigation
description: >-
The Navigation API lets you navigate within and outside of your app using the
[HTML anchor
element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a). You can
also modify the top-level browser URL with or without navigating using the
[History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) or
the browser's native [Navigation
API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API).
api_name: app-home
source_url:
html: >-
https://shopify.dev/docs/api/app-home/apis/user-interface-and-interactions/navigation
md: >-
https://shopify.dev/docs/api/app-home/apis/user-interface-and-interactions/navigation.md
---
# Navigation
The Navigation API lets you navigate within and outside of your app using the [HTML anchor element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a). You can also modify the top-level browser URL with or without navigating using the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) or the browser's native [Navigation API](https://developer.mozilla.org/en-US/docs/Web/API/Navigation_API).
#### Use cases
* **App routing:** Navigate between pages within your app using HTML anchor elements.
* **URL management:** Modify the top-level browser URL without triggering full page navigation.
* **External links:** Navigate to external pages or Shopify admin pages from within your app.
* **Programmatic navigation:** Navigate to routes using JavaScript with `open()` for cases where anchor elements aren't suitable.
Examples
### Examples
* #### Navigate to Shopify admin pages
##### Description
Navigate to Shopify admin pages. This example uses the \`shopify:\` protocol to navigate to admin index pages (products, orders, customers) or directly to specific resources by appending the resource ID.
##### Default
```html
Products
Orders
Customers
Product #123
Order #456
Customer #789
```
* #### Navigate to a relative path in your app
##### Description
Navigate to a relative path in your app. This example navigates to a route within your app using a relative path. Use anchor elements or \`window\.open()\` with paths relative to your app root.
##### HTML
```html
Settings
```
##### JavaScript
```js
open('/settings', '_self');
```
* #### Update the browser URL with the History API
##### Description
Update the browser URL with the History API. This example uses \`history.pushState()\` and \`history.replaceState()\` to update the browser URL without triggering a page reload. Use \`pushState\` to add a new history entry, or \`replaceState\` to modify the current entry.
##### pushState
```js
history.pushState(null, '', '/settings');
```
##### replaceState
```js
history.replaceState(null, '', '/settings');
```
* #### Update the browser URL with the Navigation API
##### Description
Update the browser URL with the Navigation API. This example uses \`navigation.navigate()\` with history options to update the browser URL. The Navigation API provides a more modern alternative to the History API with better support for SPA routing.
##### pushState
```js
navigation.navigate('/settings', {
history: 'push',
});
```
##### replaceState
```js
navigation.navigate('/settings', {
history: 'replace',
});
```
* #### Open an external URL in a new window
##### Description
Open an external URL in a new window. This example opens an external URL in a new browser tab or window using \`target="\_blank"\`. The Shopify admin remains open in the original tab.
##### HTML
```html
Settings
```
##### JavaScript
```js
open('https://example.com', '_blank');
```
* #### Open an external URL in the current window
##### Description
Open an external URL in the current window. This example navigates to an external URL in the current window using \`target="\_top"\`. The browser leaves the Shopify admin and loads the external page.
##### HTML
```html
Settings
```
##### JavaScript
```js
open('https://example.com', '_top');
```