AppForShare

iPhone app icon stays grey after installing a test build: causes and fixes

· 9 min read

iPhone app icon stays grey after installing a test build: causes and fixes

A tester taps Install on a link. The app icon appears on the home screen, but it stays grey or dimmed. Sometimes a progress ring sits in the middle and never moves. Sometimes the icon disappears after a while, or iOS shows "Unable to install" or "integrity could not be verified". It happens with InstallOnAir, Diawi, AppForShare and any other over the air install, because the decision is made by iOS on the phone, not by the service that hosts the file.

InstallOnAir's FAQ, as read on their site in November 2026, explains a grey icon after install as the device UDID not being in the provisioning profile, and tells testers to ask their developer (installonair.com/faq). That is the most common cause, but not the only one. This guide helps you tell a stalled download from a refused build, lists the causes in the order to check them, and shows the fix for each.

First, which kind of grey icon is it

A grey icon means iOS has started the install but has not finished it. What happens next tells you where to look.

  • Grey with a progress ring that moves. The build is still downloading. Large builds on a slow connection take a while. Wait.
  • Grey with a ring that stops, or a label that stays on "Waiting" or "Loading". The download stalled. This is a network or storage problem, not a signing problem.
  • Grey, then a message such as "Unable to install" or "integrity could not be verified". iOS downloaded the build and refused it. This is a signing problem, and installing the same build again will not help.
  • The icon looks normal but the app will not open. That is a different problem: Developer Mode, enterprise trust or an expired profile on an app that was already installed. See the last section.

Cause 1: the download did not finish

If the ring stopped, the build never fully reached the phone. Common reasons are a weak or switching connection, a link opened outside Safari, or a phone that is short on storage for a large build.

Fix: delete the grey icon (see below), move to a stable Wi-Fi connection, open the install link in Safari and tap Install again. Links opened inside a chat app's own browser often do nothing at all, so copy the link into Safari. If the build is large, free some space first.

Cause 2: the iPhone is not in the provisioning profile

This is the case InstallOnAir's FAQ describes, and the most common one. Ad Hoc and Development builds install only on devices whose UDID was in the provisioning profile when the build was made. A new tester, a new phone, or a device added in the Apple Developer portal after the build was exported all lead here. iOS downloads the file, checks the profile, finds the phone missing, and refuses.

How to check:

  • The tester opens appforshare.io/udid on the iPhone. It takes about a minute, needs no account, and shows the UDID. Lookups are deleted after 1 day.
  • The developer opens the .ipa in the free IPA inspector. It reads the file in the browser, without uploading it, and lists every provisioned device with search. If the tester's UDID is not there, that is the answer.

Fix: register the device, make the profile again with it, build again and send the new build. There is no way to add a device to a build that already exists. The fix path is in more detail below.

Cause 3: the profile expired or the certificate was revoked

Ad Hoc and Development profiles have an expiry date, and a distribution certificate can be revoked, for example when someone on the team made a new one. A build that installed fine last month can fail today in the same way as a missing device.

How to check: the IPA inspector shows the profile's creation and expiry dates with days left, and the certificate names. In the Apple Developer portal, check that the certificate in the profile is still valid.

Fix: a new profile and a new build. If an enterprise certificate was revoked, apps already on phones stop opening too, so treat that one as urgent.

Cause 4: the phone cannot run this build

  • iOS too old. If the build needs a newer iOS than the phone has, the install fails. The IPA inspector shows the minimum iOS.
  • iPad only build on an iPhone. A build made only for iPad will not install on an iPhone. The inspector shows the device family.

Fix: update the phone, lower the deployment target if that is intended, or build for iPhone too.

Cause 5: the build is signed for the App Store

An archive exported for App Store Connect or TestFlight has no device list and cannot be installed from a link on any service. iOS accepts it only through the App Store or TestFlight. The IPA inspector shows the distribution type: Ad Hoc, Development, Enterprise, App Store or none.

Fix: export the same archive again with Ad Hoc ("Release Testing" in recent Xcode) or Development, or send that build through TestFlight. For more on which files can install from a link, see online IPA installer.

Check before you send the link

