App Store - James Montemagno https://staging.montemagno.com/tag/app-store/ https://staging.montemagno.com/content/images/2017/08/MonogramIcon_Orange_NoBuffer.png App Store - James Montemagno https://staging.montemagno.com/tag/app-store/ Hugo -- gohugo.io Tue, 13 Oct 2026 23:21:57 GMT 60 Staged Rollouts & Phased Release on Google Play and App Store Connect https://staging.montemagno.com/using-phased-releases-on-google-play-and-app-store-connect/ 61362c9aba5764003b25c185 Mon, 06 Sep 2021 16:05:50 GMT

As an app developer it is hard enough to create your app, test your app, prep the app store listings, and then get your app approved. The last thing you want to think about is how fast or slow to roll out your app and updates to users. For the past 10 years all I have ever done was just release the app to everyone all at once, and for a long time this all that was available to us. However, now there are options for developers from both Google and Apple that can manage your release. Unfortunately, Google's staged rollouts and Apple's phased release aren't exactly the same, so let's talk about them.

Why a phased release?

Because we don't want a bunch of 1-star reviews if things go wrong 😉. I joke, but it is true that one of the reasons is that we don't know if something is going to go wrong once the app is released. If you are like me, I do rigorous testing in development and through Test Flight and Google Play's internal testing. However, I don't own every single device out there and I don't know the state of the current app on each user's device. Once an app update is out, there is no undo button, there is no taking it back. Therefore, planning a phased release or staged rollout is important. We can release the app to limited number of users each day and get real-time feedback from analytics, support emails, or even app store reviews. It is better to handle these problems in a limited scope before it gets out to all users. The downside is that you will need to plan your release and updates at least a week ahead of time, but eventually as your app grows it is going to be worth it.

Apple Phased Release

For iOS and Mac apps Apple has the ability with one radio button to flip on phased released when you submit your app for review. If you have it set to manual release you can also change it after the app has been approved. Apple phased releases are very Appley, which means it is well thought out, but you have very little control over exactly how it is rolled out. When you turn on phased release your application will be fully rolled out over 7 days to all your users at increments of 1%, 2%, 5%, 10%, 20%, 50%, and 100%. At any time, you can pause the phased release.

Phased release plan by Apple for iOS and Mac Apps
Phased release plan by Apple for iOS and Mac Apps

One percent is a small number for the first day especially if you don't have a large install base. I recently did this rollout for My Cadence, and it meant that around thirty-five users got the update on day one. Seeing that my app isn't used every single day and a user needs to do a bike ride, who knows how many people used the update. It really isn't until around day 4 that my sample size had increased to around 350 users and I could check my app analytics to see if upgraded users are using the app and if crashed are occurring.

At this point I would have liked to pause for a few days, monitor the app, and then continue with the release, but that is not an option. The phased release continues and increases the user base fast. I understand why Apple limits the rollout, but a tiny bit more control would be nice.

Now, what if you are a few days into a release and decide the update is good to go and you want to release it to all users. Don't worry, Apple has you covered with a big release to all users button. If you have a large user base, you may end up using this option by day 3 or 4 because you should have the data you need.

You always have the ability to release to all users
You always have the ability to release to all users

Google Staged Rollout

As I mentioned earlier the two companies have similar features but work completely different. Google's approach feels super Googley. They give you 100% control with extremely limited guidance and no restrictions at all. You enter a number into a box and away your staged rollout goes. You can start with any percentage you would like, and they give you an estimate of how many users will get this update. From there you can let it sit at any percentage for as long as you would like. You can update the rollout percentage 1% at a time or set it to anything you would like. Once you set it to 100% it is fully rolled out. This approach is genuinely nice because you can rollout the release over any amount of time, but it is a 100% manual process, which is not super fun. I ended up doing 20%, 40%, and then 100% over a week.

You select what % your rollout is on Google Play
You select what % your rollout is on Google Play

Each app store has its own advantages and draw backs when it comes to phased releases. If you take a bit of time to plan out your releases, you can save yourself some headaches if something goes wrong.

Listen to the podcast

Frank and I recently had this very topic on our podcast Merge Conflict. Take a listen.

Checkout my videos on YouTube

]]>
Asking for app reviews really works! It just takes 1 line of code! https://staging.montemagno.com/asking-for-app-reviews-really-works/ 5feb59b2875b7700393723b6 Tue, 29 Dec 2020 17:30:00 GMT

Last week I launched a new app called My Cadence for both iOS and Android. Even though it was a quick app that only took me a week or so to build and ship, I still followed my checklist of best practices to ensure as much success as I could. I of course did real world testing myself and with TestFlight users, I tested light and dark theme modes, and I even put in-app purchases in from the start! Even with all of this, there one line of code (using the Store Review Plugin) that can really make a difference for your app once it hits the app store, and that is asking users for reviews!

