diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml
index 62c2972..719b861 100644
--- a/.github/workflows/ios.yml
+++ b/.github/workflows/ios.yml
@@ -41,10 +41,12 @@ jobs:
LC_ALL: en_US.UTF-8
run: |
for i in 1 2 3; do
- bundle exec pod install --repo-update && break
+ bundle exec pod install --repo-update && exit 0
echo "pod install attempt $i failed; retrying…"
sleep 5
done
+ echo "pod install failed after 3 attempts" >&2
+ exit 1
- name: Build (Debug, iOS simulator)
working-directory: example/ios
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 299f849..f2690f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## 0.0.4
+
+- Bump the iOS native SDK to **`LinkTrailSDK ~> 0.0.11`** (from `0.0.10`).
+- New `clickTokenSource: 'none'` mode (iOS) — the SDK never touches the clipboard (no paste
+ button, no "Allow Paste" alert); deferred matching falls back to probabilistic IP matching.
+
## 0.0.3
- Bump the Android native SDK to **`io.linktrail:sdk:0.0.5`** (from `0.0.4`).
diff --git a/LinktrailReactNative.podspec b/LinktrailReactNative.podspec
index 75be4cd..37ddda6 100644
--- a/LinktrailReactNative.podspec
+++ b/LinktrailReactNative.podspec
@@ -18,7 +18,7 @@ Pod::Spec.new do |s|
# The binary LinkTrail iOS SDK, published to the CocoaPods trunk — CocoaPods
# resolves it automatically, so the consuming app needs no extra Podfile line.
- s.dependency "LinkTrailSDK", "~> 0.0.10"
+ s.dependency "LinkTrailSDK", "~> 0.0.11"
s.pod_target_xcconfig = {
"DEFINES_MODULE" => "YES",
diff --git a/README.md b/README.md
index 8e601b2..25b178f 100644
--- a/README.md
+++ b/README.md
@@ -95,6 +95,8 @@ On iOS, deferred attribution recovers a **click token** the tapped link left on
- **`'pasteButton'`** (default) — the token is read **only** when the user taps
`` (Apple's `UIPasteControl`), with **no "Allow Paste" alert**. You render
the button and set **`autoTrackInstall: false`** so the install waits for the tap.
+- **`'none'`** — the SDK **never touches the clipboard** (no button, no alert); deferred matching
+ falls back to probabilistic IP matching only.
Android uses the Play Install Referrer instead, so `clickTokenSource` is ignored there and
`` renders nothing.
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 0852809..a535ef0 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -37,14 +37,14 @@ PODS:
- hermes-engine (0.80.3):
- hermes-engine/Pre-built (= 0.80.3)
- hermes-engine/Pre-built (0.80.3)
- - LinktrailReactNative (0.0.3):
+ - LinktrailReactNative (0.0.4):
- boost
- DoubleConversion
- fast_float
- fmt
- glog
- hermes-engine
- - LinkTrailSDK (~> 0.0.10)
+ - LinkTrailSDK (~> 0.0.11)
- RCT-Folly
- RCT-Folly/Fabric
- RCTRequired
@@ -67,7 +67,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - LinkTrailSDK (0.0.10)
+ - LinkTrailSDK (0.0.11)
- RCT-Folly (2024.11.18.00):
- boost
- DoubleConversion
@@ -2521,8 +2521,8 @@ SPEC CHECKSUMS:
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
hermes-engine: fff23161928673afcd95f63146e651726f68b384
- LinktrailReactNative: 7ec4b501092c29257ae7ab64d4b44a8748139c32
- LinkTrailSDK: b243fcedba4f7437df1171e460294cf81f256e25
+ LinktrailReactNative: cdb6994035080e1edcb3697dcf8f2e287c5db30c
+ LinkTrailSDK: 53a14d30eb2cd9cbde0d41c3468be80a7a414e5d
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
RCTDeprecation: 2ebc9cc0329ede460c5d52956ce5e1ab715c2c2c
RCTRequired: b83daef658afafdc68d85b97ed082f4497a8ffa4
@@ -2586,7 +2586,7 @@ SPEC CHECKSUMS:
React-timing: 16e462e136f8c6efca6ae9f555ddf5f8af267be6
React-utils: a087aa6f63ccb58ccf347f25c3552ddbdf5bc0dc
ReactAppDependencyProvider: bd4d54d31d1a9e2eddff7675bb7628731a42b98c
- ReactCodegen: 4903a7bb00a13fd83fccf4f9e1f8a1cbf8352e64
+ ReactCodegen: 8e8c7dc0113d08d218f409fbb2cd3b966b982e11
ReactCommon: 04362bc6625a80fa21b174f527352db70e5ad06a
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
Yoga: fb21153542336c6e7c4855022f4a93a286865259
diff --git a/example/package-lock.json b/example/package-lock.json
index f4f0382..591cff1 100644
--- a/example/package-lock.json
+++ b/example/package-lock.json
@@ -40,11 +40,14 @@
},
"..": {
"name": "linktrail-react-native",
- "version": "0.0.1",
+ "version": "0.0.4",
"license": "MIT",
"devDependencies": {
+ "@react-native/eslint-config": "0.80.3",
"@types/react": "^19.0.0",
"del-cli": "^6.0.0",
+ "eslint": "^8.57.1",
+ "prettier": "2.8.8",
"react": "19.1.0",
"react-native": "^0.80.0",
"react-native-builder-bob": "^0.40.6",
diff --git a/ios/LinkTrailModuleImpl.swift b/ios/LinkTrailModuleImpl.swift
index 646a74f..a9befed 100644
--- a/ios/LinkTrailModuleImpl.swift
+++ b/ios/LinkTrailModuleImpl.swift
@@ -205,6 +205,7 @@ public final class LinkTrailModuleImpl: NSObject {
switch name {
case "pasteButton": return .pasteButton
case "automatic": return .automatic
+ case "none": return LinkTrailClickTokenSource.none
default: return nil
}
}
diff --git a/package.json b/package.json
index 68a9a2e..41e3a33 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "linktrail-react-native",
- "version": "0.0.3",
+ "version": "0.0.4",
"description": "React Native SDK for LinkTrail — mobile attribution and deferred deep linking. A New Architecture TurboModule wrapping the native LinkTrail iOS and Android SDKs.",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
diff --git a/src/types.ts b/src/types.ts
index cab593d..a290324 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -101,8 +101,10 @@ export interface LinkTrailOptions {
* iOS only. How the SDK obtains the deferred-attribution click token from the
* clipboard. `'pasteButton'` (default) reads it only when the user taps an
* Apple paste control (no "Allow Paste" alert); `'automatic'` reads the
- * clipboard at install (shows the system "Allow Paste" alert). Ignored on
- * Android (which uses the Play Install Referrer).
+ * clipboard at install (shows the system "Allow Paste" alert); `'none'` never
+ * touches the clipboard at all (no button, no alert) and relies on
+ * probabilistic IP matching only. Ignored on Android (which uses the Play
+ * Install Referrer).
*/
clickTokenSource?: LinkTrailClickTokenSource;
/**
@@ -115,7 +117,7 @@ export interface LinkTrailOptions {
}
/** Where the iOS SDK reads the deferred-attribution click token from. */
-export type LinkTrailClickTokenSource = 'pasteButton' | 'automatic';
+export type LinkTrailClickTokenSource = 'pasteButton' | 'automatic' | 'none';
/** SKAdNetwork 4.0+ coarse conversion value bucket (iOS only). */
export type LinkTrailCoarseConversionValue = 'low' | 'medium' | 'high';