Why must an NFC app be launched manually on iPhone?
Because an application cannot start itself from a tag. On iOS, reading is initiated by the application asking the system for a session, and an application that is not running cannot ask. Background reading is a system capability, not an application one.
The application asks, not the tag
On Android, a tag arriving can cause the system to start an application. The tag is, in effect, the trigger.
On iOS the direction is reversed. The application asks the system to look for a tag, and the system does so while that request is active. Nothing about a tag reaches an application that has not asked.
An application that is not running has made no such request, so a tag presented to the phone has nothing to arrive at.
Take NFC Tools. On iOS it requires an iPhone 7 or later running iOS 15.6 or later, and the app must be launched manually. Background reading is available from the iPhone XS and XR onwards.
What background reading actually is
The exception is the system reading a tag on its own, without any application involved.
Even then it is the system doing the reading, and the result is offered to you as a notification rather than handed to an application that was waiting. Background reading is available from the iPhone XS and XR onwards.
So there are two paths and neither of them is an application waking up because of a tag. One is an application asking, and one is the system noticing.
Why this is constantly misread
Because the Android behaviour is what most people have seen described, and it looks like the general case rather than one platform's choice.
Because the phrase background reading suggests applications running in the background, which is not what it means.
And because a phone that does nothing gives no explanation. A visitor with an older supported iPhone taps, gets silence, and reasonably concludes the tag is broken.
Stating the requirement plainly on the tag is worth more than any amount of documentation nobody will read.
Designing around it
Assume the tap is deliberate and the phone is awake. That assumption holds on both platforms and removes most of the divergence.
Write a web address, which is what the system offers in a notification and what needs no application at all.
Print an instruction where members of the public are involved. A few words remove the silence that people interpret as a fault.
And never build a flow that requires an application to open by itself on iOS. It is not a gap that a future version fills, it is how the platform works.
Frequently asked questions
Can an app open automatically when I tap a tag on iPhone?
No. An application cannot start itself from a tag, because reading is initiated by the application rather than by the tag.
Then what is background reading?
The system noticing a tag on its own and offering the result as a notification. It is available from the iPhone XS and XR onwards.
Does Android work the same way?
No. On Android a tag can cause the system to start an application, which is the behaviour people expect and iOS does not provide.
Will an update change this?
It is a design rather than an omission, so it is not something to plan around expecting.