I’m building an in-person ProximityReader ID Verifier Display Only flow for venue age checks.
Right now on iOS 26, we use a single MobileDocumentDisplayRequest with allowedDocumentTypes: [.photoID, .driversLicense] and only request ageAtLeast(21).
For reliability and broad credential support, is that the recommended request shape for both Passport-derived Photo ID and mobile driver’s license / State ID? Or should apps implement separate request paths when they want to support both document families?
Trying to optimize for the most predictable Wallet behavior. Thank you!
A single request listing both document types is the recommended shape for what you're doing, and you don't need separate request paths.
Photo ID (Passport-derived, ISO 23220-1) and mobile driver's license / State ID (ISO 18013-5) are distinct credential families, but the API is explicitly designed so a relying party can express "any of these document types satisfies my request" in one request via allowedDocumentTypes. The system then resolves to whichever credential the user holds and presents that — so listing [.photoID, .driversLicense] maximizes the population you can serve without branching your code.
Since you're only requesting an age-over-21 attestation, a combined request is ideal: that element is broadly supported across both families, and when an issuer hasn't pre-computed the age-over-N flag, the request automatically falls back to a standard age request. There's nothing document-family-specific in your ask that would justify separate paths.
You'd only want separate request paths if you needed elements that are specific to one family (e.g. driving privileges, which only exist on an mDL) or if you wanted different requested elements / data-retention intent per document type. For a single common element like age verification, keep it as one combined request.