diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a1fb085..b86bc0de 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,51 @@
# RELEASES
+## LinkKit V11.11.0 — 2024-06-26
+
+### React Native
+
+#### Requirements
+
+This SDK now works with any supported version of React Native.
+
+#### Changes
+
+- Update Android SDK to 4.5.0.
+- Update iOS SDK to 5.6.0.
+- Add submit API.
+
+### Android
+
+Android SDK [4.5.0](https://github.com/plaid/plaid-link-android/releases/tag/v4.5.0)
+
+#### Changes
+- Add PROFILE_DATA_REVIEW event view name.
+- Add LAYER_READY and LAYER_NOT_AVAILABLE event names.
+- Add submit API to the LinkHandler.
+
+#### Requirements
+
+| Name | Version |
+|------|---------|
+| Android Studio | 4.0+ |
+| Kotlin | 1.8+ |
+
+### iOS
+
+iOS SDK [5.6.0](https://github.com/plaid/plaid-link-ios/releases/tag/5.6.0)
+
+#### Changes
+
+- Add submit API for Layer.
+- Improved Remember Me Experience
+
+#### Requirements
+
+| Name | Version |
+|------|---------|
+| Xcode | >= 15.0.1 |
+| iOS | >= 14.0 |
+
## LinkKit V11.10.3 — 2024-06-04
### React Native
diff --git a/README.md b/README.md
index 1e30e8d5..e2ef85ad 100644
--- a/README.md
+++ b/README.md
@@ -179,6 +179,7 @@ While these older versions are expected to continue to work without disruption,
| Plaid SDK Version | Min React Native Version | Android SDK | Android Min Version | Android Compile Version| iOS SDK | iOS Min Version | Status |
|-------------------|--------------------------|-------------|---------------------|------------------------|---------|-----------------|-------------------------------|
+| 11.11.0 | * | [4.5.0+] | 21 | 34 | >=5.6.0 | 14.0 | Active, supports Xcode 15.0.1 |
| 11.10.3 | * | [4.4.2+] | 21 | 34 | >=5.5.1 | 14.0 | Active, supports Xcode 15.0.1 |
| 11.10.2 | * | [4.3.1+] | 21 | 34 | >=5.5.1 | 14.0 | Active, supports Xcode 15.0.1 |
| 11.10.1 | * | [4.3.1+] | 21 | 34 | >=5.5.0 | 14.0 | Active, supports Xcode 15.0.1 |
diff --git a/android/build.gradle b/android/build.gradle
index 9a6b1941..ab17788e 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -63,7 +63,7 @@ android {
compileSdkVersion 31
defaultConfig {
- minSdkVersion rootProject.ext.safeExtGet("minSdkVersion", 21)
+ minSdkVersion rootProject.ext.has("minSdkVersion") ? rootProject.ext.minSdkVersion : 21
targetSdkVersion 31
versionCode 1
versionName "0.0.1"
@@ -106,7 +106,7 @@ repositories {
dependencies {
implementation "com.facebook.react:react-native:+"
- implementation "com.plaid.link:sdk-core:4.4.2"
+ implementation "com.plaid.link:sdk-core:4.5.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "com.jakewharton.rxrelay2:rxrelay:2.1.1"
}
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 8cd8031f..48f30d73 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -4,7 +4,7 @@
+ android:value="11.11.0" />
diff --git a/android/src/main/java/com/plaid/PlaidModule.kt b/android/src/main/java/com/plaid/PlaidModule.kt
index b87bf503..bd8b2f4b 100644
--- a/android/src/main/java/com/plaid/PlaidModule.kt
+++ b/android/src/main/java/com/plaid/PlaidModule.kt
@@ -19,6 +19,7 @@ import com.plaid.link.configuration.LinkTokenConfiguration
import com.plaid.link.event.LinkEvent
import com.plaid.link.exception.LinkException
import com.plaid.link.result.LinkResultHandler
+import com.plaid.link.SubmissionData
import org.json.JSONException
import org.json.JSONObject
@@ -76,6 +77,14 @@ class PlaidModule internal constructor(reactContext: ReactApplicationContext) :
return builder.build()
}
+ @ReactMethod
+ override fun submit(phoneNumber: String?) {
+ if (plaidHandler != null) {
+ val submissionData = SubmissionData(phoneNumber = phoneNumber)
+ plaidHandler?.submit(submissionData)
+ }
+ }
+
@ReactMethod
override fun create(
token: String,
diff --git a/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java b/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java
index bbd7e4c1..cb8a6d3c 100644
--- a/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java
+++ b/android/src/paper/java/com/plaid/NativePlaidLinkModuleAndroidSpec.java
@@ -44,6 +44,10 @@ public NativePlaidLinkModuleAndroidSpec(ReactApplicationContext reactContext) {
@DoNotStrip
public abstract void startLinkActivityForResult(String token, boolean noLoadingState, String logLevel, Callback onSuccessCallback, Callback onExitCallback);
+ @ReactMethod
+ @DoNotStrip
+ public abstract void submit(String phoneNumber);
+
@ReactMethod
@DoNotStrip
public abstract void addListener(String eventName);
diff --git a/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java b/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java
index 0ac48f9d..b893aaf6 100644
--- a/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java
+++ b/android/src/paper/java/com/plaid/NativePlaidLinkModuleiOSSpec.java
@@ -44,6 +44,10 @@ public NativePlaidLinkModuleiOSSpec(ReactApplicationContext reactContext) {
@DoNotStrip
public abstract void dismiss();
+ @ReactMethod
+ @DoNotStrip
+ public abstract void submit(String phoneNumber);
+
@ReactMethod
@DoNotStrip
public abstract void addListener(String eventName);
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 158e7cc6..f4ffd53b 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -945,7 +945,7 @@ PODS:
- React-Mapbuffer (0.73.6):
- glog
- React-debug
- - react-native-plaid-link-sdk (11.10.2):
+ - react-native-plaid-link-sdk (11.10.3):
- Plaid (~> 5.5.1)
- React-Core
- react-native-safe-area-context (4.9.0):
@@ -1372,7 +1372,7 @@ SPEC CHECKSUMS:
React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066
React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec
React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab
- react-native-plaid-link-sdk: c2189fa607db61658773399ceceb411cbfc56063
+ react-native-plaid-link-sdk: 24a9dc17b081a8a4469d478af87f286c11cd8ea1
react-native-safe-area-context: b97eb6f9e3b7f437806c2ce5983f479f8eb5de4b
React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f
React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee
diff --git a/example/package-lock.json b/example/package-lock.json
index 1a6c1de9..cdff7051 100644
--- a/example/package-lock.json
+++ b/example/package-lock.json
@@ -14,7 +14,7 @@
"react": "18.2.0",
"react-native": "0.73.6",
"react-native-gesture-handler": "^2.12.1",
- "react-native-plaid-link-sdk": "^11.10.3",
+ "react-native-plaid-link-sdk": "file:.yalc/react-native-plaid-link-sdk",
"react-native-safe-area-context": "^4.9.0",
"react-native-screens": "^3.29.0"
},
@@ -39,6 +39,14 @@
"node": ">=18"
}
},
+ ".yalc/react-native-plaid-link-sdk": {
+ "version": "11.11.0",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
"dev": true,
@@ -11142,14 +11150,8 @@
}
},
"node_modules/react-native-plaid-link-sdk": {
- "version": "11.10.3",
- "resolved": "https://registry.npmjs.org/react-native-plaid-link-sdk/-/react-native-plaid-link-sdk-11.10.3.tgz",
- "integrity": "sha512-cklgvgs5p4yxIrP6vEgFegNEP9lSPasAcErS5pZVZs5oOw7VudW4GcHvYUabG6YO4vY2fq8EBKGiNDxCu97Pyw==",
- "license": "MIT",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
+ "resolved": ".yalc/react-native-plaid-link-sdk",
+ "link": true
},
"node_modules/react-native-safe-area-context": {
"version": "4.9.0",
diff --git a/example/src/Screens/PlaidLinkScreen.tsx b/example/src/Screens/PlaidLinkScreen.tsx
index a85c7a70..ff49cec3 100644
--- a/example/src/Screens/PlaidLinkScreen.tsx
+++ b/example/src/Screens/PlaidLinkScreen.tsx
@@ -14,7 +14,7 @@ import {
LinkTokenConfiguration,
} from 'react-native-plaid-link-sdk';
-import {create, open} from 'react-native-plaid-link-sdk/dist/PlaidLink';
+import {create, open} from 'react-native-plaid-link-sdk';
function isValidString(str: string): boolean {
if (str && str.trim() !== '') {
diff --git a/ios/RNLinksdk.mm b/ios/RNLinksdk.mm
index 59122c69..389bb28b 100644
--- a/ios/RNLinksdk.mm
+++ b/ios/RNLinksdk.mm
@@ -28,7 +28,7 @@ @implementation RNLinksdk
RCT_EXPORT_MODULE();
+ (NSString*)sdkVersion {
- return @"11.10.3"; // SDK_VERSION
+ return @"11.11.0"; // SDK_VERSION
}
+ (NSString*)objCBridgeVersion {
@@ -181,6 +181,14 @@ - (void)stopObserving {
self.presentingViewController = nil;
}
+RCT_EXPORT_METHOD(submit:(NSString * _Nullable)phoneNumber) {
+ if (self.linkHandler) {
+ PLKSubmissionData *submissionData = [[PLKSubmissionData alloc] init];
+ submissionData.phoneNumber = phoneNumber;
+ [self.linkHandler submit: submissionData];
+ }
+}
+
#pragma mark - Bridging
+ (PLKEnvironment)environmentFromString:(NSString *)string {
@@ -473,6 +481,10 @@ + (NSString *)stringForEventName:(PLKEventName *)eventName {
return @"CONNECT_NEW_INSTITUTION";
case PLKEventNameValueSubmitOTP:
return @"SUBMIT_OTP";
+ case PLKEventNameValueLayerReady:
+ return @"LAYER_READY";
+ case PLKEventNameValueLayerNotAvailable:
+ return @"LAYER_NOT_AVAILABLE";
}
return @"unknown";
}
@@ -618,6 +630,8 @@ + (NSString *)stringForViewName:(PLKViewName *)viewName {
return @"SELECT_SAVED_INSTITUTION";
case PLKViewNameValueSelectSavedAccount:
return @"SELECT_SAVED_ACCOUNT";
+ case PLKViewNameValueProfileDataReview:
+ return @"PROFILE_DATA_REVIEW";
}
return @"unknown";
diff --git a/package.json b/package.json
index 43b77f23..b4109672 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "react-native-plaid-link-sdk",
- "version": "11.10.3",
+ "version": "11.11.0",
"description": "React Native Plaid Link SDK",
"main": "dist/index.js",
"types": "dist/index.d.ts",
diff --git a/react-native-plaid-link-sdk.podspec b/react-native-plaid-link-sdk.podspec
index 5a540e7c..7c60081d 100644
--- a/react-native-plaid-link-sdk.podspec
+++ b/react-native-plaid-link-sdk.podspec
@@ -28,5 +28,5 @@ Pod::Spec.new do |s|
end
s.dependency 'React-Core'
- s.dependency 'Plaid', '~> 5.5.1'
+ s.dependency 'Plaid', '~> 5.6.0'
end
diff --git a/src/PlaidLink.tsx b/src/PlaidLink.tsx
index d84f0d29..7b4d1d93 100644
--- a/src/PlaidLink.tsx
+++ b/src/PlaidLink.tsx
@@ -11,6 +11,7 @@ import {
LinkTokenConfiguration,
PlaidLinkComponentProps,
PlaidLinkProps,
+ SubmissionData,
} from './Types';
import RNLinksdkAndroid from './fabric/NativePlaidLinkModuleAndroid';
import RNLinksdkiOS from './fabric/NativePlaidLinkModuleiOS';
@@ -100,6 +101,14 @@ export const dismissLink = () => {
}
};
+export const submit = (data: SubmissionData): void => {
+ if (Platform.OS === 'android') {
+ RNLinksdkAndroid?.submit(data.phoneNumber);
+ } else {
+ RNLinksdkiOS?.submit(data.phoneNumber);
+ }
+};
+
/**
* @deprecated This component is deprecated. Create your own component and use the create & open methods.
*/
diff --git a/src/Types.ts b/src/Types.ts
index 6949118b..5fd7fe54 100644
--- a/src/Types.ts
+++ b/src/Types.ts
@@ -557,3 +557,7 @@ export interface LinkOpenProps {
export type PlaidLinkComponentProps = (PlaidLinkProps & {
children: React.ReactNode
});
+
+export interface SubmissionData {
+ phoneNumber?: string;
+};
diff --git a/src/fabric/NativePlaidLinkModuleAndroid.ts b/src/fabric/NativePlaidLinkModuleAndroid.ts
index ee34716c..1f912b94 100644
--- a/src/fabric/NativePlaidLinkModuleAndroid.ts
+++ b/src/fabric/NativePlaidLinkModuleAndroid.ts
@@ -18,6 +18,7 @@ export interface Spec extends TurboModule {
onSuccessCallback: (result: UnsafeObject) => void,
onExitCallback: (result: UnsafeObject) => void
): void;
+ submit(phoneNumber: string | undefined): void;
// those two are here for event emitter methods
addListener(eventName: string): void;
removeListeners(count: Double): void;
diff --git a/src/fabric/NativePlaidLinkModuleiOS.ts b/src/fabric/NativePlaidLinkModuleiOS.ts
index 86bf4016..44e3a522 100644
--- a/src/fabric/NativePlaidLinkModuleiOS.ts
+++ b/src/fabric/NativePlaidLinkModuleiOS.ts
@@ -13,6 +13,7 @@ export interface Spec extends TurboModule {
onExit: (error: UnsafeObject, result: UnsafeObject) => void,
): void;
dismiss(): void;
+ submit(phoneNumber: string | undefined): void;
// those two are here for event emitter methods
addListener(eventName: string): void;
removeListeners(count: Int32): void;
diff --git a/src/index.ts b/src/index.ts
index 71f554ba..5618728d 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -5,6 +5,7 @@ import {
dismissLink,
usePlaidEmitter,
PlaidLink,
+ submit,
} from './PlaidLink';
export * from './Types';
@@ -18,6 +19,7 @@ export {
open,
dismissLink,
usePlaidEmitter,
+ submit,
};
// Components