{"id":28384157,"url":"https://github.com/plaid/react-native-plaid-link-sdk","last_synced_at":"2025-06-25T23:31:40.390Z","repository":{"id":36127522,"uuid":"219617822","full_name":"plaid/react-native-plaid-link-sdk","owner":"plaid","description":"Plaid Link for React Native","archived":false,"fork":false,"pushed_at":"2025-06-13T21:47:27.000Z","size":5207,"stargazers_count":184,"open_issues_count":8,"forks_count":123,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-06-13T22:35:43.157Z","etag":null,"topics":["plaid","plaid-link","react","react-native"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plaid.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-11-04T23:43:33.000Z","updated_at":"2025-06-13T21:46:25.000Z","dependencies_parsed_at":"2023-10-23T22:27:03.458Z","dependency_job_id":"bd44d45a-ea2b-499e-b2fb-e1954cb7dccc","html_url":"https://github.com/plaid/react-native-plaid-link-sdk","commit_stats":null,"previous_names":[],"tags_count":120,"template":false,"template_full_name":null,"purl":"pkg:github/plaid/react-native-plaid-link-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Freact-native-plaid-link-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Freact-native-plaid-link-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Freact-native-plaid-link-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Freact-native-plaid-link-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plaid","download_url":"https://codeload.github.com/plaid/react-native-plaid-link-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plaid%2Freact-native-plaid-link-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261972724,"owners_count":23238538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["plaid","plaid-link","react","react-native"],"created_at":"2025-05-30T07:38:54.192Z","updated_at":"2025-06-25T23:31:40.381Z","avatar_url":"https://github.com/plaid.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Plaid React Native SDK\n\n![version](https://img.shields.io/npm/v/react-native-plaid-link-sdk)\n[![License](https://img.shields.io/github/license/plaid/react-native-plaid-link-sdk)](https://github.com/plaid/react-native-plaid-link-sdk/blob/master/LICENSE)\n\nThe Plaid React Native SDK provides the client-side component that your users will interact with in order to link their accounts to Plaid and allow you access to their accounts via the Plaid API. \n\nFor more information about Plaid Link check out our\n[introduction documentation](https://plaid.com/docs/link/#introduction-to-link).\n\nPlaid currently supports two versions of the Plaid React Native SDK v10.x and v11.x. You can find v10 on the [master-v10](https://github.com/plaid/react-native-plaid-link-sdk/tree/master-v10) branch.\n\n## Features\n\nThe SDK provides:\n\n- A PlaidLink functional component.\n- A function to open Link.\n- A hook to handle [onEvent](https://plaid.com/docs/link/react-native/#onevent) callbacks.\n- A function to dismiss link on iOS.\n\n## Getting Started\n\nGet started with our 📝 [documentation](https://plaid.com/docs/link/react-native/) and the 📱[example project](https://github.com/plaid/react-native-plaid-link-sdk/blob/master/example/README.md), or ↔️ [Tiny Quickstart (React Native)](https://github.com/plaid/tiny-quickstart/tree/main/react_native) which is an end to end example demonstrating a minimal integration with this SDK.\n\nIf you're unfamiliar with React Native we recommend starting with the [environment setup instructions](https://reactnative.dev/docs/environment-setup).\n\nIn your React Native project directory:\n\n```sh\nnpm install --save react-native-plaid-link-sdk\n```\n\n### iOS Setup\n\nAutolinking should install the CocoaPods dependencies for iOS project. If it fails you can run \n\n```sh\ncd ios \u0026\u0026 bundle install \u0026\u0026 bundle exec pod install\n```\n\n### Android Setup\n\n- Android 5.0 (API level 21) and above.\n  - Your `compileSdkVersion` must be `33`.\n- Android gradle plugin `4.x` and above.\n\nAutoLinking should handle all of the Android setup. \n\nRemember to register your Android package name in the [Dashboard](https://dashboard.plaid.com/developers/api). This is required in order to connect to OAuth institutions (which includes most major banks).\n\n### React Native Setup\n\n- To initialize `PlaidLink`, you will need to first create a `link_token` at [/link/token/create](https://plaid.com/docs/api/link/#linktokencreate). Check out our [QuickStart guide](https://plaid.com/docs/quickstart/#introduction) for additional API information.\n\n#### Version \u003e= 11.6.0\n\nStarting from version `11.6.0`, we introduced the ability to preload part of the Link experience. You can initiate the preloading process by invoking the `create` function.\n\n```typescript\nfunction createLinkTokenConfiguration(\n  token: string,\n  noLoadingState: boolean = false,\n): LinkTokenConfiguration {\n  return {\n    token: token,\n    // Hides native activity indicator if true.\n    noLoadingState: noLoadingState,\n  };\n}\n\nconst tokenConfiguration = createLinkTokenConfiguration(\"#GENERATED_LINK_TOKEN#\");\ncreate(tokenConfiguration);\n``` \n\nAfter calling `create`, you can subsequently invoke the `open` function. Note that maximizing the delay between these two calls will reduce latency for your users by allowing Link more time to load.\n\n```typescript\nfunction createLinkOpenProps(): LinkOpenProps {\n  return {\n    onSuccess: (success: LinkSuccess) =\u003e {\n      // User was able to successfully link their account.\n      console.log('Success: ', success);\n    },\n    onExit: (linkExit: LinkExit) =\u003e {\n      // User exited Link session. There may or may not be an error depending on what occured.\n      console.log('Exit: ', linkExit);\n      dismissLink();\n    },\n    // MODAL or FULL_SCREEEN presentation on iOS. Defaults to MODAL.\n    iOSPresentationStyle: LinkIOSPresentationStyle.MODAL,\n    logLevel: LinkLogLevel.ERROR,\n  };\n}\n\nconst openProps = createLinkOpenProps();\nopen(openProps);\n```\n\n#### Version \u003c 11.6.0\n\nIn versions prior to `11.6.0`, you can open a link by calling the `openLink` function.\n\n```typescript\n// Create PlaidLinkProps from the provided token string.\nfunction makeLinkTokenProps(token: string): PlaidLinkProps {\n  return {\n    tokenConfig: {\n      token: token,\n      logLevel: LinkLogLevel.ERROR,\n      // Hides native activity indicator if true.\n      noLoadingState: false, \n    },\n    onSuccess: (success: LinkSuccess) =\u003e {\n      // User was able to successfully link their account.\n      console.log('Success: ', success); \n      success.metadata.accounts.forEach(it =\u003e console.log('accounts', it));\n    },\n    onExit: (linkExit: LinkExit) =\u003e {\n      // User exited Link session. There may or may not be an error depending on what occured.\n      console.log('Exit: ', linkExit);\n      dismissLink();\n    },\n    // MODAL or FULL_SCREEEN presentation on iOS. Defaults to MODAL.\n    iOSPresentationStyle: LinkIOSPresentationStyle.MODAL,\n  };\n}\n\nconst linkTokenProps = makeLinkTokenProps(\"#GENERATED_LINK_TOKEN#\");\nopenLink(linkTokenProps);\n```\n\n#### OAuth requirements\n\n:warning: All integrations must use version 9.0.0 or later of the React Native SDK (requires version 4.1.0 or later of the iOS LinkKit SDK) to maintain support for Chase OAuth on iOS. \n\n##### Android OAuth Requirements\n\n###### Register your app package name\n1. Log into your [Plaid Dashboard](https://dashboard.plaid.com/developers/api) and navigate to the API page under the Developers tab.\n2. Next to Allowed Android package names click \"Configure\" then \"Add New Android Package Name\".\n3. Enter your package name, for example `com.plaid.example`.\n4. Click \"Save Changes\", you may be prompted to re-enter your password.\n\n##### iOS OAuth Requirements\n\nFor iOS OAuth to work, specific requirements must be met.\n1. Redirect URIs must be [registered](https://plaid.com/docs/link/ios/#register-your-redirect-uri), and set up as [universal links](https://developer.apple.com/documentation/xcode/supporting-associated-domains).\n2. Your native iOS application, must be configured with your associated domain. See your iOS [set up universal links](https://plaid.com/docs/link/ios/#set-up-universal-links) for more information.\n\n\n##### Link Token OAuth Requirements\n\n- On iOS you must configure your `link_token` with a [redirect_uri](https://plaid.com/docs/api/tokens/#link-token-create-request-redirect-uri) to support OAuth. When creating a `link_token` for initializing Link on Android, `android_package_name` must be specified and `redirect_uri` must be left blank.\n\n- On Android you must configure your `link_token` with an [android_package_name](https://plaid.com/docs/api/tokens/#link-token-create-request-android-package-name) to support OAuth. When creating a `link_token` for initializing Link on iOS, `android_package_name` must be left blank and `redirect_uri` should be used instead.\n\n\n#### To receive onEvent callbacks:\n\nThe React Native Plaid module emits `onEvent` events throughout the account linking process — see [details here](https://plaid.com/docs/link/react-native/#onevent). To receive these events in your React Native app, use the `usePlaidEmitter` hook in react functional components:\n\n```javascript\n  usePlaidEmitter((event: LinkEvent) =\u003e {\n    console.log(event)\n  })\n```\n\n#### Clearing Previous Session State with `destroy()`\n\nThe `destroy()` method clears state and resources from a previously opened session.  \nIt's especially useful if you're seeing unexpected behavior when calling `create()` multiple times — for example, if the phone number isn't submitting properly after multiple `create()` calls.\n\n#### Problem scenario:\n```ts\ncreate(tokenConfiguration1)\ncreate(tokenConfiguration2)\nsubmit(phoneNumber) // \u003c-- might not submit correctly\n```\n\n#### Solution:\n```ts\ncreate(tokenConfiguration1)\nasync () =\u003e {\n  try {\n    await destroy(); // Clear previous session state\n    create(tokenConfiguration2);\n    submit(phoneNumber);\n  } catch (e) {\n    console.error('Error during flow:', e);\n  }\n}\n```\n\nBy calling destroy() before the second create(), you ensure a clean state, preventing issues like failed phone number submissions.\n\n## Upgrading\n\nPlaid releases updates to the SDK approximately every few months. For the best user experience, we recommend using the latest version of the SDK.\n\nMajor SDK versions are released annually. SDK versions are supported for two years; with each major SDK release, Plaid will stop officially supporting any previous SDK versions that are more than two years old. \n\nWhile these older versions are expected to continue to work without disruption, Plaid will not provide assistance with unsupported SDK versions. \n\n## Version compatibility\n\n| Plaid SDK Version | Min React Native Version | Android SDK | Android Min Version | Android Compile Version| iOS SDK | iOS Min Version | Status                        |\n|-------------------|--------------------------|-------------|---------------------|------------------------|---------|-----------------|-------------------------------|\n| 12.2.1            | *                        | [5.1.1+]    | 21                  | 34                     | \u003e=6.2.1 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.2.0            | *                        | [5.1.1+]    | 21                  | 34                     | \u003e=6.2.1 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.1.1            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.1.0 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.1.0            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.1.0 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.0.3            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.0.4 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.0.2            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.0.2 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.0.1            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.0.2 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.0.0            | *                        | [5.0.0+]    | 21                  | 34                     | \u003e=6.0.0 |  14.0           | Active, supports Xcode 16.1.0 |\n| 12.0.0-beta.3     | *                        | [4.4.0+]    | 21                  | 34                     | \u003e=6.0.0 |  14.0           | Active, supports Xcode 15.3.0 |\n| 12.0.0-beta.2     | *                        | [4.4.0+]    | 21                  | 34                     | \u003e=6.0.0 |  14.0           | Active, supports Xcode 15.3.0 |\n| 12.0.0-beta.1     | *                        | [4.4.0+]    | 21                  | 34                     | \u003e=6.0.0 |  14.0           | **Deprecated**                |\n| 11.13.3           | *                        | [4.6.1+]    | 21                  | 34                     | \u003e=5.6.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.13.2           | *                        | [4.6.1+]    | 21                  | 34                     | \u003e=5.6.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.13.1           | *                        | [4.6.1+]    | 21                  | 34                     | \u003e=5.6.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.13.0           | *                        | [4.6.1+]    | 21                  | 34                     | \u003e=5.6.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.12.1           | *                        | [4.6.0+]    | 21                  | 34                     | \u003e=5.6.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.12.0           | *                        | [4.6.0+]    | 21                  | 34                     | \u003e=5.6.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.11.2           | *                        | [4.5.1+]    | 21                  | 34                     | \u003e=5.6.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.11.1           | *                        | [4.5.1+]    | 21                  | 34                     | \u003e=5.6.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.11.0           | *                        | [4.5.0+]    | 21                  | 34                     | \u003e=5.6.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.10.3           | *                        | [4.4.2+]    | 21                  | 34                     | \u003e=5.5.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.10.2           | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.5.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.10.1           | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.5.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.10.0           | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.5.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.9.0            | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.5.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.8.2            | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.4.2 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.8.1            | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.4.2 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.8.0            | *                        | [4.3.1+]    | 21                  | 34                     | \u003e=5.4.2 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.7.1            | *                        | [4.3.0+]    | 21                  | 34                     | \u003e=5.4.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.7.0            | *                        | [4.3.0+]    | 21                  | 34                     | \u003e=5.4.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.6.0            | *                        | [4.2.0+]    | 21                  | 34                     | \u003e=5.3.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.5.2            | *                        | [4.1.1+]    | 21                  | 34                     | \u003e=5.2.1 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.5.1            | *                        | [4.1.1+]    | 21                  | 34                     | \u003e=5.2.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.5.0            | *                        | [4.1.1+]    | 21                  | 34                     | \u003e=5.2.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.4.0            | *                        | [4.1.1+]    | 21                  | 34                     | \u003e=5.1.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.3.0            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.1.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| ~11.2.0~          | *                        | [4.1.0+]    | 21                  | 34                     | \u003e=5.1.0 |  14.0           | **Deprecated**                |\n| 11.1.0            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.1.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.0.3            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.0.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.0.2            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.0.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.0.1            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.0.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 11.0.0            | *                        | [4.0.0+]    | 21                  | 34                     | \u003e=5.0.0 |  14.0           | Active, supports Xcode 15.0.1 |\n| 10.13.0           | \u003e= 0.66.0                | [3.14.3+]   | 21                  | 33                     | \u003e=4.7.2 |  11.0           | Active, supports Xcode 14     |\n| 10.12.0           | \u003e= 0.66.0                | [3.14.3+]   | 21                  | 33                     | \u003e=4.7.1 |  11.0           | Active, supports Xcode 14     |\n| 10.11.0           | \u003e= 0.66.0                | [3.14.1+]   | 21                  | 33                     | \u003e=4.7.1 |  11.0           | Active, supports Xcode 14     |\n| ~10.10.0~         | \u003e= 0.66.0                | [3.14.2+]   | 21                  | 33                     | \u003e=4.7.1 |  11.0           | **Deprecated**                |\n| 10.9.1            | \u003e= 0.66.0                | [3.14.1+]   | 21                  | 33                     | \u003e=4.7.0 |  11.0           | Active, supports Xcode 14     |\n| 10.9.0            | \u003e= 0.66.0                | [3.14.1+]   | 21                  | 33                     | \u003e=4.7.0 |  11.0           | Active, supports Xcode 14     |\n| 10.8.0            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.7.0 |  11.0           | Active, supports Xcode 14     |\n| 10.7.0            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.6.4 |  11.0           | Active, supports Xcode 14     |\n| 10.6.4            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.6.4 |  11.0           | Active, supports Xcode 14     |\n| 10.6.3            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.6.4 |  11.0           | Active, supports Xcode 14     |\n| 10.6.2            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.6.4 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.6.0            | \u003e= 0.66.0                | [3.14.0+]   | 21                  | 33                     | \u003e=4.6.4 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.5.0            | \u003e= 0.66.0                | [3.13.2+]   | 21                  | 33                     | \u003e=4.5.1 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.4.0            | \u003e= 0.66.0                | [3.13.2+]   | 21                  | 33                     | \u003e=4.4.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.3.0            | \u003e= 0.66.0                | [3.12.1+]   | 21                  | 33                     | \u003e=4.3.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.2.0            | \u003e= 0.66.0                | [3.12.0+]   | 21                  | 33                     | \u003e=4.3.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.1.0            | \u003e= 0.66.0                | [3.11.0+]   | 21                  | 33                     | \u003e=4.2.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 10.0.0            | \u003e= 0.66.0                | [3.10.1+]   | 21                  | 33                     | \u003e=4.1.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 9.1.0             | \u003e= 0.65.3                | [3.13.2+]   | 21                  | 33                     | \u003e=4.4.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 9.0.1             | \u003e= 0.65.3                | [3.10.1+]   | 21                  | 33                     | \u003e=4.1.0 |  11.0           | Deprecated, supports Xcode 14 |\n| 9.0.0             | \u003e= 0.65.3                | [3.10.1+]   | 21                  | 33                     | \u003e=4.1.0 |  11.0           | Deprecated, supports Xcode 14 |\n\n\n## Contributing\n\nSee the [contributor guidelines](CONTRIBUTING.md) to learn how to contribute to the repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaid%2Freact-native-plaid-link-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplaid%2Freact-native-plaid-link-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaid%2Freact-native-plaid-link-sdk/lists"}