chore(react-native-mdocs-holder-tutorial): update for Holder SDK 10.0.0 - #321
Merged
Merged
Conversation
Moves both the starter and complete projects from the End of Life 8.x line to 10.0.0, and updates the complete project for the breaking changes: - OfferedCredential.doctype is now docType. - getCredentials and deleteCredential return a Result, so unwrap them. The previous deleteCredential handler reported failures as successes because expected errors are returned rather than thrown. - Credential retrieval results are discriminated on isSuccess, so narrow each item instead of reporting the array length as successes. - UserAuthenticationType.BiometricOrPasscode becomes UserPresence. - claims on an offered credential is optional. The lockfiles are deliberately untouched. They must be regenerated once 10.0.0 is published, which is also when this can first be typechecked.
dylan-paul
approved these changes
Aug 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the React Native mDocs Holder tutorial sample app for Holder SDK 10.0.0, shipping 2026-08-14.
Both projects were pinned to
^8.1.1(resolving to 8.1.2). v8 reached End of Life on 2026-06-23, so this skips the v9 line and moves straight to^10.0.0.The MATTR Learn quickstart and credential-claiming tutorial send readers to these projects and instruct them to run
yarn install, so the pin here is what a reader actually gets.Changes
react-native-mdocs-holder-tutorial-starterneeded only the version bump. Its SDK surface is a single type-only import, and the tutorial code is what the reader writes.react-native-mdocs-holder-tutorial-complete:OfferedCredential.doctypeis nowdocType(app/claim-credential.tsx). Two sites: the React key and the rendered "Document Type" text. Both would have becomeundefined.getCredentialsanddeleteCredentialnow return aResult(providers/HolderProvider.tsx).getCredentialswas being passed straight into a state setter typed as an array. ThedeleteCredentialhandler was wrapped intry/catchand always reported "Success": expected failures are now returned rather than thrown, so that catch was dead code for them and deletions could fail silently. Both were already wrong at v9.isSuccess(app/claim-credential.tsx). The code reportedretrieved.value.lengthas the success count, so a credential that failed to retrieve was announced as retrieved. Now narrows each item and reports successes and failures separately.UserAuthenticationType.BiometricOrPasscodeis replaced byUserPresence, which is also the new default.claimson an offered credential is now optional, so the claim count renders0rather than blank when absent.Deliberately not changed
platformConfiguration/ SDK Backend. It is optional in 10.0.0, and enabling it would require a quickstart reader to own a MATTR VII tenant and two Holder Applications. The Learn quickstart links the SDK Backend guide as a next step instead.biome formatwas not run. These projects are tab-indented at roughly 80 columns whilebiome.jsonspecifies 2-space at 120, so formatting them would rewrite whole files. Each edit matches its file's existing style.biome lintpasses on both changed files.This diff is not typechecked
10.0.0 is not yet published to npm, so
yarn installcannot resolve it and neither project hasnode_modules. Every change was made by reading the real 10.0.0 signatures injs-credential-sdkatorigin/am/rn-holder-10.0.0-changelog, but nothing was compiled or run.Once 10.0.0 is on npm, per project:
Please treat
tsc --noEmitpassing as the merge condition, and do not merge before the release lands.One thing worth confirming
withAndroidHolderSDK.jsreferencesglobal.mattr.mobilecredential.common.webcallback.WebCallbackActivity. The v9 note about the package path moving from...commonto...holdermade this look like a break, but three sources agree the class FQN is unchanged: the native SDK source defines it undercommon/, the SDK's ownAndroidManifest.xmldeclares the.commonname, and the RN SDK's public README still documents it. Left as-is. Worth a one-line confirmation from the Android SDK team, because the internal Wallet app's manifests use a.holder.webcallbackname that does not exist in the SDK source. If the class did move, Android credential claiming breaks here.Related: mattrinternal/mattr-learn#1261 (the Learn changelog and docs for this release).