Skip to content

feat!: unify the public API with the other freeRASP plugins - #172

Merged
tompsota merged 3 commits into
chore/android-sdk-20.0.1from
feat/unified-api
Nov 12, 2026
Merged

tompsota merged 3 commits into
chore/android-sdk-20.0.1from
feat/unified-api

Conversation

@tompsota

Copy link
Copy Markdown
Member

What's new

Unifies the public API with the other freeRASP plugins for the 6.0.0 major release. Stacked on #170 (chore/android-sdk-20.0.1).

Breaking changes

  • iOS config: TalsecIosConfig.appBundleId: string is replaced by appBundleIds: string[], matching the iOS SDK (TalsecConfig(appBundleIds: [String], …)). The Swift side passes the array straight through.
  • Return values: methods that resolved with a status string or a constant now resolve to void: talsecStart, addToWhitelist, blockScreenCapture, blockScreenControl, startOngoingCallDetection, stopOngoingCallDetection, storeExternalId, removeExternalId. useFreeRasp no longer compares the start response string. Meaningful values stay: isScreenCaptureBlocked, isScreenControlBlocked, isOverlayWindowsBlocked and blockOverlayWindows return boolean; getAppIcon returns string.
  • Errors: every method rejects only with the new exported TalsecError, whose code is one of talsec-failure, unsupported-platform, configuration-exception, external-id-failure or malware-failure (the same codes as Flutter's TalsecException). Android-only methods called on iOS reject with unsupported-platform instead of a plain string.
  • Exports: onInvalidCallback and removeListenerForEvent moved to an internal module and are no longer exported. abortApp is the only exported internal helper. No stop() is exposed.

The example app uses the new config field and return types. The changelog lists all of this under 6.0.0 → Breaking.

Verified

  • yarn typecheck, yarn lint and bob build pass
  • Edited Swift passes swiftc -parse
  • Not run on a device or emulator; Android Kotlin is unchanged
  • iOS not built

🤖 Generated with Claude Code

tompsota and others added 2 commits November 11, 2026 19:03
- TalsecIosConfig.appBundleId (string) -> appBundleIds (string[]), as in the
  iOS SDK
- methods that resolved with status strings or constants resolve to void
- all methods reject with TalsecError carrying a stable code, including
  Android-only methods called on iOS
- onInvalidCallback and removeListenerForEvent are no longer exported;
  abortApp is the only exported internal helper

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
useFreeRasp returns { started, error } instead of only logging failures, so
apps can react when the listeners can't be registered or freeRASP fails to
start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tompsota

Copy link
Copy Markdown
Member Author

Added in 9dee432: useFreeRasp now returns { started, error }. error is the TalsecError that prevented listener registration or the start (previously only console.error). Listener registration errors are caught too. The example reads error. Typecheck and lint pass.

… void

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tompsota

Copy link
Copy Markdown
Member Author

Threat and RASP execution state actions are now typed () => void instead of () => any (async handlers still type-check). I also merged the latest chore/android-sdk-20.0.1 into this branch so the changelog no longer conflicts with the new background-mode entry.

@tompsota
tompsota merged commit fa3757c into chore/android-sdk-20.0.1 Nov 12, 2026
@tompsota
tompsota deleted the feat/unified-api branch November 12, 2026 09:26
tompsota added a commit that referenced this pull request Nov 13, 2026
* release: freeRASP 5.4.0 (Android SDK 20.0.1)

Bump the Android SDK to 20.0.1 (app.talsec.rasp:TalsecRasp-Community-ReactNative)
and expose its new features:

- ongoing call detection: ongoingCall threat action with CallState,
  startOngoingCallDetection/stopOngoingCallDetection
- screen control blocking: blockScreenControl/isScreenControlBlocked
- overlay windows hiding: blockOverlayWindows/isOverlayWindowsBlocked
- criticalChecksFinished/postponedChecksFinished execution states

The new threat and execution-state identifiers and the call-state channel
key are Android only; the TypeScript lists are branched per platform so the
iOS identifier counts stay unchanged.

allChecksFinished is now driven by the SDK's onFastChecksFinished, which
fires where the removed onAllChecksFinished used to.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: reword the Maven coordinates changelog entry

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat!: rename allChecksFinished to fastChecksFinished

The execution state that fires when the fast (standard) checks complete is
renamed on all platforms to match the Android SDK's onFastChecksFinished. On
iOS it is driven by the SDK's onAllChecksFinished. This is a breaking change,
so the package major version is bumped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: drop Breaking markers from Android SDK changes absorbed by the plugin

The plugin hides these native API changes from its users, so they move from
the Android Breaking Changes section to Changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: drop Android changelog entries already listed in the plugin section

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* example: show the ongoing call state (Not detected, Started, Ongoing, Stopped)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ios): send placeholder threat channel keys for Android-only payloads

iOS now sends placeholder keys for malware and ongoing call, so the threat
channel data has the same length on both platforms and the JS check no longer
branches by platform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(android): move plugin to the app.talsec.rasp.reactnative namespace (#171)

* refactor(android): move plugin to the app.talsec.rasp namespace

Align the Android package of the plugin with the Android SDK's app.talsec.rasp,
adding the platform as the last segment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(android): update package names to app.talsec.rasp

Completes the move of the plugin sources: package declarations, imports,
Gradle namespace and build configuration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat!: unify the public API with the other freeRASP plugins (#172)

* feat!: unify the public API with the other freeRASP plugins

- TalsecIosConfig.appBundleId (string) -> appBundleIds (string[]), as in the
  iOS SDK
- methods that resolved with status strings or constants resolve to void
- all methods reject with TalsecError carrying a stable code, including
  Android-only methods called on iOS
- onInvalidCallback and removeListenerForEvent are no longer exported;
  abortApp is the only exported internal helper

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: return start status and errors from useFreeRasp

useFreeRasp returns { started, error } instead of only logging failures, so
apps can react when the listeners can't be registered or freeRASP fails to
start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(types): type threat and execution state actions as returning void

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant