Features controlled by iOS 17.4’s eligibility system

April 23, 2024 6 minute read

With massive thanks to plzdonthaxme for helping with research, we now know most of what’s going on with Apple’s feature eligibility system.

As a quick recap: The eligibility system works with a file on Apple’s servers that tells iOS which conditions must be met for a country-specific feature to be enabled. They can change this file at any time, and all active iOS devices should apply the update within a few days.

You can visit The Apple Wiki article about Eligibility for the most current (and detailed) info, but here’s a summary of what we found:

Unless I specifically call it out, all of these features are iPhone-only, and the country requirement applies to both your physical location, and your Apple ID’s country setting.

App marketplaces

If iOS determines you’re in the European Union, you can install app marketplaces (3rd-party app stores), and install apps offered in them. Or, coming in iOS 17.5, you can install apps directly from the web.

If you leave the EU, or sign into a non-EU Apple ID, you receive updates to these apps for a grace period of up to 30 days. After that, you stop receiving updates, and can’t reinstall either, including if you’re running low on space and iOS automatically offloads it (cloud icon next to the name on the home screen).

Apple confirmed in statements to the media that apps still open after the grace period expires – they just can’t be updated or reinstalled. Apps downloaded from the web do update automatically, by the way, because it’s still all Apple’s App Store infrastructure behind the scenes.

Web browsers

If you’re in the EU, you can install variants of browsers that use their own rendering/JavaScript engines, rather than Safari’s WebKit and JavaScriptCore. The app needs to be a separate app from the worldwide version of the app, which still must use WebKit/JavaScriptCore. (Mozilla has spoken out on why this is problematic.)

Like with app marketplaces, you have a grace period of 30 days after leaving the EU before browsers with their own engine stop updating or reinstalling.

You’ll also be prompted to choose a browser the first time you open Safari.

A full-screen prompt in Safari: Choose Your Default Browser. It lists several browsers you can install, Safari being one of them. (The list is randomly sorted to avoid bias.)

PWAs (home screen web apps)

Apple caused a stink during the 17.4 betas because web apps added to the home screen (Progressive Web Apps) would display a message stating they now open in your default web browser, instead of running in a full-screen app experience. This meant you lost cookies and other data you stored in the app (I heard of crypto wallet apps as one of the scariest examples – you couldn’t even transfer your data across to Safari!), and lost other features Safari locks to home screen apps to prevent abuse, such as push notifications. Apple swears this was due to them having a time constraint to release 17.4, but the DMA was signed into law in 2022, so they had plenty of time. Delaying to the last minute isn’t a good excuse 🤷‍♀️

A prompt on the home screen: Open “PWA Today” in Safari “PWA Today” will open in your default browser from now on.

Screenshot from Open Web Advocacy

Anyway, it seems this either was, or is now after the backlash, controlled by a remote toggle. This is the only one that disables something, rather than enabling. It’s currently set to nothing, so home screen web apps are enabled worldwide. The code for disabling them is probably still there, meaning it can be toggled back on at any time. I doubt they will, but the mechanism is there regardless.

Contactless payments

Moving to the European Economic Area now (the EU plus 🇮🇸 Iceland, 🇱🇮 Liechtenstein, and 🇳🇴 Norway). Users in the EEA have the option to use payment apps that can perform Host Card Emulation (HCE), which means your iPhone can act as a credit card to a payment terminal. In less technical words, apps can exist that compete with Apple Pay for in-person payments. They also have the option to become the default app launched when you double-click the side button, instead of Wallet/Apple Pay.

If you leave the EEA, you immediately revert to Apple Pay, and can’t use 3rd-party payment apps.

Apps can take you to a website to make purchases, rather than using the App Store In-App Purchase (IAP) system, in a number of countries:

  • 🇪🇺 EU: Allowed on iPhone only. (Apple documentation)
  • 🇮🇸 🇱🇮 🇳🇴 Iceland, Liechtenstein, Norway: Allowed on iPhone and iPad if you’re physically in one of these countries, and your billing address is also set to one of them, or, for some reason, 🇦🇹 Austria.
  • 🇺🇸 US: Allowed on iPhone or iPad if your Apple ID billing address is set to the US. (Apple documentation)
  • 🇷🇺 Russia: Allowed on iPhone and iPad if your billing address is set to Russia.

This permission remains active for a grace period of 30 days after you no longer meet any of these requirements.

3rd-party billing

In some countries, you can make an IAP purchase through a 3rd-party payment provider, without leaving the app:

South Korean apps must go through one of the following payment providers: KCP, Inicis, Toss, or NICE. Each app that wants to use 3rd-party billing needs to opt into the feature, and release separate versions of their app for South Korean and/or EU users.

This permission also remains active for 30 days after you no longer meet the requirements.

China geopolitics

An Apple system for country-specific features wouldn’t be complete without some curious Chinese geopolitical tweaks. There are already a number of things that differ on iOS if you have an iPhone whose model number ends in “CH” (that’s China in Apple’s model region system, not Switzerland). A new one introduced in iOS 17.4 changes the names of Hong Kong, Macao, and Taiwan across the operating system to include a “(China)” suffix if you have a China-region iPhone.

This one was more interesting to look into, because it was built as a patch to an open-source component, International Components for Unicode (ICU), which is used by basically all modern software on the planet. It handles things like displaying the correct date and time format, currency format, and specific to this case, country/language names translated to every language. What happened here is Apple made a patch that isn’t tied to the Chinese language, but rather whether the device is China-region. The patch code is publicly released in macOS 14.4’s open-source components. The engineer added an amusingly misleading comment explaining that it’s so China displays as “China mainland” when it appears next to Hong Kong, Macao, or Taiwan. Another part of the patch, where the country names are defined in each language, adds the “(China)” suffix when the code forces the “%prc” variant to be used.

#if APPLE_ICU_CHANGES
// rdar://115264744 (Sub-TLF: China geopolitical location display via ICU)
bool useChineseVariant = uaprv_onCalciumDevice();
if (useChineseVariant && uprv_strcmp(region, "CN") == 0) {
    // if the region code is CN, the regular display name is "China mainland" and the "%prc" variant
    // is "China".  On a China-SKU device, we want "China mainland" when CN appears in a list along
    // with TW. HK, and/or MO, and "China" the rest of the time.  We use
    // UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU as the mechanism to tell us when to say "China mainland".
    if (capitalizationContext == UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU) {
        useChineseVariant = false;
    }
}
#endif // APPLE_ICU_CHANGES

You can see this patch here and here.

That’s all we know for now. There are some eligibility domains that we haven’t figured out yet, but it’s likely because they’re not implemented yet. This is the bulk of it, though.

This post is based on a tweet I originally posted on Twitter.

See also my previous post about how the eligibility system works, and iOS 17.4’s flawed app marketplace installation flow.