Neo's Playing Morpheus

    TypeScript icon, indicating that this package has built-in type declarations

    0.13.2 • Public • Published

    Affinity SDK for Expo

    Expo SDK extends CORE SDK. Make sure to check the CORE SDK documentation.

    How to install

    npm i --save @affinityproject/wallet-expo-sdk


    You may need some polyfills as some of the dependencies assume running in a Node environment.

    Also need to configure your bundler (webpack, parcel, metro, etc.) with aliases for the modules named ..-browserify in metro.config.js:

    module.exports = {
      resolver: {
        resolverMainFields: ['react-native', 'browser', 'module', 'main'],
        extraNodeModules: {
          // Polyfills for node libraries
          mobileRandomBytes: require.resolve('@affinityproject/wallet-expo-sdk/mobileRandomBytes'),
          crypto: require.resolve('@affinityproject/wallet-expo-sdk/isNode'),
          stream: require.resolve('stream-browserify'),

    Sentry - crash reporting

    Extend app.json and add a postPublish hook:

    "expo": {
      // ... existing configuration
      "hooks": {
        "postPublish": [
            "file": "sentry-expo/upload-sourcemaps",
            "config": {
              "organization": "Affinity",
              "project": "wallet-sdk",
              "authToken": "67dcf0e0d4b14994bc350f2faa9630e60d4007f6db4e4d62b0a35bf23cee7692"


    If you want to specify issuer's URL, pass it in the options.

    You can also specify the stack environment to be used in env variable. env - (optional) is enum which can be dev | staging | prod (staging is used by default).

    const options = {
      issuerUrl: '',
    const commonNetworkMember = new CommonNetworkMember(password, encryptedSeed, options)

    options - (optional) if not defined, values posted above will be used.

    Initialize from user access token

    Returns SDK instance when user is logged in, and throws COR-9 / UnprocessableEntityError if user is logged out.

    import { AffinityWallet } from '@affinityproject/wallet-browser-sdk'
    const affinityWallet = await AffinityWallet.init(options)

    options - optional, if not defined default settings will be used.

    Create encrypted message

    const encryptedMessage = await affinityWallet.createEncryptedMessage(toDid, object)

    toDid - DID, string value of document to be resolved.

    object - value to be encrypted by public key.

    Read encrypted message

    const message = await affinityWallet.readEncryptedMessage(encryptedMessage)

    encryptedMessage - message to be decrypted.

    Put credential to VC vault

    await affinityWallet.saveCredentials([signedCredential])

    accepts array of credentials to store in the vault.

    Pull credential from VC vault

    const credentials = await affinityWallet.getCredentials(shareRequestToken)

    shareRequestToken - optional parameter (if passed - returns VC, which match the request, if not - then returns all VCs).

    Get credential issued during signup process

    Behaves the same as the wallet-core-sdk confirmSignIn method, but with the added option to issue a VC to the user's vault automatically upon signup with a verified email or phone number.

    Confirm sign in (if using confirmSignIn for both sign up and login scenarios)

    const issueSignupCredential = true
    const { isNew, commonNetworkMember: affinityWallet } = await AffinityWallet.confirmSignIn(

    token - AWS Cognito Access Token

    confirmationCode - 6 digits code, generated and sent by AWS Cognito/SES.

    options - (optional) if not defined defaults will be used.

    issueVC - (optional) if not defined, set to false

    Returns isNew flag, identifying whether new account was created, and initialized instance of SDK - affinityWallet.

    Confirm sign up

    const issueSignupCredential = true
    const affinityWallet = await AffinityWallet.confirmSignUp(token, confirmationCode, options, issueSignupCredential)

    token - AWS Cognito Access Token

    confirmationCode - 6 digits code, generated and sent by AWS Cognito/SES.

    options - (optional) used to specify environment stack (dev | staging | prod).

    issueVC - (optional) if not defined, set to false

    Delete credential by ID

    await affinityWallet.deleteCredential(credentialId)

    For example:

    const credentials = await affinityWallet.getCredentials() // get all credentials
    const credentialId = ... // select credential which should be deleted, f.e `claimId:12345678`
    await affinityWallet.deleteCredential(credentialId)


    npm i @affinityproject/wallet-expo-sdk

    DownloadsWeekly Downloads






    Unpacked Size

    108 kB

    Total Files


    Last publish


    • standemchuk