Skip to main content
The manual source runs after the platform sources: at priority -10 it sits below the redirect (20) and the Web NFC scanner (0), so an explicit value is a last resort, taken only when nothing else could capture. It is not part of defaultTapSources(); register it yourself with client.registerTapSource(...) or include it in the tapSources config option. The provider returns whatever your interface has: a tap URL, an already identified TapInput, or a nullish value (or empty string) when there is nothing to submit. A string is validated through the same core parser as every other source, and an already identified tap is normalized through it too, so this source cannot emit values another source would have rejected or cased differently. An invalid URL throws the core ChipUrlError, so form validation can branch on it.

Example

Return an already identified tap when your interface parsed one itself:

Parameters

ManualTapProvider
required
Supplies the tap value. Called with the TapCaptureOptions from captureTap() (its signal is honored: an aborted capture throws the signal’s reason). Return a tap URL string, a TapInput, or a nullish value or empty string for “nothing to submit”. May be sync or async.

Returns

object
required
A source named manual with priority MANUAL_TAP_SOURCE_PRIORITY (-10). Its isAvailable() is always true; capture() runs the provider and returns the validated TapResult, or null when the provider yields nothing.
number
required
The source’s priority, -10. Exported for interfaces that order or compare sources themselves.