Skip to content
Language: EN

Why does an iPhone show a scan sheet when an app reads a tag?

Because the system runs the reading rather than the application. The sheet is the system taking over the interaction for a bounded period, which is what explains the timeout, the standard wording, and why an application cannot read quietly in the background.

Who is doing the reading

The application asks for a reading session. The system accepts, presents its own interface, performs the interaction with the tag, and hands the result back.

Apple documents the framework behind this as Core NFC.

The consequence is that the sheet is not the application's own screen. It belongs to the system, which is why it looks the same across different applications and why its wording is not something a developer chose.

It is bounded in time

A session is a period during which the system is looking for tags. It ends when the application closes it, which it may do as soon as the first tag is read, when the user cancels it, or when it times out.

That is why a scan sheet left open eventually gives up rather than waiting indefinitely, which surprises people who expect it to stay ready.

Within that period, one session can read tag after tag if the application keeps it open. What slows a series down is starting sessions: once per tag when the application closes the session after each read, and again whenever an open session times out. That is why applications that read many tags feel different on iOS than on Android.

What this explains

Why an application cannot read a tag silently. There is no quiet path, since the system always presents itself.

Why an application cannot read in the background. A session belongs to an application in use, and there is nothing to present a sheet to otherwise.

Why writing needs the phone in your hand. The same session model applies, with the application supplying content during a system managed interaction.

And why the phrase manual launch keeps appearing: an application that is not open has not asked for a session, so nothing is looking for tags on its behalf.

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.

Using it well

Expect the sheet and let people expect it too. In a workflow where someone reads many tags, the rhythm depends on the application: start once and tap tag after tag if it keeps the session open, starting a new session when it times out, or start, tap, dismiss, repeat if it closes the session after each tag.

Hold the phone still during the session rather than tapping repeatedly, since the system is already looking and movement is what interrupts it.

For production runs, this is a reason to prefer Android as the encoding device: the interaction is lighter per tag, which adds up over hundreds.

And for a public deployment none of this applies, because visitors will use the background path or nothing at all.

Frequently asked questions

Can an app read without showing the sheet?

No. The system performs the interaction and presents its own interface, so there is no quiet path for an application.

Why does the sheet time out?

A session is bounded, ending when the application closes it, when the user cancels it, or after a period. It is not designed to wait indefinitely.

Why does reading many tags feel slow on iPhone?

Because each session has to be started from the application, and none lasts indefinitely. One session can read several tags if the application keeps it open, but it still times out during a long series, and an application that closes it after each tag starts a new one for every tag. Across a batch, that adds up.

Does the same apply to writing?

Yes. Writing uses the same session model, which is why the phone has to be in your hand with the application open.