This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Configuring EAS Metadata

Edit page

Learn about different ways to configure EAS Metadata.


EAS Metadata is configured by a store.config.json file at the root of your project.

You can configure the path or name of the store config file with the eas.json metadataPath property. Besides the default JSON format, EAS Metadata also supports more dynamic config using JavaScript files.

Static store config

The default store config type for EAS Metadata is a simple JSON file. The code snippet below shows an example store config with basic App Store information written in English (U.S.).

You can find all configuration options in the store config schema.

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

Dynamic store config

At times, Metadata properties can benefit from dynamic values. For example, the Metadata copyright notice should contain the current year. This can be automated with EAS Metadata.

To generate content dynamically, start by creating a JavaScript config file store.config.js. Then, use the metadataPath property in the eas.json file to pick the JS config file.

store.config.js
// Use the data from `eas metadata:pull` const config = require('./store.config.json'); const year = new Date().getFullYear(); config.apple.copyright = `${year} Acme, Inc.`; module.exports = config;
eas.json
{ "submit": { "production": { "ios": { "metadataPath": "./store.config.js" } } } }

Store config with external content

When using external services for localizations, you have to fetch external content. EAS Metadata supports synchronous and asynchronous functions exported from dynamic store config files. The function results are awaited before validating and syncing with the stores.

store.config.js
// Use the data from `eas metadata:pull` const config = require('./store.config.json'); module.exports = async () => { const year = new Date().getFullYear(); const info = await fetchLocalizations('...').then(response => response.json()); config.apple.copyright = `${year} Acme, Inc.`; config.apple.info = info; return config; };
eas.json
{ "submit": { "production": { "ios": { "metadataPath": "./store.config.js" } } } }