Most of these causes are visible in the build itself, so you can catch them before a tester sees a grey icon.

  • Read the build. The IPA inspector shows distribution type, profile expiry, minimum iOS, device family and the full UDID list.
  • Let the install page warn. AppForShare install pages, on every plan including guest uploads, show a note above Install when the phone's iOS is older than the build needs, the build is iPad only on an iPhone, the profile has expired, or the build is App Store signed or unsigned. See install help.
  • Let the tester's iPhone say if it is in the build. After a tester checks their UDID once and taps Remember this device, every AppForShare iOS install page tells them whether their iPhone is in this build, before they tap Install. The data stays in a signed cookie in that browser only. See iPhone device check.
  • Check from the command line. On Pro and Team, appforshare info prints the install issues of a build, including a profile that ends within 14 days and a build with no provisioned devices. The MCP server tool build_install_issues can also check one UDID.

None of this changes phone settings or fixes the build. It tells you, or the tester, what is wrong before time is wasted.

The fix path for the developer

  1. Get the tester's UDID from /udid.
  2. Register it in the Apple Developer portal under Devices. Apple allows 100 devices per device type per membership year, and disabled devices keep their slot until renewal.
  3. Make the Ad Hoc profile again so it includes the new device. Apple has no way to edit a profile in place; a new one is generated.
  4. Build again with the new profile and upload the new build.
  5. Send the tester the new link, or put the build into a channel they already have.

Our guide to iOS ad hoc device registration covers each step. On AppForShare you can shorten it:

  • Pro: with an App Store Connect connection, an Admin registers saved UDIDs on your Apple account from the Devices page, up to 20 at a time, and remakes the Ad Hoc profile with every enabled device. A device onboarding link lets testers send their iPhone to you, and they get one email with the install link when a build that includes it is uploaded. See iOS device registration.
  • Team: hands free device setup registers devices that come in through the onboarding link, remakes the active Ad Hoc profile when the build reads one, and starts your GitHub Actions iOS build when you have one set up.

AppForShare does not re-sign builds. The new build is always yours to make, on your machine or your own CI.

Remove the grey icon and try again

A grey icon left on the home screen can block the next attempt. Remove it first.

  1. Press and hold the grey icon.
  2. Tap Cancel Download if it is offered, or Remove App, then Delete App.
  3. If the icon will not go, open Settings, General, iPhone Storage, find the app and delete it there.
  4. Open the install link in Safari and tap Install again.

This fixes a stalled download. If the cause was a missing device, an expired profile or an App Store signed build, the same build fails again, and only a new build helps.

After it installs: Developer Mode and trust

Once the icon turns normal, two more prompts can stop the app from opening. Since iOS 16, Ad Hoc and Development builds need Developer Mode turned on once in Settings, Privacy and Security. Enterprise builds need the developer trusted once in Settings, General, VPN and Device Management. Both are covered step by step in iPhone "integrity could not be verified", which also explains that message in full.

Symptom, cause and fix

What the tester seesLikely causeFix
Ring stops, icon stays greyDownload stalledDelete the icon, use Wi-Fi and Safari, try again
Grey, then "Unable to install"iPhone not in the profileRegister the UDID, new profile, new build
Worked last month, fails nowProfile expired or certificate revokedNew profile, new build
Fails on one phone onlyiOS too old, iPad only build, or that UDID missingCheck minimum iOS, device family and UDID list
Fails on every phoneApp Store signed buildExport Ad Hoc or Development, or use TestFlight
Icon normal, app will not openDeveloper Mode off or enterprise developer not trustedTurn on Developer Mode or trust the developer

Common questions

Is a grey icon a problem with InstallOnAir, Diawi or AppForShare?

Almost never. All of them serve the file you uploaded, and iOS decides whether it installs. Moving to another service does not fix a missing device or an expired profile; a new build does.

Can the service add my tester's device to the build?

No service can change a signed build without re-signing it, and AppForShare does not re-sign. On Pro, AppForShare can register the device on your Apple account and remake the profile; you still build again.

Will the tester need to do anything when the new build is ready?

Delete the grey icon, open the new link in Safari and install. If you use a channel link, the same link opens the new build.

Why does the same link work for one tester and not another?

Because the profile lists specific devices. The first tester's iPhone is in it and the second one's is not. Check the second UDID against the build. If the link itself has expired, that is a different issue; see InstallOnAir link expired.

Keep reading

App Distribution Platform · · 9 min read

AppForShare.io vs Competitors - A Comparative Analysis

For small teams and startups, selecting a mobile app testing platform is a critical crossroad. This choice is more than a mere selection: it’s a strategic decision that directly impacts the...

App Distribution Platform · · 5 min read

AppForShare File Size and Upload Limits

AppForShare limits the size of each build you upload by plan: 50 MB without an account, 150 MB on the Free plan, 2 GB on Pro and 4 GB on Team. Accounts also have a storage total, and every plan...