Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,12 @@
"mini-apps/features/links"
]
},
{
"group": "Core Concepts",
"pages": [
"mini-apps/core-concepts/manifest"
]
},
{
"group": "Design Guidelines",
"pages": [
Expand Down
157 changes: 157 additions & 0 deletions docs/mini-apps/core-concepts/manifest.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
---
title: "Manifest"
description: "Configure your Mini App's manifest file to enable search, discovery, and rich embed features in the Base App platform."
---

## How It Works

When you deploy a Mini App, the Base App platform reads the manifest configuration to understand your app's metadata and presentation requirements. The platform uses this information to index your app for search, display it in discovery interfaces, and generate rich embed previews.

## Implementation

1. Create a manifest file in your Mini App project root
2. Define required identification and metadata fields
3. Sign the manifest -- https://www.base.dev/

<Warning>
Changes to the manifest take effect when you redeploy your Mini App. The platform re-indexes the updated configuration and applies changes to search, discovery, and embed rendering.
</Warning>

```json
{
"accountAssociation": {
"header": "eyJmaWQiOjkxNTIsInR5cGUiOiJjdXN0b2R5Iiwia2V5IjoiMHgwMmVmNzkwRGQ3OTkzQTM1ZkQ4NDdDMDUzRURkQUU5NDBEMDU1NTk2In0",
"payload": "eyJkb21haW4iOiJhcHAuZXhhbXBsZS5jb20ifQ",
"signature": "MHgxMGQwZGU4ZGYwZDUwZTdmMGIxN2YxMTU2NDI1MjRmZTY0MTUyZGU4ZGU1MWU0MThiYjU4ZjVmZmQxYjRjNDBiNGVlZTRhNDcwNmVmNjhlMzQ0ZGQ5MDBkYmQyMmNlMmVlZGY5ZGQ0N2JlNWRmNzMwYzUxNjE4OWVjZDJjY2Y0MDFj"
},
"baseBuilder": {
"allowedAddresses": ["0x..."]
},
"miniapp": {
"version": "1",
"name": "Crypto Portfolio Tracker",
"homeUrl": "https://ex.co",
"iconUrl": "https://ex.co/i.png",
"splashImageUrl": "https://ex.co/l.png",
"splashBackgroundColor": "#000000",
"webhookUrl": "https://ex.co/api/webhook",
"subtitle": "Easy to manage",
"description": "Track and manage your cryptocurrency portfolio.",
"screenshotUrls": [
"https://ex.co/s1.png",
"https://ex.co/s2.png",
"https://ex.co/s3.png"
],
"primaryCategory": "finance",
"tags": ["finance"],
"heroImageUrl": "https://ex.co/og.png",
"tagline": "Save instantly",
"ogTitle": "Example Mini App",
"ogDescription": "Easy to manage portfolio.",
"ogImageUrl": "https://ex.co/og.png",
"noindex": true
}
}
```
<Tip>
Set `"noindex": true` for development or staging environments to prevent search indexing.
</Tip>


## Schema

### Top-level fields

| Property | Type | Required | Description |
|---------------------|--------|----------|---------------------------------------------------|
| `accountAssociation`| object | Yes | Proves domain ownership for your Mini App. |
| `miniapp` | object | Yes | Contains all metadata used by Base App. |
| `baseBuilder` | object | Yes | This verifies ownership and connects your Base Build account. |

### `accountAssociation` fields

| Property | Type | Required | Description |
|-------------|--------|----------|----------------------------------------------|
| `header` | string | Yes | Encoded header for the association payload. |
| `payload` | string | Yes | Encoded payload containing your domain. |
| `signature` | string | Yes | Signature over the payload. |

### `baseBuilder` fields

| Property | Type | Required | Description |
|-------------|--------|----------|----------------------------------------------|
| `allowedAddresses` | string | Yes | This verifies ownership and connects your Base Build account. |

### `miniapp` fields

#### Identity & Launch

Defines your Mini App's core identity and the URL users land on when they open it.

| Property | Type | Required | Description | Constraints |
|-----------------|--------|----------|---------------------------|-------------|
| `version` | string | Yes | Manifest version. | Must be `"1"`. |
| `name` | string | Yes | Mini App name. | Max 32 chars. |
| `homeUrl` | string | Yes | Default launch URL. | HTTPS URL, max 1024 chars. |
| `iconUrl` | string | Yes | Icon image URL. | HTTPS URL, PNG 1024×1024; transparent background discouraged. |

#### Loading Experience

Controls the splash screen visuals and colors shown while your Mini App loads.

| Property | Type | Required | Description | Constraints |
|-------------------------|--------|----------|----------------------------|-------------|
| `splashImageUrl` | string | Yes | Loading image. | HTTPS URL, recommended 200×200px. |
| `splashBackgroundColor` | string | Yes | Loading background color. | Hex code (e.g., `#000000`). |

#### Discovery & Search

Determines how your Mini App is indexed, categorized, and surfaced across Base App discovery features.

| Property | Type | Required | Description | Constraints |
|--------------------|----------|----------|----------------------------------------------------|-------------|
| `primaryCategory` | string | Yes | Controls where your app appears in category browsing. | One of: `games`, `social`, `finance`, `utility`, `productivity`, `health-fitness`, `news-media`, `music`, `shopping`, `education`, `developer-tools`, `entertainment`, `art-creativity`. |
| `tags` | string[] | Yes | Search/filter tags. | Up to 5; ≤ 20 chars each; lowercase; no spaces/emojis/special chars. |
| `noindex` | boolean | No | Exclude from search results. | `true` = exclude, default = include. |

#### Display Information

Provides the descriptive text, screenshots, and promotional images shown on your Mini App's profile.

| Property | Type | Required | Description | Constraints |
|------------------|----------|----------|-------------------------------------|-------------|
| `subtitle` | string | No | Short description under name. | Max 30 chars; avoid emojis/special chars. |
| `description` | string | No | Promo text for app page. | Max 170 chars; avoid emojis/special chars. |
| `tagline` | string | No | Marketing tagline. | Max 30 chars. |
| `heroImageUrl` | string | No | Large promo image. | 1200×630px (1.91:1), PNG/JPG. |
| `screenshotUrls` | string[] | No | Visual previews. | Max 3; portrait 1284×2778px recommended. |

#### Embeds & Social Sharing

Configures how your Mini App appears when shared in feeds or on social platforms.

| Property | Type | Required | Description | Constraints |
|---------------------------|--------|----------|---------------------------|-------------|
| `ogTitle` | string | No | Open Graph title. | Max 30 chars. |
| `ogDescription` | string | No | Open Graph description. | Max 100 chars. |
| `ogImageUrl` | string | No | Open Graph image. | 1200×630px (1.91:1), PNG/JPG. |

#### Notifications

Notification endpoint.

| Property | Type | Required | Description | Constraints |
|------------------------|----------|----------|-----------------------------|-------------|
| `webhookUrl` | string | No | POST events endpoint. | HTTPS URL, max 1024 chars. Required if using notifications. |

## Next Steps

<CardGroup cols={2}>
<Card title="Search and Discovery" href="/mini-apps/features/search-and-discovery">
Learn how your manifest powers search indexing and category placement in Base App discovery features.
</Card>

<Card title="Embeds and Previews" href="/mini-apps/features/embeds-and-previews">
Understand how your manifest creates rich embeds when your Mini App is shared in feeds and social platforms.
</Card>
</CardGroup>