---
title: Getting started with EAS Metadata
sidebar_title: Getting started
description: Learn how to automate and maintain your app store presence from the command line with EAS Metadata.
---

import { BoxLink } from '~/ui/components/BoxLink';
import { Terminal } from '~/ui/components/Snippet';

> **warning** EAS Metadata is in beta and subject to breaking changes.

EAS Metadata enables you to automate and maintain your app store presence from the command line. It uses a [**store.config.json**](./config.mdx#static-store-config) file containing all required app information instead of going through multiple different forms. It also tries to find common pitfalls that could cause app rejections with built-in validation.

## Prerequisites

EAS Metadata is available starting from EAS CLI >= 0.54.0, and _currently_ only supports the Apple App Store.

> Using VS Code? Install the [VS Code Expo plugin](https://github.com/expo/vscode-expo#readme) for auto-complete, suggestions, and warnings in your **store.config.json** files.

## Create the store config

Let's start by creating our **store.config.json** file in the root directory of your project. This file holds all the information you want to upload to the app stores.

If you already have an app in the stores, you can pull the information into a store config by running:

<Terminal cmd={['$ eas metadata:pull']} />

If you don't have an app in the stores yet, EAS Metadata can't generate the store config for you. Instead, create a new store config file.

```json store.config.json
{
  "configVersion": 0,
  "apple": {
    "info": {
      "en-US": {
        "title": "Awesome App",
        "subtitle": "Your self-made awesome app",
        "description": "The most awesome app you've ever seen",
        "keywords": ["awesome", "app"],
        "marketingUrl": "https://example.com/en/promo",
        "supportUrl": "https://example.com/en/support",
        "privacyPolicyUrl": "https://example.com/en/privacy"
      }
    }
  }
}
```

> By default, EAS Metadata uses the **store.config.json** file at the root of your project. You can change the name and location of this file by setting the **eas.json** [`metadataPath`](../../submit/eas-json.mdx#metadatapath) property.

## Update the store config

Now it's time to edit the **store.config.json** file and customize it to your app needs. You can find all available options in the [store config schema](./schema.mdx).

## Upload a new app version

Before pushing the **store.config.json** to the app stores, you must upload a new binary of your app. For more information, see [uploading new binaries to stores](../../submit/introduction.mdx).

After the binary is submitted and processed, we can push the store config to the app stores.

## Upload the store config

When you are happy with the **store.config.json** settings, we can send it to the app stores. You can push the store config to the app stores by running:

<Terminal cmd={['$ eas metadata:push']} />

If EAS Metadata runs into any issues with your store config, it will warn you when running this command. When there are no errors, or you confirm to push it with possible issues, it will try to upload as much as possible.

When the store config partially fails, you can change the store config and retry. `eas metadata:push` can be used to retry pushing the missing items.

## Next steps

<BoxLink
  title="Customize the store config"
  href="/eas/metadata/config"
  description="Customize the store config to adapt EAS Metadata to your preferred workflow."
/>

<BoxLink
  title="Store config schema"
  href="/eas/metadata/schema"
  description="Explore all configurable options EAS Metadata has to offer."
/>
