---
title: Homepage
description: >-
The first thing merchants see when they open your app in App Home is a landing
page, associated with the route file app._index.jsx in React Router-based
Shopify apps. It provides a clear entry point for merchants, and an
opportunity to provide daily value through status updates, metrics, and clear
actions merchants can take.
api_name: app-home
source_url:
html: 'https://shopify.dev/docs/api/app-home/patterns/templates/homepage'
md: 'https://shopify.dev/docs/api/app-home/patterns/templates/homepage.md'
---
# Homepage
The first thing merchants see when they open your app in App Home is a landing page, associated with the route file `app._index.jsx` in React Router-based Shopify apps.
It provides a clear entry point for merchants, and an opportunity to provide daily value through status updates, metrics, and clear actions merchants can take. Surface key information at a glance like performance metrics, items needing attention, and onboarding guidance for new users.
The homepage pattern provides this foundation while following proven design guidelines that help your app feel native to the Shopify admin. See [Built for Shopify requirements](https://shopify.dev/docs/apps/launch/built-for-shopify/requirements) for more details on these guidelines for apps.
#### Use cases
* Providing a dashboard with key metrics and status updates
* Surfacing items that need merchant attention
* Guiding new users through onboarding steps
***
## Examples
### Surface a homepage with score banner, metrics, and product list
Merchants need a clear entry point with key information and actions. This example surfaces a homepage for a Product Quality Auditor app with a score banner, metrics cards, setup guide, common issues summary, and a list of products needing attention.
##### jsx
```tsx
// @framework-globals: useState
const [visible, setVisible] = useState({
banner: true,
setupGuide: true,
calloutCard: true,
featuredApps: true,
});
const [expanded, setExpanded] = useState({
setupGuide: true,
step1: false,
step2: false,
step3: false,
});
const [progress, setProgress] = useState(0);
return (
Create puzzle
Browse templates
Import image
{/* === */}
{/* Banner */}
{/* Use banners sparingly. Only one banner should be visible at a time. */}
{/* If dismissed, use local storage or a database entry to avoid showing this section again to the same user. */}
{/* === */}
{visible.banner && (
setVisible({ ...visible, banner: false })}
>
3 of 5 puzzles created.{" "}
Upgrade to Puzzlify Pro to create unlimited
puzzles.
)}
{/* === */}
{/* Setup Guide */}
{/* Keep instructions brief and direct. Only ask merchants for required information. */}
{/* If dismissed, use local storage or a database entry to avoid showing this section again to the same user. */}
{/* === */}
{visible.setupGuide && (
{/* Header */}
Setup Guide
setVisible({ ...visible, setupGuide: false })}
variant="tertiary"
tone="neutral"
icon="x"
>
setExpanded({
...expanded,
setupGuide: !expanded.setupGuide,
})
}
variant="tertiary"
tone="neutral"
icon={expanded.setupGuide ? "chevron-up" : "chevron-down"}
>
Use this personalized guide to get your store ready for sales.
{progress} out of 3 steps completed
{/* Steps Container */}
{/* Step 1 */}
setProgress(e.currentTarget.checked ? progress + 1 : progress - 1)
}
>
{
setExpanded({ ...expanded, step1: !expanded.step1 });
}}
accessibilityLabel="Toggle step 1 details"
variant="tertiary"
icon={expanded.step1 ? "chevron-up" : "chevron-down"}
>
Start by uploading a high-quality image that will be
used to create your puzzle. For best results, use
images that are at least 1200x1200 pixels.
Upload image
Image requirements
{/* Step 2 */}
setProgress(e.currentTarget.checked ? progress + 1 : progress - 1)
}
>
setExpanded({ ...expanded, step2: !expanded.step2 })
}
accessibilityLabel="Toggle step 2 details"
variant="tertiary"
icon={expanded.step2 ? "chevron-up" : "chevron-down"}
>
Select a template for your puzzle - choose between
9-piece (beginner), 16-piece (intermediate), or
25-piece (advanced) layouts.
Choose template
See all templates
{/* Step 3 */}
setProgress(e.currentTarget.checked ? progress + 1 : progress - 1)
}
>
setExpanded({ ...expanded, step3: !expanded.step3 })
}
accessibilityLabel="Toggle step 3 details"
variant="tertiary"
icon={expanded.step3 ? "chevron-up" : "chevron-down"}
>
Make your puzzle unique by customizing the shapes of
individual pieces. Choose from classic, curved, or
themed piece styles.
Customize pieces
Learn about piece styles
{/* Add additional steps here... */}
)}
{/* === */}
{/* Metrics cards */}
{/* Your app homepage should provide merchants with quick statistics or status updates that help them understand how the app is performing for them. */}
{/* === */}
Total Designs
156
12%
Units Sold
2,847
0%
Return Rate
3.2%
0.8%
{/* === */}
{/* Callout Card */}
{/* If dismissed, use local storage or a database entry to avoid showing this section again to the same user. */}
{/* === */}
{visible.calloutCard && (
Ready to create your custom puzzle?
Start by uploading an image to your gallery or choose from one
of our templates.
Upload image
{" "}
Browse templates{" "}
setVisible({ ...visible, calloutCard: false })}
icon="x"
tone="neutral"
variant="tertiary"
accessibilityLabel="Dismiss card"
>
)}
{/* === */}
{/* Puzzle templates */}
{/* === */}
Puzzle Templates
{/* Featured template 1 */}
4-Pieces
View
{/* Featured template 2 */}
9-Pieces
View
{/* Featured template 3 */}
16-Pieces
View
See all puzzle templates
{/* === */}
{/* News */}
{/* === */}
News
{/* News item 1 */}
Jan 21, 2025
New puzzle shapes and themes added
We've added 5 new puzzle piece shapes and 3 seasonal themes to
help you create more engaging and unique puzzles for your
customers.
{/* News item 2 */}
Nov 6, 2024
Puzzle difficulty customization features
Now you can fine-tune the difficulty of your puzzles with new
rotation controls, edge highlighting options, and piece
recognition settings.
See all news items
{/* === */}
{/* Featured apps */}
{/* If dismissed, use local storage or a database entry to avoid showing this section again to the same user. */}
{/* === */}
{visible.featuredApps && (
Featured apps
setVisible({ ...visible, featuredApps: false })}
icon="x"
tone="neutral"
variant="tertiary"
accessibilityLabel="Dismiss featured apps section"
>
{/* Featured app 1 */}
Shopify Flow
Free
Automate everything and get back to business.
{/* Featured app 2 */}
Shopify Planet
Free
Offer carbon-neutral shipping and showcase your commitment.
)}
{/* Footer help */}
Learn more about creating engaging puzzles.
)
```
##### html
```html
Pattern
Create puzzle
Browse templates
Import image
3 of 5 puzzles created.
Upgrade to Puzzlify Pro to create unlimited puzzles.
Setup Guide
Use this personalized guide to get your store ready for sales.
0 out of 3 steps completed
Start by uploading a high-quality image that will be used to create your
puzzle. For best results, use images that are at least 1200x1200 pixels.
Upload image
Image requirements
Select a template for your puzzle - choose between 9-piece (beginner),
16-piece (intermediate), or 25-piece (advanced) layouts.
Choose template
See all templates
Make your puzzle unique by customizing the shapes of individual pieces.
Choose from classic, curved, or themed piece styles.
Customize pieces
Learn about piece styles
Total Designs
156
12%
Units Sold
2,847
0%
Return Rate
3.2%
0.8%
Ready to create your custom puzzle?
Start by uploading an image to your gallery or choose from one of our templates.
Upload image
Browse templates
Puzzle Templates
4-Pieces
View
9-Pieces
View
16-Pieces
View
See all puzzle templates
News
Jan 21, 2025
New puzzle shapes and themes added
We've added 5 new puzzle piece shapes and 3 seasonal themes to help you create more
engaging and unique puzzles for your customers.
Nov 6, 2024
Puzzle difficulty customization features
Now you can fine-tune the difficulty of your puzzles with new rotation controls, edge
highlighting options, and piece recognition settings.
See all news items
Featured apps
Shopify Flow
Free
Automate everything and get back to business.
Shopify Planet
Free
Offer carbon-neutral shipping and showcase your commitment.
Learn more about creating engaging puzzles.
```
***