You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[1.0.19] - 2026-07-02
⚠️ Behavior changes for integrators
prepare() no longer auto-links the Tap to Pay account. Previously prepare() (which also runs from the didBecomeActive observer) silently
presented the Apple account-linking sheet when the device wasn't linked. If
the merchant declined, it threw and got re-presented on every app activation —
an endless link prompt. prepare() now throws the new KoardMerchantSDKError.accountNotLinked instead of auto-linking. Guard for it
and drive linking explicitly via the public linkAccount() API (this restores
merchant-side control over how and when linking is presented). The background
prepare retry loop treats not-linked as terminal and no longer retries it.
Added
KoardMerchantSDKError.accountNotLinked — thrown by prepare() when the
device isn't linked to the merchant's Tap to Pay account, so callers can guard
it and explicitly call linkAccount() instead of the SDK silently presenting
the Apple linking sheet.
Fixed
Endless Tap to Pay account-linking prompt after a decline. A merchant who
declined the Apple account-linking sheet was re-prompted on every app
activation, because prepare() (run from didBecomeActive) auto-linked and
the retry loop re-presented the sheet. prepare() now surfaces accountNotLinked and leaves linking to the explicit linkAccount() call
(see Behavior changes), breaking the loop.
Reader stuck reporting .preparing on an unlinked account.prepare()
set the reader status to .preparing before the linked-account check; when the
account wasn't linked it threw without clearing the status, so callers polling status saw .preparing forever (the UI showed "preparing card reader"
indefinitely). The status is now reset to .notReady before the accountNotLinked error is thrown.