Skip to content

Adopt native SDK 0.1.0 - #21

Merged
ahsanalidotme merged 1 commit into
mainfrom
feat/native-0.1.0
Oct 27, 2026
Merged

ahsanalidotme merged 1 commit into
mainfrom
feat/native-0.1.0

Conversation

@ahsanalidotme

@ahsanalidotme ahsanalidotme commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Closes #20

Moves the wrapper to the native 0.1.0 SDKs and releases it as 0.1.0.

Update: io.linktrail:sdk:0.1.0 is now on Maven Central, so the Android build resolves. (When this PR was opened it wasn't published yet and the Android CI job failed with Could not find io.linktrail:sdk:0.1.0.)

Changes

  • Native pins: iOS LinkTrailSDK ~> 0.1.0 (podspec; example Podfile.lock now resolves 0.1.0). Android io.linktrail:sdk:0.1.0.
  • linkDomains is already in configure options and forwarded to both natives. Updated its docs, plus a README and CHANGELOG migration note: custom link domains must be listed in linkDomains; handleDeepLink now ignores non-LinkTrail URLs (it resolves null with no network call and no onError).
  • iOS paste button: the tap now goes through the native SDK's paste coordinator (LinkTrailPasteButton(grantsConsent:onToken:).makeCoordinator()) inside the existing themeable UIPasteControl. That gives the native consent rule and the fix for tokens pasted after a denial. Before, the bridge called trackInstall(clickToken:) directly. New optional grantsConsent?: boolean prop. If you omit it, the bridge passes native nil (grant only while consent is undecided). true and false map to the native values.
  • X-LinkTrail-SDK header: Android calls LinkTrailWrapper.setPlatform("react-native", BuildConfig.LINKTRAIL_RN_VERSION) before configure. The version is read from package.json by build.gradle. iOS isn't wired yet: the published LinkTrailSDK 0.1.0 XCFramework ships no .private.swiftinterface, so the @_spi(Wrapper) setSDKIdentifier(platform:version:) hook can't be called from another module. Until a native release exposes it, iOS keeps sending ios/<native version>.
  • customData: the type stays Record<string, string>. The docs now say that nested values arrive as JSON strings.
  • Docs for the native configure singleton behaviour. Version 0.1.0, CHANGELOG entry with upgrade notes.

Verified

  • npm run lint (0 errors), npm run typecheck, npm run prepare, codegen validation (the new grantsConsent enum prop is generated).
  • iOS example: pod install resolves LinkTrailSDK 0.1.0, and xcodebuild for the simulator succeeds.
  • Android: io.linktrail:sdk:0.1.0 is published on Maven Central and resolves.

- Bump LinkTrailSDK to ~> 0.1.0 and io.linktrail:sdk to 0.1.0
- Paste button uses the native paste path; new optional grantsConsent prop
  (default: grant only while undecided)
- Android reports X-LinkTrail-SDK: react-native/<package version>
- Document linkDomains migration and customData JSON-string values
- Version 0.1.0
@ahsanalidotme

Copy link
Copy Markdown
Contributor Author

Impact: No DB changes. Live code: the published npm package (at release) and the native SDK versions apps get. Breaking for integrators: link handling is limited to linkDomains hosts, and the paste-button consent default changed. Prod impact: none until 0.1.0 is published to npm. Don't release before io.linktrail:sdk:0.1.0 is on Maven Central.

@ahsanalidotme
ahsanalidotme marked this pull request as ready for review October 27, 2026 09:53
@ahsanalidotme
ahsanalidotme merged commit 4da6270 into main Oct 27, 2026
8 of 9 checks passed
@ahsanalidotme
ahsanalidotme deleted the feat/native-0.1.0 branch October 27, 2026 10:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt native SDK 0.1.0 (iOS LinkTrailSDK, Android io.linktrail:sdk)

1 participant