The exit
The current Blink app labels the wallet non-custodial while never starting the SDK's exit flows
Blink's current UI calls the account non-custodial, says only the user can access funds, and presents the seed as recovery. The same source says unilateral-exit conflicts belong to flows the app never starts, leaving outage availability operationally dependent on external services. 123
What the evidence shows
Technical and product details
- Product claim
Blink's current UI labels the account “Non-custodial,” says “Only you can access funds,” and presents the twelve-word phrase as the wallet recovery backup. 1
Supporting material shown on this page
Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 4162 modalDescription: 4163 "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.", 4164 backupNow: "Back up wallet", 4165 }, 4166 NonCustodialInfoBulletin: { 4167 title: "This is a non-custodial account", 4168 body: "To learn more read our blog post", - Implementation fact
The same current source pins Breez 0.22.0 and says unilateral-exit state conflicts belong to “flows the app never starts.” No complete exit interface was found in the reviewed app source. 23
Supporting material shown on this page
Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 33 [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic, 34 [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic, 35 [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic, 36 /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts, 37 * so no user-facing refinement exists for them. */ 38 [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic, 39 [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic,Blink Breez 0.22 dependencyPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 61 "dependencies": { 62 "@apollo/client": "^3.9.11", 63 "@bitcoinerlab/secp256k1": "^1.1.1", 64 "@blinkbitcoin/blink-client": "1.1.0", 65 "@blinkbitcoin/react-native-geetest-module": "0.1.2", 66 "@breeztech/breez-sdk-spark-react-native": "0.22.0", 67 "@expo/react-native-action-sheet": "^4.0.1", - Failure-case consequence
During total operator refusal or outage, an ordinary Blink user with only the advertised app and seed cannot perform the independent exit the custody claim implies. 12
Supporting material shown on this page
Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 4162 modalDescription: 4163 "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.", 4164 backupNow: "Back up wallet", 4165 }, 4166 NonCustodialInfoBulletin: { 4167 title: "This is a non-custodial account", 4168 body: "To learn more read our blog post",Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 33 [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic, 34 [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic, 35 [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic, 36 /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts, 37 * so no user-facing refinement exists for them. */ 38 [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic, 39 [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic, - Custody conclusion
The app may preserve user signing authority, but it does not give the mobile user independent availability or recovery. In that failure case, control is operationally custodial: access remains contingent on services the user does not control. 12
Supporting material shown on this page
Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 4162 modalDescription: 4163 "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.", 4164 backupNow: "Back up wallet", 4165 }, 4166 NonCustodialInfoBulletin: { 4167 title: "This is a non-custodial account", 4168 body: "To learn more read our blog post",Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 33 [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic, 34 [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic, 35 [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic, 36 /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts, 37 * so no user-facing refinement exists for them. */ 38 [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic, 39 [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic,
Scope control
What this does not establish
Sources and excerpts
Primary sources
The relevant details and available source-code excerpts appear alongside the claims above. This list preserves the complete original-source trail for independent verification.
Blink custody and recovery language
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
Blink unstarted exit flows
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
Blink Breez 0.22 dependency
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
How sources, absence findings, and limitations were evaluated