---
gid: temp
title: App structure
description: Apps are structured to work seamlessly with the Shopify admin and to provide an intuitive experience for merchants.
template: landing_page
---
Apps are structured to work seamlessly with the Shopify admin and to provide an intuitive experience for merchants.
## Anatomy
1. The Shopify admin
1. App nav
1. App header
1. Page header
1. Overflow menu
1. App body
Apps consist of a few navigation elements and the app body, which is the center of your app's experience.
App navigation is strictly configured, and it's an important part of providing a great merchant experience. For more details, refer to the [navigation guidelines](/apps/design-guidelines/navigation).
## App body
The app body is where your app's main experience lives.
Be sure to follow the [layout guidelines](/apps/design-guidelines/layout) when you choose a layout for the app body.
## Max modal
Max modal is a focused environment for specific immersive tasks. Refer to Polaris for [guidance on overlays](https://polaris.shopify.com/components/deprecated/modal#best-practices).
The modal utilizes the following areas of the app interface:
1. **Modal header**: The max modal can contain a top bar element to render a primary and a secondary action.
1. **App body**: The modal body is where you can add all the content for a full-screen experience.
### When to use max modal
Use max modal when merchants need to complete a focused task, where leveraging the full viewport improves the user experience.
The following are some example use cases:
- Complex editing experiences, such as an editor for creating newsletter content
- Immersive experiences, such as an editor for cropping and modifying images
- Previews, such as an app that adds elements to a product page and enables merchants to preview changes
### Behavior
Max modal launches only after merchants interact with a button that indicates the entire canvas will be used.
Primary navigation for the app should be shown in the top bar of the modal and the primary actions should not be duplicated. This applies to developers using the latest version of App Bridge.
If there are unsaved changes, prompt merchants to save before exiting full-screen mode.
Avoid unnecessarily interrupting a merchant's workflow when exiting modal.
Your app should not launch full-screen or the max modal from the app nav. Instead, they should launch from the app body. This is an app store requirement.
Avoid using the [FullscreenBar](https://polaris.shopify.com/components/navigation/fullscreen-bar) within a max modal, as it results in redundant mechanisms to dismiss the modal.
## Admin UI extensions
Use admin UI extensions to integrate more deeply with the Shopify admin and create seamless merchant workflows.
Choose from the following extensions:
1. `Admin block`
1. `Admin action`
1. `Admin link`
1. `Bulk action`
[Additional admin extensions](/docs/apps/structure/app-extensions/list) are available for more specific use cases.
The extension can't be used to display promotions or advertisements. This includes promoting your app, related apps, or requesting app reviews. This is an app store requirement.
### App attribution
Shopify will badge all admin UI extensions with the app icon, name, and a link to your app URL.
The app attribution component displays your app's logo and extension name as it displays in the Shopify App Store.
### When to use admin blocks
Use admin block extensions to offer your app's functionality or data in the context of a resource detail page. Merchants have the option to add your app block to a page, and arrange it in the page layout.
App blocks can be embedded into Product, Order, or Customer detail pages using these [extension targets](/docs/api/admin-extensions/api/extension-targets).
[Learn more about admin blocks](/docs/apps/admin/admin-actions-and-blocks#admin-blocks).
Contents should be less than 600px in height, to avoid overly tall app blocks. If necessary, implement pagination to ensure that this requirement is met.
Input fields should be visible at all times. If necessary, app blocks should trigger app actions to ensure that this requirement is met.
Your block should have an empty state that informs merchants about what your app block does. For example, it should tell merchants what data will display in the block.
Inputs in your block can work with the contextual save bar by using the [Form](/docs/api/admin-extensions/components/forms/form) component, which provides merchants with a familiar save and validation experience.
### When to use admin actions
Use admin action extensions to offer merchants quick access to common actions that they might do with your app. Because apps can add an unlimited number of admin actions, use discrete actions for discrete purposes.
App actions can be targeted to these [extension targets](/docs/api/admin-extensions/api/extension-targets).
[Learn more about admin actions](/docs/apps/admin/admin-actions-and-blocks#admin-actions).
Apps can have multiple admin action extensions, which display in the More actions menus.
Avoid action content that exceeds 1200px and avoid using more than two steps of pagination. Otherwise, your app can be difficult to navigate.
### When to use admin links and bulk actions
If your content doesn't fit well within the format of the block or action, then use an admin link or bulk action instead. If an interaction is complex, such as one that requires more screen space, then routing merchants into your app is a better experience.
Examples include a multi-step process, a very long form with multiple dynamic sections, or a complex editor with several columns.
Admin links show up in the More actions menus.
Bulk actions show up in the More actions menu of bulk actions controls.
### Combining extensions
Use app actions and blocks together to provide a more focused merchant experience.
An admin block can trigger an admin action. For more information, refer to the extension [custom protocol](/docs/api/admin-extensions#custom-protocols-extension).
Avoid duplicating the content of your admin blocks and admin actions. Differentiating the functionality and value of your blocks and actions helps merchants understand which extensions to use and when.
{/* Footer next/previous */}