I know what you are thinking, but James everyone hates those pop ups asking for reviews. I agree with this statement, but only when the request for a review is not handled properly. For example, I got a request to review my banking application before I even logged in! That is annoying and you know that the users is going to cancel and never leave a review. So, when I implement app review requests, I try to be clever about it track a main action that the user is doing. Then after so many times I will prompt them for a review. In the case of My Cadence after 5 successful connections to a sensor when the user hits stop, I will prompt for a review.

The first thing I do is create a small preference that can track usage across sessions with Xamarin.Essentials Preferences:

public static int Usage
{
    get => Preferences.Get(nameof(Usage), 0);
    set => Preferences.Set(nameof(Usage), value);
 }

Preference to save an integer for usage stats

Then, when the user presses Stop to disconnect, I grab the count, increase it, check if it is the 5th time, and the request a review using the Store Review Plugin.

var count = Settings.Usage;
count++;
if(count == 5)
{
    CrossStoreReview.Current.RequestReview(false);
}
Settings.Usage = count;

Requesting Review after 5 times using the app

The best part is that this enables the users to not only give you a star rating, but also allows the user to write a full review on both iOS and Android!

iOS flow from start to finish
iOS flow from start to finish
Android review flow
Android review flow

Now, on to my findings! It really works! My app has been available for 1 week now and I already have 6 ratings and 5 full reviews!

App Store Connect with Reviews!
App Store Connect with Reviews!

It is still early days on Android, but I already have 2 ratings and a review, which is awesome! This method of asking specific users after they use specific features of your app a specific amount of time is a wonderful way of getting helpful reviews. The logic here is that users that are repeat users of the application must like it enough to keep using it and are more likely to leave a review. So far, this rings true, but of course you need to have an application that does what is advertised.

I hope that this was helpful and that you take a look at putting in-app review requests into your app with this simple method.

iOS Screenshot from Apptentive

]]>
iOS 11 Missing Marketing Icon https://staging.montemagno.com/ios-11-missing-marketing-icon/ 59d82f9dc76a42002225ace6 Sat, 07 Oct 2017 01:42:51 GMT It is update season for iOS and Android applications with new versions of the operating systems being released. Today, I was on my way to push out a new version of the Xamarin Live Player to Test Flight users and hit this nasty error:

Missing Marketing Icon. iOS Apps must include a 1024x1024px Marketing Icon in PNG format. Apps that do not include the Marketing Icon cannot be submitted for App Review or Beta App Review.

What is that?!?!? I swear I uploaded the icon to iTunes connect. Well... I did, but that wasn't the issue! It is this new silly icon that is in the assets library that you must include. Tha tis right, you need to now shove a 1024x1024px icon for not good reason into your app. It is a new one and is NOT the iTunes artwork of the past. So, let's head into the assets library and find this little hidden icon:

2017-10-06_1840

Just like that, we can now actually send out our app to testers and to the app store! Silly Apple :)

]]>
Opening App Store for Ratings on iOS and Android https://staging.montemagno.com/opening-app-store-for-review-on-ios-and-android/ 598df8f2c121b60019bf2fd8 Fri, 20 Jan 2017 19:45:11 GMT Sometimes you want to ask your users to rate your application. There are several components out there that will open a dialog box and prompt for ratings, but sometimes you don’t want to stop the flow of your app and throw it in their face. What I do in my application is simply add a section on my settings page asking if they would like to rate the app. When pressed I launch the app store directly to the review page:

Update!

This is now easier than ever with my Store Review Plugin! Just a single line of code and you are good to go!

Original blog post

This is pretty simple to do for iOS and Android by launching a specific URL scheme. To do this, we will use two differnt plugins:

For iOS you will need to decide what URL you want to use based on the OS versions you support as each have different URLs:

* **Lower than iOS 7:** ``` itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=YOUR_APP_ID ```

  • iOS 7:
itms-apps://itunes.apple.com/app/idYOUR_APP_ID
  • iOS 8 or later:
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=YOUR_APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software

I only target iOS 8 and later so I will use that item. All you need to do is replace the “YOUR_APP_ID” with your actual APP ID from your iTunes connect page.

Update! Recently Apple updated the store to simply append on action=write-review onto the end such as:

var url = $"itms-apps://itunes.apple.com/app/id{appId}?action=write-review";

From the looks of it this works all the way back to iOS 8.

For Android, you will need the URL of your app on Google Play:

https://play.google.com/store/apps/details?id=YOUR_APP_ID

The Code! Let’s do this

It is actually really simple now:

var url = string.Empty;
var appId = string.Empty;

if(CrossDeviceInfo.Current.Platform == Platform.iOS)
{
    appId = "your_id";
    url = $"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id={appId}&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software"
}
else if(CrossDeviceInfo.Current.Platform == Platform.Android)
{
    appId = "your_id";
    url = $"https://play.google.com/store/apps/details?id={appId}"
}

if(string.IsNullOrWhiteSpace(url))
  return;

await CrossShare.Current.OpenBrowser(url, new BrowserOptions
{
    UseSafariWebViewController = false
);}

Boom, there you have it! The app store for both iOS and Android will open up and you are good to go.

Enjoy!

]]>