Manage iOS apps metadata in AppStore using Fastlane

Nishan NiraulaNishan Niraula
5 min read

Recently I came across a post by Eren  iOS Dev (@iosdeveren) on X on X about managing what’s new section for iOS app update in App Store Connect and I wanted to share how we can use Fastlane to automate our workflow and manage these changes easily.

For those of you who are new to Fastlane, it is an awesome tool to automate development & release of iOS apps. Fastlane can be used for multiple purposes such as managing certificates, provisioning profiles, deploying builds to testflight and App Store etc. In this post, i'll mainly focus on managing our app metadata such as app title, subtitle, keywords etc using Fastlane.

If you are an indie dev and are tired of changing app title or keywords using App Store Connect interface, this article might be beneficial for you. I have been using fastlane to manage app title, subtitle, keywords, app description and other metadata for my personal app. It even supports localized metadata so changing keywords for multiple regions for the purpose of ASO has been a breeze.

Installation:

You need to have fastlane installed in your mac. If you are new to Fastlane, go to https://fastlane.tools/ and install it first. You can install Fastlane through Homebrew as well.

Setting Up:

Let's setup fastlane in your project. Go to your project directory and run fastlane init from your terminal. You can choose manual setup when asked for an option to choose.

A new folder called fastlane will be created in your project directory. Inside that fastlane directory, it will automatically creates 2 files: Appfile and Fastfile. To manage metadata update, we need another file called Deliverfile. Create a new empty file called Deliverfile (without any extension) in the same directory.

Let's understand what each file does:

  1. Appfile: Here we can define various configuration related to our developer account & app itself such as app bundle id, apple id etc.

  2. Deliverfile: This file will contain our keywords & metadata that need to be uploaded to AppStore.

  3. Fastfile: In this file, we will create our lane (fancy name for fastlane command or actions), which will actually upload our metadata to AppStore.

Let's get started:

Fastlane have lots of pre-defined action for us. We will use an action called deliver to update our metadata to AppStore. Each action supports multiple options. Deliver action supports updating name, subtitle, metadata, release notes & so many other things. You can see all the available options here: https://docs.fastlane.tools/actions/deliver/#deliver

Step 1:

First we setup our Appfile. In your Appfile, add some basic information as shown below. This information will be used when authenticating with App Store.

app_identifier("xyz.abc.myapp") # The bundle identifier of your app
apple_id("abcd@gmail.com") # Your Apple Developer account username

Step 2:

Now we will setup our Deliverfile. In Deliverfile, we can define our own variable which will store our app title, subtitle, keywords, release notes, app description, promotional text & more. You can see all the available options here https://docs.fastlane.tools/actions/deliver/#deliver. These values will be used by deliver action later on.

Let's see how we can setup our app titles, release notes & keywords for us & uk region as an example:

# App Title
$app_title_us = "Memey: Meme with AI" 
$app_title_uk = "Generate Meme - Memey"

# App Subtitle
$app_subtitle_us = "create interesting meme"
$app_subtitle_uk = "interesting meme generator"

# Release Notes
$app_release_notes = "Bug fixes & performance improvements"

# Keywords:
$keywords_us = "meme,generator,ai,......"
$keywords_uk = "create,meme,........"

Here we created separate values for app title, subtitle & keywords for us & uk region. We want to share release notes between both region so we created a single value for release notes.

Now we use these variables as value for pre-defined options for deliver action. Let's see how we can use them.

...
# App Title
name(
  "default" => $app_title_us,
  "en-US" => $app_title_us,
  "en-GB" => $app_title_uk
)

# App Subtitle
subtitle(
  "default" => $app_subtitle_us,
  "en-US" => $app_subtitle_us,
  "en-GB" => $app_subtitle_uk
)

# Keywords
keywords(
  "default" => $keywords_us,
  "en-US" => $keywords_us,
  "en-GB" => $keywords_uk
)

# Release Notes
release_notes(
  "default" => $app_release_notes
)
  1. We created variables to hold values for app titles, subtitles, keywords & release notes.

  2. We connected those values to deliver options such as name, keywords, subtitle & release_notes.

Some options allow you to specify localized values. We did that for name, keywords & subtitle. To specify localized values, we need to specify correct language codes for example "en-us", "en-gb" or "ja" for Japanese.

Deliver action also allows a special language code called "default". You can use "default" to specify default value for some languages. In our example, we want release notes to be same for both us & uk region, so we can simply use the $app_release_notes variable with "default" language code.

Step 3:

The hard part is done. Now we simply create our own command (or "lane") to actually update metadata in appstore. Open your Fastfile and create a new lane called update_metadata as shown below:

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end

  desc "Update metadata related to this app"
  lane :update_metadata do
    deliver(
      submit_for_review: false,
      skip_screenshots: true,
      reset_ratings: false,
      skip_binary_upload: true,
      skip_app_version_update: true,
      )
  end

end

We created a new lane called update_metadata, used deliver action, provided some additional options to skip few things as we are only interested in updating app metadata. The setting up part is now complete! If everything is setup correctly, you should be able to update your metadata using this update_metadata lane.

That's it! Open terminal in your project directory and simply run this command fastlane ios update_metadata . This would automatically run some checks, allow you to review the changes in nice html page and update the metadata in the App Store.


👋
I recently released a new update for my Intermittent Fasting Tracker iOS app. I'd love if you guys check it out and leave a review for the app on App Store.
0
Subscribe to my newsletter

Read articles from Nishan Niraula directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Nishan Niraula
Nishan Niraula