> For the complete documentation index, see [llms.txt](https://docs.talsec.app/freerasp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.talsec.app/freerasp/freerasp/whats-new-and-changelog.md).

# What's New and Changelog

Browse the latest freeRASP release notes, breaking changes, and new security features across Android, iOS, and cross‑platform SDKs to keep your mobile app protection up to date.

Stay up-to-date with the latest features, improvements and bug fixes for freeRASP. Here you'll find detailed information about each update we've rolled out, organized by platform. Whether you're using the Android, iOS, Flutter, React Native, Capacitor, or Cordova version, all platforms are supported.

Explore the tabs below to see what's new and how the experience has been improved for you. If you're looking for specific changes or features, each update is documented for your convenience.

## Latest from Articles

* [Apps Security Threats Report 2025](https://www.talsec.app/talsec-global-threat-report-2025)
* [Introducing the Talsec Portal: A New Way to Monitor Your App — Try It Now!](https://docs.talsec.app/appsec-articles/articles/introducing-the-talsec-portal-a-new-way-to-monitor-your-app-try-it-now)
* [iOS Keychain vs. Android Keystore](https://docs.talsec.app/appsec-articles/articles/ios-keychain-vs.-android-keystore)
* [Introducing Multi-Instancing Detection for freeRASP](https://docs.talsec.app/appsec-articles/articles/introducing-multi-instancing-detection-for-freerasp)
* [How to Block Screenshots, Screen Recording, and Remote Access Tools in Android and iOS App](https://docs.talsec.app/appsec-articles/articles/how-to-block-screenshots-screen-recording-and-remote-access-tools-in-android-and-ios-apps)
* [Hook, Hack, Defend: Frida’s Impact on Mobile Security & How to Fight Back](https://docs.talsec.app/appsec-articles/articles/hook-hack-defend-fridas-impact-on-mobile-security-and-how-to-fight-back)
* [🚀A Developer’s Guide to Implement End-to-End Encryption in Mobile Apps 🛡️](https://docs.talsec.app/appsec-articles/articles/a-developers-guide-to-implement-end-to-end-encryption-in-mobile-apps)

Learn more: <https://docs.talsec.app/appsec-articles>

## Changelog

{% tabs %}
{% tab title="Android" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-Android/releases>

### Latest version 19.2.3

#### Fixed

* Fixed the reporting issue in root detection
* Fixed the reporting issue in hook detection
* Fixed ANR during SDK initialization caused by blocking I/O operations
* Fixed background SDK initialization stalling when the shared thread pool is saturated

### Version 19.2.1

#### Breaking Change

* ❗️Breaking: Renamed `ThreatListener.ThreatDetected` and `ThreatListener.DeviceState` callback methods
* ❗️Breaking: Changed package namespace from `com.aheaditec.talsec_security` to `app.talsec.rasp`

#### Added

* Added bootloader detection (unlocked/compromised) with `onBootloader()` callback
* Added option to fetch JitPack dependencies from our own Talsec repository (\`[https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common\`](https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common%60))

#### Fixed

* Fixed native crash caused by std::terminate() race condition
* Fixed periodic hook and root check overwriting
* Fixed root detection crash in obfuscated release builds
* Fixed hardware-backed keystore detection failing with `NoSuchMethodError` on some Android 12+ devices

#### Changed

* Improved KernelSU detection
* Improved hook detection
* Improved Frida detection
* Improved root detection capabilities

### Version 18.3.0

#### Breaking Change

* ❗️Breaking: Modified property `reason` (of type `String`) in `SuspiciousAppInfo` to `reasons` (to type `Set<String>`)
* ❗️Breaking: One of the `reasons` in `SuspiciousAppInfo` renamed from `blacklist` to `blocklist`

### Version 18.0.4

#### Added

* Added new detection check for KernelSU

#### Fixed

* Fixed memory management issues in the native code
* Patched possibility of `getInstalledPackages` throwing `DeadSystemException`
* Patched possibility of `getNetworkCapabilities` throwing `SecurityException`
* Fixed well-known issue of `Cipher.init` throwing `KeyStoreConnectException`

#### Removed

* Removed deprecated `monitoring` feature

### Version 18.0.2

#### Fixed

* Fixed method `storeExternalId` to return `ExternalIdResult` for error handling

### Version 18.0.1

#### Fixed

* Fixed `ScreenProtector` crash during activity start and permissions request
* Fixed screen recording detection callback

### Version 18.0.0

#### Breaking Change

* ❗️Breaking: Changed `ThreatListener` API interfaces (`ThreatDetected`, `DeviceState`) to abstract classes
* ❗️Breaking: Added `onAutomationDetected()` callback to `ThreatDetected` interface
  * We are introducing a new capability, detecting whether the device is being automated using tools like Appium
* ❗️Breaking: Added value restrictions to `externalId`
  * Method `storeExternalId()` now returns `ExternalIdResult`, which indicates `Success` or `Error` when `externalId` violates restrictions

#### Changed

* Improved `HMA` detection to the existing root detection capability
* Updated compile and target API to 36
* Improved root detection capabilities
* Detection of wireless ADB added to ADB detections

#### Fixed

* Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
* Fixed manifest queries merge

### Version 17.0.0

#### Breaking Change

* ❗️Breaking: Added `killOnBypass` method to the `TalsecConfig.Builder` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker [Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65)
* ❗️Breaking: Added `onTimeSpoofingDetected()` callback to `ThreatDetected` interface
  * We are introducing a new capability, detecting whether the device time has been tampered with
* ❗️Breaking: Added `onLocationSpoofing()` callback
  * We are introducing a new capability, detecting whether the location is being spoofed on the device.
* ❗️Breaking: Added `onUnsecureWifi()` callback to `ThreatDetected` interface
* ❗️Breaking: Changed `onMalwareDetected()` method parameter `packageInfo` to non-nullable
* ❗️Breaking: Updated `dispatchKeyEvent()` parameter nullability from `@Nullable` to `@NonNull`
* ❗️Breaking: Changed parameter type of `Activity` instead of `Context` in the `blockScreenCapture()` method
* ❗️Breaking: Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)

#### Added

* Added `ScreenProtector` feature wrapper object that helps with registration/unregistration of screen protection features
* A new constructor parameter of type `RaspExecutionState` in class `ThreatListener`representing changes in state in our library. `RaspExecutionState` contains `onAllChecksFinished()` method, which is triggered after all checks are completed.
* Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* New option to start Talsec, `Talsec.start()` takes new parameter `TalsecMode` that determines the dispatcher thread of initialization and sync checks
* Capability to check if another app has an option `REQUEST_INSTALL_PACKAGES` enabled in the system settings to malware detection

#### Fixed

* ANR issue caused by `registerScreenCaptureCallback()` method on the main thread
* `NullPointerException` when checking key alias in Keystore on Android 7
* `JaCoCo` issue causing `MethodTooLargeException` during instrumentation
* `DeadApplicationException` when calling `Settings.Global.getInt` or `Settings.Secure.getInt` on invalid context
* `AndroidKeyStore` crashes causing `java.util.concurrent.TimeoutException` when calling `finalize()` method on `Cipher` (GC issues)

#### Changed

* Shortened the value of threat detection interval
* Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading
* Update of internal dependencies and security libraries

### Version 16.0.1

#### Breaking Change, new feature

* ❗️Added `onMultiInstanceDetected()` callback - detection whether the application is installed/running in various multi-instancing environments (e.g. Parallel Space).

#### **Improvement**

* Added support for 16 KB memory page sizes.
* The ADB service running as "root" is a signal for root detection.
* Improved emulator detection.
* Internal security improvements.

#### Fixed

* Removed malware report duplicates.

### Version 15.1.0

#### **Improvement**

* Added new root detection checks.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
* Added externalId to put an integrator-specified custom identifier into the logs. This feature will be presented later.

#### Fixed

* Resolved SecurityException caused by `getNetworkCapabilities()` - Android 11 specific bug ([GH Android issue #56](https://github.com/talsec/Free-RASP-Android/issues/56)).

### Version 15.0.0

#### **Changed**

* Compile API increased to 35, dependencies updated
* Internal library obfuscation reworked
* Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)

#### Fixed

* ANR issues bug-fixing

### Version 14.0.1

#### Breaking Change, new feature

* ❗️Added `onScreenshotDetected()` - detection of **screenshots**, refer to the [Android freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/android#handle-detected-threats).
* ❗️Added `onScreenRecordingDetected()` - detection of **screen recording**, refer to the [Android freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/android#handle-detected-threats).

#### **Improvement**

* Added `blockScreenCapture(Activity activity, boolean enable)` for **FLAG\_SECURE** control, an **active protection against screen capturing.**
* `isScreenCaptureBlocked()` - to receive whether the screen capture is blocked
* Rate limiting for both screenshot and screenRecording incidents
* Improved root detection capabilities

#### **Bug Fix**

* Updated proguard rules to fix warnings from okhttp dependency.

### Version 13.2.0

#### Improvement

* Added request integrity information to data collection headers.
* Enhanced and accelerated the data collection logic.

### Version 13.0.0

#### New features

* <mark style="color:red;">**BREAKING CHANGE:**</mark> Added `onADBEnabledDetected` detection feature, which allows you to detect USB debugging option enabled in the developer settings on the device. App needs to implement this new callback.

### Version 12.0.0

#### Improvement

* Refactored Magisk checks in the root detection
* Internal refactoring of Malware detection feature

**Bug Fix**

* Resolved IllegalArgumentException caused by unregistering not registered receiver in `TalsecMonitoringReceiver`

### Version 11.1.3

#### Bug Fix

* Reported ANR issues present on some devices were resolved ([GH issue #138](https://github.com/talsec/Free-RASP-Flutter/issues/138)).
* Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved ([GH Flutter #140](https://github.com/talsec/Free-RASP-Flutter/issues/140)).
* Reported crashes caused by the UnsupportedOperationException were resolved.

### Version 11.1.1

#### Bug Fix

* False positives in Hook detection (runtimeManipulation).

### Version 11.1.0

#### New Feature

* Added `onMalwareDetected` to `ThreatListener.ThreatDetected` interface, this is a breaking change and the `onMalwareDetected` has to be implemented by the integrating application.&#x20;
  * **Important Information**
    * Further details for this feature will be provided shortly with the new repositories.
    * For now, do not react to the callback, you can implement it simply by just using println().
* Added the auditing of the internal execution for the future check optimization and overall security improvements.

#### Improvement

* Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.
* Updated `CURL` to `8.8.0` and `OpenSSL` to `3.0.14` ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114)).            &#x20;
* Refactored fetching the list of installed applications for root and hook detection.

#### Bug Fix

* Fixed native crashes (SEGFAULT errors) in `ifpip` method.
* Fixed collision for command line tools (like ping) invoked without absolute path ([Github issue #41](https://github.com/talsec/Free-RASP-ReactNative/issues/41)).

### Version 9.6.0

#### New Feature

* Two new threat callbacks, `onDeveloperModeDetected` and `onSystemVPNDetected`, have been added for detecting Developer mode and System VPN.

#### Improvement

* Updated GMS dependency to a newer version for improved performance and compatibility.
* Updated CA bundle to enhance security for secure connections.    &#x20;

#### Bug Fix

* Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

### Version 9.1.0

#### Improvement

* &#x20;Updated freeRASP SDK artifact hosting ensuring better stability and availability.

### Version 9.0.2

#### Improvement

* &#x20;Shortened duration of threat evaluation.
* &#x20;Improved *appIntegrity* check and its logging.
* &#x20;Updated `CURL` to `8.5.0` and `OpenSSL` to `1.1.1w`.

#### Bug Fix

* Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

### Version 9.0.0

#### Improvement

* Increased the `compileSdk` and `targetSdk` in the demo application.
* Updated dependencies in the demo application.

#### Bug Fix

* Fixed issue with ProviderException ([#26](https://github.com/talsec/Free-RASP-Android/issues/26)).

Curious about more in-depth changes for Android? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-Android/releases) for the complete history of updates!
{% endtab %}

{% tab title="iOS" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-iOS/releases>

### Latest Version: 7.1.2

#### Added

* Improved jailbreak detection

### Version 7.1.1

#### Added

* Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks.
* Improved hook detection.

### Version 6.14.5

#### Fixed

* Fixed issue with app's color scheme initialization.
* Fixed bad memory access in jaibreak check.

### Version 6.14.4

#### Fixed

* Fixed retrigger jailbreak issue on iOS 15 and 16.

### Version 6.14.3

#### Fixed

* Fixed false positives with jailbreak on iOS 15 and 16.
* Fixed issue with app crashing on screenshot/screen recording.

### Version 6.14.2

#### Fixed

* Fixed new jailbreak checks false positives on iOS 14 and 13.

### Version 6.14.1

#### Changed

* Improved `timeSpoofing` detection methods.

### Version 6.14.0

#### New Feature

* Added time spoofing detection, detecting an inaccurate device clock. It is a new threat `timeSpoofing`.

#### Improvement

* Improved jailbreak detection methods.

### Version 6.13.0

#### New Feature

* A new extension of `SecurityThreatCenter`: `RaspExecutionState` contains `onAllChecksFinished()` method, which is triggered after all checks are completed.

#### Improvement

* Updated internal dependencies.

### Version 6.12.1

#### Improvement

* Added palera1n jailbreak detection.
* Improved Dopamine jailbreak detection.

#### Fixed

* Resolved memory-related stability issues.

### Version 6.11.0

#### New Feature

* Screen capture protection obscuring app content in screenshots and screen recordings preventing unauthorized content capture. Refer to the [iOS freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/ios).

#### Improvement

* Added externalId to put an integrator-specified custom identifier into the logs. This feature will be presented later.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.

#### Bug Fix

* Resolved an issue that prevented Xcode tests from running correctly.
* Resolved an issue with the screen recording detection.

### Version 6.9.0

#### Improvement

* Improvement of the obfuscation of the SDK

#### **Changed**

* Deep signing of the OpenSSL binaries

### Version 6.8.0

#### New feature

* Enhanced security with our new **Screen Capture Threat Detection**, now capable of identifying screen recording, AirPlay mirroring, and screenshots to guard against unauthorized viewing. Check out the new `screenshot` and `screenRecording` callbacks.

### Version 6.6.3

#### Maintenance

* Updated SDK code signing; it will now be signed with:
  * Team ID: PBDDS45LQS
  * Team Name: Lynx SFT s.r.o.

### Version 6.6.2

#### New feature

* Added [Serotonin](https://github.com/SerotoninApp/Serotonin) jailbreak detection.

### Version 6.6.1

#### Improvement

* Renewed the signing certificate.

### Version 6.6.0

#### New feature

* [Dopamine](https://github.com/opa334/Dopamine) jailbreak detection.

### Version 6.5.3

#### Improvement

* Updated `OpenSSL` to version `3.0.14` and `CURL` to version `8.8.0`. ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114))

### Version 6.5.0

#### New Feature

* Added request integrity information to data collection.
* Significantly improved the response time from data collection service.

### Version 6.4.0

#### New Feature

* Added new threat callback `systemVPN` for System VPN detection.

#### Improvement

* Passcode check is now performed periodically.
* Updated the CA bundle to enhance security for secure connections.

#### Bug Fix

* Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

### Version 6.1.2

#### New Feature

* Added Privacy Manifest.
* Added codesigning for the SDK, it is signed by:&#x20;
  * Team ID: `ASQC376HCN`,
  * Team Name: `AHEAD iTec, s.r.o.`.

#### Improvement

* Updated `CURL` to `8.5.0` and `OpenSSL` to `1.1.1w`.
* Improved obfuscation of Swift and C strings.

#### Bug Fix

* Fixed memory leak ([#13](https://github.com/talsec/Free-RASP-iOS/issues/13)).

Curious about more in-depth changes for iOS? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-iOS/releases) for the complete history of updates!
{% endtab %}

{% tab title="Flutter" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-Flutter/releases>

### Latest version: 8.2.2

#### Fixed

* **\[Android]** Fixed the reporting issue in root detection
* **\[Android]** Fixed the reporting issue in hook detection
* **\[Android]** Fixed ANR during SDK initialization caused by blocking I/O operations
* **\[Android]** Fixed background SDK initialization stalling when the shared thread pool is saturated

### Version: 8.2.1

#### Fixed

* Fixed published package contents so required iOS framework artifacts are included
* Included the example entrypoint for pub.dev; the full demo app remains in the repository only
* Excluded non-essential development files (tests, codegen inputs, build outputs) from the published package
* **\[Android]** Moved `-flattenpackagehierarchy` out of consumer ProGuard rules to restore AGP 8+ compatibility

### Version 8.2.0

#### Added

* Added `onBootloader` callback for detecting an unlocked or compromised bootloader (Android only).
* **\[Android]** Added bootloader detection (unlocked/compromised) with `onBootloader()` callback
* **\[Android]** Added option to fetch JitPack dependencies from our own Talsec repository

#### Changed

* **\[Android]** Improved KernelSU detection
* **\[Android]** Improved hook detection
* **\[Android]** Improved Frida detection
* **\[Android]** Improved root detection capabilities
* **\[iOS]** Improved jailbreak detection

#### Fixed

* **\[Android]** Fixed native crash caused by std::terminate() race condition
* **\[Android]** Fixed periodic hook and root check overwriting
* **\[Android]** Fixed crash inside AppZygotePreload during root detection
* **\[Android]** Fixed root detection crash in obfuscated release builds
* **\[Android]** Fixed hardware-backed keystore detection failing with `NoSuchMethodError` on some Android 12+ devices

### Version 8.1.0

#### Added

* Swift Package Manager (SPM) support for iOS. Requires Flutter 3.41.0 or newer; CocoaPods remains supported on older versions.
* **\[iOS]** Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks.
* **\[iOS]** Improved hook detection.

#### Fixed

* **\[iOS]** Fixed issue with app's color scheme initialization.
* **\[iOS]** Fixed bad memory access in jailbreak check.

#### Changed

* **\[iOS]** Raised the minimum iOS deployment target to 13.0, as required by the iOS SDK.

### Version 8.0.0

#### Breaking

* `RaspExecutionStateCallback.onAllChecksDone` renamed to `onAllChecksFinished`
* `PackageInfo.installationSource` renamed to `installerStore`
* `SuspiciousAppInfo.reason` (String) renamed to `reasons` (List\<String>)
* Value `"blacklist"` in `reasons` renamed to `"blocklist"`
* Removed `MalwareConfig` and `AndroidConfig.malwareConfig` — use `SuspiciousAppDetectionConfig` instead

#### Added

* `SuspiciousAppInfo.permissions` field (`List<String>?`) — list of suspicious permissions detected on the app
* **\[Android]** New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection
* **\[Android]** New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection`

#### Fixed

* **\[Android]** Fixed `VerifyError` caused by `JaCoCo` bytecode instrumentation
* **\[Android]** Fixed a potential cause of crash in the multi-instance detector
* **\[Android]** Fixed Java interoperability of `ScreenProtector` methods
* **\[Android]** Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

#### Changed

* **\[Android]** Fine-tuned location spoofing detection
* **\[Android]** Modified malware incident log structure for better aggregation

### Version 7.5.1

#### Changed

* **\[Android]** Made dispatchers singletons

#### Fixed

* **\[iOS]** Fixed new jailbreak checks false positives on iOS 14 and 13.
* **\[iOS]** Fixed false positives with jailbreak on iOS 15 and 16.
* **\[iOS]** Fixed issue with app crashing on screenshot/screen recording.
* **\[iOS]** Fixed retrigger jailbreak issue on iOS 15 and 16.

### Version 7.5.0

#### Added

* **\[Android]** Added support for `KernelSU` to the existing root detection capabilities
* **\[Android]** Added support for `HMA` to the existing root detection capabilities
* **\[Android]** Added new malware detection capabilities
* **\[Android]** Added `onAutomationDetected()` callback to `ThreatDetected` interface
  * We are introducing a new capability, detecting whether the device is being automated using tools like Appium
* **\[Android]** Added value restrictions to `externalId`
  * Method `storeExternalId()` now returns `ExternalIdResult`, which indicates `Success` or `Error` when `externalId` violates restrictions
* **\[iOS]**  Added time spoofing detection, detecting an inaccurate device clock. It is a new threat `timeSpoofing`.

#### Changed

* Updated the internal handling of ExternalIdResult on Android (for `storeExternalId()` method)
* **\[Android]** Removed unused library `tmlib`
* **\[Android]** Refactoring of signature verification code
* **\[Android]** Updated compile and target API to 36
* **\[Android]** Improved root detection capabilities
* **\[Android]** Detection of wireless ADB added to ADB detections
* **\[iOS]**  Improved jailbreak detection methods.

#### Fixed

* **\[Android]** Fixed exception handling for the KeyStore `getEntry` operation
* **\[Android]** Fixed issue in `ScreenProtector` concerning the `onScreenRecordingDetected` invocations
* **\[Android]** Merged internal shared libraries into a single one, reducing the final APK size
* **\[Android]** Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
* **\[Android]** Fixed manifest queries merge

### Version 7.4.0

#### Added

* Added `onAutomation` callback to `ThreatCallback` for handling `Threat.automation` threat

### Version 7.3.0

#### Added

* Added `killOnBypass` to `TalsecConfig` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* Added `onTimeSpoofing` callback to `ThreatCallback` for handling `Threat.timeSpoofing` threat (Android only)
  * We are introducing a new capability, detecting whether the device time has been tampered with
* Added `onLocationSpoofing` callback to `ThreatCallback` for handling `Threat.locationSpoofing` threat (Android only)
  * We are introducing a new capability, detecting whether the location is being spoofed on the device.
* Added `onUnsecureWifi` callback to `ThreatCallback` for handling `Threat.unsecureWifi` threat (Android only)
  * We are introducing a new capability, detecting whether the device is connected to an unsecured Wi-Fi network.
* Added `onAllChecksDone` callback to new `RaspExecutionStateCallback`
  * We are introducing a new callback that notifies when all security checks have been completed.

#### Removed

* Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)

#### Changed

* Updated internal dependencies

### Version 7.2.2

#### Fixed

* **\[Android]** Fixed an issue with crashing screen protector

### Version 7.2.1

#### Fixed

* **\[iOS]** Fixed an issue with native framework

### Version: 7.2.0

#### New Feature

* Added interface for multi-instance detection

#### Improvement

* **\[iOS]** Added palera1n jailbreak detection
* **\[iOS]** Improved Dopamine jailbreak detection
* **\[Android]** Improved emulator detection
* **\[Android]** Added support for 16 KB pages

#### Fixed

* **\[iOS]** Resolved memory-related stability issues
* **\[Android]** Removed malware report duplicates

### Version: 7.1.0

#### New feature

* Added interface for screenshot / screen recording blocking on iOS.

**Improvements**

* Added interface for external ID storage.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
* **\[Android]** New root detection checks added.

**Fixed**

* Issue that caused compilation errors due to unknown references.
* **\[iOS]** Resolved an issue with the screen recording detection.
* **\[iOS]** Resolved an issue that prevented Xcode tests from running correctly.

### Version 7.0.0

#### Added

* `fvm` support for Flutter version management

#### **Changed**

* Updated versions for example app
* **\[Android]&#x20;**<mark style="color:red;">**Breaking**</mark>: Raised Kotlin version to `2.1.0`
* **\[Android]** Compile API increased to 35, dependencies updated
* **\[Android]** Internal library obfuscation reworked
* **\[Android]** Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)
* **\[iOS]** Improvement of the obfuscation of the SDK
* **\[iOS]** Deep signing of the OpenSSL binaries

#### **Fixed**

* **\[Android]** ANR issues bug-fixing

### Version 6.12.0

#### New feature

* Added `screenshot` - detection of **screenshots**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `screenRecording` - detection of **screen recording**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `blockScreenCapture` for **FLAG\_SECURE** control, an **active protection against screen capturing.**
* Added `isScreenCaptureBlocked` - to receive whether the screen capture is blocked

#### **Changed**

* **\[Android]** Raised Android CompileSDK level to 35
* **\[Android]** Monitoring is now disabled by default

#### Improvement

* **\[Android]** Improved root detection

#### Bug Fix

* **\[Android]** Proguard rules to address warnings from okhttp dependency

### Version 6.11.0

#### Improvement

* **\[Android]** Added request integrity information to data collection headers.
* **\[Android]** Enhanced and accelerated the data collection logic.

### Version 6.10.0

#### Improvement

* App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method
* **\[Android]** Malware data is now parsed on background thread to improve responsiveness.

### Version 6.9.0

#### New features

* **\[Android]** `onADBEnabled` callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

### Version 6.8.0

#### New features and improvements

* **\[Android] Malware detection** as a new callback for enhanced app security.
* **\[Android]** Internal refactoring of Malware detection feature.
* **\[Android]** Refactoring Magisk checks in the root detection.
* **\[iOS]** Enhanced security with [**Serotonin Jailbreak**](https://github.com/SerotoninApp/Serotonin) **Detection** to identify compromised devices.

**Maintenance**

* **\[iOS]** Updated SDK code signing; it will now be signed with:
  * Team ID: PBDDS45LQS
  * Team Name: Lynx SFT s.r.o.

#### Bug Fix

* **\[Android]** Resolved IllegalArgumentException caused by unregistering not registered receiver in `TalsecMonitoringReceiver`

### Version 6.7.3

#### Improvement

* **\[iOS]** Renewed the signing certificate.

### Version 6.7.2

#### Bug Fix

* **\[Android]**  Reported ANR issues present on some devices were resolved ([GH Flutter issue #138](https://github.com/talsec/Free-RASP-Flutter/issues/138)).
* **\[Android]** Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved ([GH Flutter issue #140](https://github.com/talsec/Free-RASP-Flutter/issues/140)).
* **\[Android]** Reported crashes caused by the UnsupportedOperationException were resolved.

### Version 6.7.1

#### Bug Fix

* **\[Android]** False positives for hook detection.

### Version 6.7.0

#### New Feature

* **\[Android]** Added the auditing of the internal execution for the future check optimization and overall security improvements.
* **\[iOS]** [Dopamine](https://github.com/opa334/Dopamine) jailbreak detection.

#### Improvement

* Migration to [declarative Gradle plugin](https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply).
* Updated `CURL` to `8.8.0` and `OpenSSL` to `3.0.14` ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114)).
* **\[Android]** TalsecConfig creation was migrated to a Builder pattern.
* **\[Android]** Refactored fetching the list of installed applications for root and hook detection.
* **\[iOS]** Enhanced and accelerated the data collection logic.

#### Bug Fix

* **\[Android]** Native crashes (SEGFAULT) in `ifpip` method.
* **\[Android]** Fixed collision for command line tools (like ping) invoked without absolute path ([Github issue #41](https://github.com/talsec/Free-RASP-ReactNative/issues/41)).

### Version 6.6.0

#### New Feature

* Added new threat `Threat.systemVPN` for VPN detection.
* Added new callback `onSystemVPN` in `ThreatCallback` for handling `Threat.systemVPN` threat.
* **\[Android]** Added a new threat detection feature, `Threat.devMode`, to identify Developer mode.
* **\[Android]** Added a new callback `onDevMode` in `ThreatCallback` for handling `Threat.devMode` threat.

#### Improvement

* Increased minimal Dart SDK version to **2.18.0** and minimal Flutter version to **3.3.0**
* Updated the CA bundle to enhance security for secure connections.
* **\[Android]** Increased the version of the GMS dependency
* **\[iOS]** Passcode check is now performed periodically.

#### Bug Fix

* Resolved a problem in logging caused by the device’s default system locale

### Version 6.5.1

#### Improvement

* **\[Android]** New Talsec SDK artifact hosting - better stability and availibility.

### Version 6.5.0

#### New Feature

* **\[iOS]** Added Privacy Manifest.
* **\[iOS]** Added codesigning for the SDK, it is signed by:
  * Team ID: `ASQC376HCN`,
  * Team Name: `AHEAD iTec, s.r.o.`.

#### Improvement

* Updated `CURL` to `8.5.0` and `OpenSSL` to `1.1.1w`.
* **\[Android]** Improved *appIntegrity* check and its logging.
* **\[iOS]** Improved obfuscation of Swift and C strings.

#### Bug Fix

* **\[Android]** Fixed issue with disappearing threats when the app is quickly put into the background and then back to the foreground (resolves [issue #91](https://github.com/talsec/Free-RASP-Flutter/issues/91)).
* **\[Android]** Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).

### Version 6.4.0

#### Improvement

* Improved reaction obfuscation.
* **\[iOS]** Improved obfuscation of the iOS SDK.
* **\[iOS]** Raised supported Xcode version to 14.3.1 .

#### Bug Fix

* **\[Android]** Fixed ProviderException.
* Fixed typo in namespace which caused incompatibility with AGP 8.0 .

Curious about more in-depth changes for Flutter? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-Flutter/releases) for the complete history of updates!
{% endtab %}

{% tab title="React Native" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-ReactNative/releases>

### Latest Version: 5.2.1

#### Fixed

* **\[Android]** Fixed the reporting issue in root detection
* **\[Android]** Fixed the reporting issue in hook detection
* **\[Android]** Fixed ANR during SDK initialization caused by blocking I/O operations
* **\[Android]** Fixed background SDK initialization stalling when the shared thread pool is saturated

### Version: 5.2.0

#### Added

* Added `bootloader` callback for detecting an unlocked or compromised bootloader (Android only)
* **\[Android]** Added bootloader detection (unlocked/compromised) with `onBootloader()` callback
* **\[Android]** Added option to fetch JitPack dependencies from our own Talsec repository

#### Changed

* **\[Android]** Improved KernelSU detection
* **\[Android]** Improved hook detection
* **\[Android]** Improved Frida detection
* **\[Android]** Improved root detection capabilities
* **\[iOS]** Improved jailbreak detection

#### Fixed

* **\[Android]** Fixed native crash caused by std::terminate() race condition
* **\[Android]** Fixed periodic hook and root check overwriting
* **\[Android]** Fixed crash inside AppZygotePreload during root detection
* **\[Android]** Fixed root detection crash in obfuscated release builds
* **\[Android]** Fixed hardware-backed keystore detection failing with `NoSuchMethodError` on some Android 12+ devices

### Version: 5.1.1

#### Fixed

* Fixed missing files in the published npm package

### Version: 5.1.0

#### Added

* Added Swift Package Manager delivery of `TalsecRuntime`, enabled by default for Expo projects and available as an opt-in for bare React Native 0.75 or newer projects
* Added the Expo config plugin option `ios.useSpm`; set it to `false` to use the vendored XCFramework fallback
* **\[iOS]** Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks
* **\[iOS]** Improved hook detection

#### Fixed

* Fixed identifier retrieval after React Native context reinitialization ([#152](https://github.com/talsec/Free-RASP-ReactNative/issues/152))
* **\[iOS]** Fixed issue with app's color scheme initialization
* **\[iOS]** Fixed bad memory access in jailbreak check

### Version: 5.0.0

#### Breaking

* ❗️Breaking: `SuspiciousAppInfo.reason` (`string`) renamed to `reasons` (`string[]`)
* ❗️Breaking: Value `"blacklist"` in `reasons` renamed to `"blocklist"`
* ❗️Breaking: Removed `MalwareConfig` and `AndroidConfig.malwareConfig`

#### Added

* **\[Android]** New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection
* **\[Android]** New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection`

#### Removed

* Removed `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field

#### Changed

* **\[Android]** Fine-tuned location spoofing detection
* **\[Android]** Modified malware incident log structure for better aggregation

#### Fixed

* **\[Android]** Fixed `VerifyError` caused by `JaCoCo` bytecode instrumentation
* **\[Android]** Fixed a potential cause of crash in the multi-instance detector
* **\[Android]** Fixed Java interoperability of `ScreenProtector` methods
* **\[Android]** Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

### Version: 4.5.2

#### Changed

* Enhanced event dispatchers logic

#### Fixed

* **\[iOS]** Fixed new jailbreak checks false positives on iOS 14 and 13
* **\[iOS]** Fixed false positives with jailbreak on iOS 15 and 16
* **\[iOS]** Fixed issue with app crashing on screenshot/screen recording
* **\[iOS]** Fixed retrigger jailbreak issue on iOS 15 and 16

### Version: 4.5.1

#### Fixed

* Fixed case where event dispatchers on Android were not initialized before calling `onResume` at the app launch

### Version: 4.5.0

#### Added

* **\[Android]** Added support for `KernelSU` to the existing root detection capabilities
* **\[Android]** Added support for `HMA` to the existing root detection capabilities
* **\[Android]** Added new malware detection capabilities
* **\[Android]** Added `onAutomationDetected()` callback to `ThreatDetected` interface — introducing a new capability, detecting whether the device is being automated using tools like Appium
* **\[Android]** Added value restrictions to `externalId` — `storeExternalId()` now returns `ExternalIdResult`, indicating `Success` or `Error` when `externalId` violates restrictions
* **\[iOS]** Added time spoofing detection, detecting an inaccurate device clock. It is a new threat `timeSpoofing`

#### Changed

* Updated the internal handling of `ExternalIdResult` on Android (for `storeExternalId()` method)
* **\[Android]** Removed unused library `tmlib`
* **\[Android]** Refactoring of signature verification code
* **\[Android]** Updated compile and target API to 36
* **\[Android]** Improved root detection capabilities
* **\[Android]** Detection of wireless ADB added to ADB detections
* **\[iOS]** Improved jailbreak detection methods

#### Fixed

* **\[Android]** Fixed exception handling for the KeyStore `getEntry` operation
* **\[Android]** Fixed issue in `ScreenProtector` concerning the `onScreenRecordingDetected` invocations
* **\[Android]** Merged internal shared libraries into a single one, reducing the final APK size
* **\[Android]** Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
* **\[Android]** Fixed manifest queries merge

### Version: 4.4.0

#### Added

* Added cache for freeRASP callbacks when listener is not registered with the app
* Added API for `automation` callback into `ThreatEventActions` (Android only)

#### Changed

* Updated compile and target SDK versions to 36 on Android
* Higher `compileSdk` from `[rootProject, plugin]` is now used in `build.gradle` on Android

#### Fixed

* Prevent multiple registration of the freeRASP listeners on the native side

#### Version: 4.3.2

#### React Native

**Fixed**

* Resolved potential NullPointerException when execution state events are being sent

### Version: 4.3.1

#### React Native

**Fixed**

* Resolved duplicate classes error on iOS [(issue #128)](https://github.com/talsec/Free-RASP-ReactNative/issues/128)

### Version: 4.3.0

#### React Native

**Added**

* Added `killOnBypass` to `TalsecConfig` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* Added API for `timeSpoofing` callback into `ThreatEventActions` (Android only)
* Added API for `unsecureWifi` callback into `ThreatEventActions` (Android only)
* Added API for `allChecksFinished` callback into new `RaspExecutionStateEventActions` object
* Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`

**Fixed**

* Resolved potential collision in threat identifiers

#### Android

**Added**

* Added `killOnBypass` method to the `TalsecConfig.Builder` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker [Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65)
* We are introducing a new capability, detecting whether the device time has been tampered with (`timeSpoofing`)
* We are introducing a new capability, detecting whether the location is being spoofed on the device (`locationSpoofing`)
* We are introducing a new capability, detection of unsecure WiFi (`unecureWifi`)
* Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)
* Added new `RaspExecutionState` which contains `onAllChecksFinished()` method, which is triggered after all checks are completed.
* Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* New option to start Talsec, `Talsec.start()` takes new parameter `TalsecMode` that determines the dispatcher thread of initialization and sync checks (uses background thread by default)
* Capability to check if another app has an option `REQUEST_INSTALL_PACKAGES` enabled in the system settings to malware detection

**Fixed**

* ANR issue caused by `registerScreenCaptureCallback()` method on the main thread
* `NullPointerException` when checking key alias in Keystore on Android 7
* `JaCoCo` issue causing `MethodTooLargeException` during instrumentation
* `DeadApplicationException` when calling `Settings.Global.getInt` or `Settings.Secure.getInt` on invalid context
* `AndroidKeyStore` crashes causing `java.util.concurrent.TimeoutException` when calling `finalize()` method on `Cipher` (GC issues)
* Fixed issue with late initializers and `TalsecMode` coroutines scopes

**Changed**

* Shortened the value of threat detection interval
* Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading
* Update of internal dependencies and security libraries

#### iOS

**Changed**

* Updated internal dependencies

### Version: 4.2.4

#### React Native

**Fixed**

* iOS dependencies are now installed via `install_modules_dependencies` by default

### Version: 4.2.3

#### Android

**Fixed**

* Root detection related bugs causing false positives

**Changed**

* Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)

### Version: 4.2.2

**Changed**

* Replaced deprecated `getCurrentActivity()` call on Android (compatibility with RN 0.81+)

### Version: 4.2.1

**Fixed**

* Possible conflict with other packages during proguard code minification

#### Android

**Fixed**

* Issue with empty `SharedPreferences` files

**Changed**

* Decreased version of `Kotlin` to `2.0.0`

### Version: 4.2.0

#### New Feature

* Added interface for multi-instance detection

#### Improvement

* **\[iOS]** Added palera1n jailbreak detection
* **\[iOS]** Improved Dopamine jailbreak detection
* **\[Android]** Improved emulator detection
* **\[Android]** Added support for 16 KB pages

#### Fixed

* **\[iOS]** Resolved memory-related stability issues
* **\[Android]** Removed malware report duplicates

### Version: 4.1.0

#### New feature

* Added interface for screenshot / screen recording blocking on iOS.

**Improvements**

* Added interface for external ID storage.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
* **\[Android]** New root detection checks added.

**Fixed**

* **\[iOS]** Resolved an issue with the screen recording detection.
* **\[iOS]** Resolved an issue that prevented Xcode tests from running correctly.

### Version 4.0.0

#### **Changed**

* Android SDK requires `kotlin_version` >= `2.0.0`&#x20;
* Set Java version to 17
* **\[Android]** Compile API increased to 35, dependencies updated
* **\[Android]** Internal library obfuscation reworked
* **\[Android]** Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)
* **\[iOS]** Improvement of the obfuscation of the SDK
* **\[iOS]** Deep signing of the OpenSSL binaries

#### **Fixed**

* **\[Android]** ANR issues bug-fixing

### Version 3.14.0

#### New feature

* Added `screenshot` - detection of **screenshots**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `screenRecording` - detection of **screen recording**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `blockScreenCapture` for **FLAG\_SECURE** control, an **active protection against screen capturing.**
* Added `isScreenCaptureBlocked` - to receive whether the screen capture is blocked

#### **Changed**

* **\[Android]** Raised Android compileSDK level to 35

#### Improvement

* **\[Android]** Improved root detection

#### **Fixed**

* Compatibility issues with RN New Architecture
* **\[Android]** Added proguard rules for malware data serialization in release mode on Android
* **\[Android]** Proguard rules to address warnings from okhttp dependency

### Version 3.13.0

#### Improvement

* **\[Android]** Added request integrity information to data collection headers.
* **\[Android]** Enhanced and accelerated the data collection logic.

### Version 3.12.0

#### Improvement

* App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method.
* Parsing of malware data is now async.
* **\[Android]** Malware data is now parsed on background thread to improve responsiveness.

### Version 3.11.0

#### New features

* **\[Android]** `adbEnabled` callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

### Version 3.10.0

#### New features and improvements

* Added configuration fields for malware detection.
* **\[Android] Malware detection** as a new callback for enhanced app security.
* **\[Android]** Refactoring Magisk checks in the root detection.
* **\[iOS]** Enhanced security with [**Serotonin Jailbreak**](https://github.com/SerotoninApp/Serotonin) **Detection** to identify compromised devices.

**Maintenance**

* **\[iOS]** Updated SDK code signing; it will now be signed with:
  * Team ID: PBDDS45LQS
  * Team Name: Lynx SFT s.r.o.

### Version 3.9.3

#### Improvement

* **\[iOS]** Renewed the signing certificate.

### Version 3.9.2

#### Bug Fix

* **\[Android]** Reported ANR issues present on some devices were resolved ([GH Flutter issue #138](https://github.com/talsec/Free-RASP-Flutter/issues/138)).
* **\[Android]** Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved ([GH Flutter issue #140](https://github.com/talsec/Free-RASP-Flutter/issues/140)).
* **\[Android]** Reported crashes caused by the UnsupportedOperationException were resolved.

### Version 3.9.1

#### Bug Fix

* **\[Android]** False positives for hook detection.

### Version 3.9.0

#### New Feature

* **\[Android]** Added the auditing of the internal execution for the future check optimization and overall security improvements.
* **\[iOS]** [Dopamine](https://github.com/opa334/Dopamine) jailbreak detection.

#### Improvement

* Improved error messages when validation of the freeRASP configuration fails.
* Updated `CURL` to `8.8.0` and `OpenSSL` to `3.0.14` ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114)).
* **\[Android]** Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.
* **\[Android]** Refactored fetching the list of installed applications for root and hook detection.

#### Bug Fix

* Fixed incorrect path to types in `package.json`.
* **\[Android]** Fixed native crashes (SEGFAULT errors) in `ifpip` method.
* **\[Android]** Fixed collision for command line tools (like ping) invoked without absolute path ([Github issue #41](https://github.com/talsec/Free-RASP-ReactNative/issues/41)).

### Version 3.8.2

#### Improvement

* Updated proguard rules to resolve build issues in RN 0.75.x.

### Version 3.8.0

#### New Feature

* Added a new threat `systemVPN` for VPN detection.
* **\[Android]** Added a new threat `devMode` for Developer mode detection.

#### Improvement

* Updated the CA bundle to enhance security for secure connections.
* **\[Android]** Updated the GMS dependency to a newer version for improved performance and compatibility.
* **\[iOS]** Enhanced and accelerated the data collection logic.
* **\[iOS]** Passcode check is now performed periodically.

#### Bug Fix

* Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.
* **\[Android]** Fixed proguard warning in specific versions of RN.

### Version 3.7.2

#### Improvement

* Updated expo config plugin to fix release build issue in `RN 0.73`.

### Version 3.7.1

#### Improvement

* **\[Android]** Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

#### Bug Fix

* **\[Android]** Fixed compatibility issues with `RN < 0.63`.

### Version 3.7.0

#### New Feature

* Added support for apps built with Expo SDK.
* **\[iOS]** Added Privacy Manifest.
* **\[iOS]** Added codesigning for the SDK, it is signed by:
  * Team ID: `ASQC376HCN`,
  * Team Name: `AHEAD iTec, s.r.o.`.

#### Improvement

* Updated `CURL` to `8.5.0` and `OpenSSL` to `1.1.1w`.
* **\[Android]** Shortened duration of threat evaluation.
* **\[Android]** Improved *appIntegrity* check and its logging.
* **\[iOS]** Improved obfuscation of Swift and C strings.

#### Bug Fix

* **\[Android]** Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).
* **\[iOS]** Fixed memory leak ([freeRASP iOS issue #13](https://github.com/talsec/Free-RASP-iOS/issues/13)).

Curious about more in-depth changes for React Native? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-ReactNative/releases) for the complete history of updates!
{% endtab %}

{% tab title="Cordova" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-Cordova/releases>

### Latest Version: 9.1.1

#### Fixed

* **\[Android]** Fixed the reporting issue in root detection
* **\[Android]** Fixed the reporting issue in hook detection
* **\[Android]** Fixed ANR during SDK initialization caused by blocking I/O operations
* **\[Android]** Fixed background SDK initialization stalling when the shared thread pool is saturated

### Version: 9.1.0

#### Added

* `bootloader` threat callback, reporting an unlocked or compromised bootloader — Android only
* **\[Android]** Added bootloader detection (unlocked/compromised) with `onBootloader()` callback
* **\[Android]** Added option to fetch JitPack dependencies from our own Talsec repository (`https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common`)
* **\[iOS]** Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks

#### Changed

* **\[Android]** Improved KernelSU detection
* **\[Android]** Improved hook detection
* **\[Android]** Improved Frida detection
* **\[Android]** Improved root detection capabilities
* **\[iOS]** Improved jailbreak detection
* **\[iOS]** Improved hook detection

#### Fixed

* **\[Android]** Fixed native crash caused by std::terminate() race condition
* **\[Android]** Fixed periodic hook and root check overwriting
* **\[Android]** Fixed root detection crash in obfuscated release builds
* **\[Android]** Fixed hardware-backed keystore detection failing with `NoSuchMethodError` on some Android 12+ devices
* **\[iOS]** Fixed issue with app's color scheme initialization
* **\[iOS]** Fixed bad memory access in jailbreak check

### Version: 9.0.0

#### Breaking

* ❗️Breaking: `SuspiciousAppInfo.reason` (`string`) renamed to `reasons` (`string[]`)
* ❗️Breaking: Value `"blacklist"` in `reasons` renamed to `"blocklist"`
* ❗️Breaking: Removed `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field
* ❗️Breaking: `SuspiciousAppDetectionConfig.malwareScanScope` and `reasonMode` are now required

#### Removed

* Removed `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field

#### Added

* **\[Android]** New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection
* **\[Android]** New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection`

#### Changed

* **\[Android]** Fine-tuned location spoofing detection
* **\[Android]** Modified malware incident log structure for better aggregation

#### Fixed

* **\[Android]** Fixed `VerifyError` caused by `JaCoCo` bytecode instrumentation
* **\[Android]** Fixed a potential cause of crash in the multi-instance detector
* **\[Android]** Fixed Java interoperability of `ScreenProtector` methods
* **\[Android]** Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

### Version: 8.3.1

#### Fixed

* Fixed case where event dispatchers on Android were not initialized before calling `onResume` at the app launch
* **\[iOS]** Fixed new jailbreak checks false positives on iOS 14 and 13
* **\[iOS]** Fixed false positives with jailbreak on iOS 15 and 16
* **\[iOS]** Fixed issue with app crashing on screenshot/screen recording
* **\[iOS]** Fixed retrigger jailbreak issue on iOS 15 and 16

### Version: 8.3.0

#### Added

* Added cache for freeRASP callbacks when listener is not registered with the app
* Added API for `automation` callback into `ThreatEventActions` (Android only)
* **\[Android]** Added new detection check for KernelSU
* **\[Android]** Added support for `KernelSU` to the existing root detection capabilities
* **\[Android]** Added support for `HMA` to the existing root detection capabilities
* **\[Android]** Added new malware detection capabilities
* **\[Android]** Added `onAutomationDetected()` callback to `ThreatDetected` interface — introducing a new capability, detecting whether the device is being automated using tools like Appium
* **\[Android]** Added value restrictions to `externalId` — `storeExternalId()` now returns `ExternalIdResult`, indicating `Success` or `Error` when `externalId` violates restrictions
* **\[iOS]** Added time spoofing detection, detecting an inaccurate device clock. It is a new threat `timeSpoofing`

#### Changed

* Updated compile and target SDK versions to 36 on Android
* Higher `compileSdk` from `[rootProject, plugin]` is now used in `build.gradle` on Android
* **\[Android]** Removed unused library `tmlib`
* **\[Android]** Refactoring of signature verification code
* **\[Android]** Updated compile and target API to 36
* **\[Android]** Improved root detection capabilities
* **\[Android]** Detection of wireless ADB added to ADB detections
* **\[iOS]** Improved jailbreak detection methods

#### Removed

* **\[Android]** Removed deprecated `monitoring` feature

#### Fixed

* Prevent multiple registration of the freeRASP listeners on the native side
* **\[Android]** Fixed memory management issues in the native code
* **\[Android]** Patched possibility of `getInstalledPackages` throwing `DeadSystemException`
* **\[Android]** Patched possibility of `getNetworkCapabilities` throwing `SecurityException`
* **\[Android]** Fixed well-known issue of `Cipher.init` throwing `KeyStoreConnectException`
* **\[Android]** Fixed exception handling for the KeyStore `getEntry` operation
* **\[Android]** Fixed issue in `ScreenProtector` concerning the `onScreenRecordingDetected` invocations
* **\[Android]** Merged internal shared libraries into a single one, reducing the final APK size
* **\[Android]** Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
* **\[Android]** Fixed manifest queries merge

### Version: 8.2.0

#### Added

* Added `killOnBypass` to `TalsecConfig` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* Added API for `timeSpoofing` callback into `ThreatEventActions` (Android only)
* Added API for `unsecureWifi` callback into `ThreatEventActions` (Android only)
* Added API for `allChecksFinished` callback into new `RaspExecutionStateEventActions` object
* Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* **\[Android]** Added `killOnBypass` method to the `TalsecConfig.Builder` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* **\[Android]** We are introducing a new capability, detecting whether the device time has been tampered with (`timeSpoofing`)
* **\[Android]** We are introducing a new capability, detecting whether the location is being spoofed on the device (`locationSpoofing`)
* **\[Android]** We are introducing a new capability, detection of unsecure WiFi (`unecureWifi`)
* **\[Android]** Added new `RaspExecutionState` which contains `onAllChecksFinished()` method, which is triggered after all checks are completed
* **\[Android]** Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* **\[Android]** New option to start Talsec, `Talsec.start()` takes new parameter `TalsecMode` that determines the dispatcher thread of initialization and sync checks (uses background thread by default)
* **\[Android]** Capability to check if another app has an option `REQUEST_INSTALL_PACKAGES` enabled in the system settings to malware detection

#### Changed

* Changed deprecated `initialize` for `pluginInitialize` on Android
* Improved the RASP listener registration
* **\[Android]** Shortened the value of threat detection interval
* **\[Android]** Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading
* **\[Android]** Update of internal dependencies and security libraries
* **\[iOS]** Updated internal dependencies

#### Removed

* **\[Android]** Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)

#### Fixed

* Resolved potential collision in threat identifiers
* **\[Android]** ANR issue caused by `registerScreenCaptureCallback()` method on the main thread
* **\[Android]** `NullPointerException` when checking key alias in Keystore on Android 7
* **\[Android]** `JaCoCo` issue causing `MethodTooLargeException` during instrumentation
* **\[Android]** `DeadApplicationException` when calling `Settings.Global.getInt` or `Settings.Secure.getInt` on invalid context
* **\[Android]** `AndroidKeyStore` crashes causing `java.util.concurrent.TimeoutException` when calling `finalize()` method on `Cipher` (GC issues)
* **\[Android]** Fixed issue with late initializers and `TalsecMode` coroutines scopes

### Version: 8.1.1

#### Android

**Fixed**

* Issue with empty `SharedPreferences` files

**Changed**

* Decreased version of `Kotlin` to `2.0.0`

### Version: 8.1.0

#### New Feature

* Added interface for multi-instance detection

#### Improvement

* **\[iOS]** Added palera1n jailbreak detection
* **\[iOS]** Improved Dopamine jailbreak detection
* **\[Android]** Improved emulator detection
* **\[Android]** Added support for 16 KB pages

#### Fixed

* **\[iOS]** Resolved memory-related stability issues
* **\[Android]** Removed malware report duplicates

### Version: 8.0.0

#### New feature

* Added interface for screenshot / screen recording blocking on iOS.

**Changed**

* Plugin now requires kotlin version >= 2.0.0.

**Improvements**

* Added interface for external ID storage.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
* **\[Android]** New root detection checks added.

**Fixed**

* **\[iOS]** Resolved an issue with the screen recording detection.
* **\[iOS]** Resolved an issue that prevented Xcode tests from running correctly.

### Version 7.4.1

#### **Changed**

* **\[Android]** Compile API increased to 35, dependencies updated
* **\[Android]** Internal library obfuscation reworked
* **\[Android]** Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)
* **\[iOS]** Improvement of the obfuscation of the SDK
* **\[iOS]** Deep signing of the OpenSSL binaries

#### **Fixed**

* **\[Android]** ANR issues bug-fixing

### Version 7.4.0

#### New feature

* Added `screenshot` - detection of **screenshots**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `screenRecording` - detection of **screen recording**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `blockScreenCapture` for **FLAG\_SECURE** control, an **active protection against screen capturing.**
* Added `isScreenCaptureBlocked` - to receive whether the screen capture is blocked

#### **Changed**

* **\[Android]** Set following required SDK versions for Android plugin:
  * **minSdkVersion** 23
  * **targetSdkVersion** to 35
  * **compileSdkVersion** to 35

#### Improvement

* **\[Android]** Improved root detection

#### **Fixed**

* **\[Android]** Proguard rules to address warnings from okhttp dependency

### Version 7.3.0

#### Improvement

* **\[Android]** Added request integrity information to data collection headers.
* **\[Android]** Enhanced and accelerated the data collection logic.

### Version 7.2.0

#### Improvement

* App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method.
* Parsing of malware data is now async.
* **\[Android]** Malware data is now parsed on background thread to improve responsiveness.

### Version 7.1.0

#### New features

* **\[Android]** `adbEnabled` callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

### Version 7.0.0

#### New features and improvements

* Added configuration fields for malware detection.
* **\[Android] Malware detection** as a new callback for enhanced app security.
* **\[Android]** Refactoring Magisk checks in the root detection.
* **\[iOS]** Enhanced security with [**Serotonin Jailbreak**](https://github.com/SerotoninApp/Serotonin) **Detection** to identify compromised devices.

**Maintenance**

* <mark style="color:red;">**BREAKING CHANGE:**</mark> New dependency is required to run freeRASP; add following plugin to `android/build.gradle`:

```gradle
plugins {
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.7.10'
}
```

* **\[iOS]** Updated SDK code signing; it will now be signed with:
  * Team ID: PBDDS45LQS
  * Team Name: Lynx SFT s.r.o.

#### Bug Fix

* **\[Android]** Resolved IllegalArgumentException caused by unregistering not registered receiver in `TalsecMonitoringReceiver`

### Version 6.3.3

#### Improvement

* **\[iOS]** Renewed the signing certificate.

### Version 6.3.2

#### Bug Fix

* **\[Android]** Reported ANR issues present on some devices were resolved ([GH Flutter issue #138](https://github.com/talsec/Free-RASP-Flutter/issues/138)).
* **\[Android]** Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved ([GH Flutter issue #140](https://github.com/talsec/Free-RASP-Flutter/issues/140)).
* **\[Android]** Reported crashes caused by the UnsupportedOperationException were resolved.

### Version 6.3.1

#### Bug Fix

* **\[Android]** False positives for hook detection.

### Version 6.3.0

#### New Feature

* **\[Android]** Added the auditing of the internal execution for the future check optimization and overall security improvements.
* **\[iOS]** [Dopamine](https://github.com/opa334/Dopamine) jailbreak detection.

#### Improvement

* Improved error messages when validation of the freeRASP configuration fails.
* Updated `CURL` to `8.8.0` and `OpenSSL` to `3.0.14` ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114)).
* **\[Android]** Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.
* **\[Android]** Refactored fetching the list of installed applications for root and hook detection.
* **\[iOS]** Enhanced and accelerated the data collection logic.

#### Bug Fix

* **\[Android]** Fixed native crashes (SEGFAULT errors) in `ifpip` method.
* **\[Android]** Fixed collision for command line tools (like ping) invoked without absolute path ([Github issue #41](https://github.com/talsec/Free-RASP-ReactNative/issues/41)).

### Version 6.2.0

#### New Feature

* Added a new threat `systemVPN` for VPN detection.
* **\[Android]** Added a new threat `devMode` for Developer mode detection.

#### Improvement

* Updated the CA bundle to enhance security for secure connections.
* **\[Android]** Updated the GMS dependency to a newer version for improved performance and compatibility.
* **\[iOS]** Passcode check is now performed periodically.

#### Bug Fix

* Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

### Version 6.1.3

#### Bug Fix

* Fixed BAD\_ACCESS error occurring in specific versions of `cordova-ios` plugin ([#28](https://github.com/talsec/Free-RASP-Cordova/issues/28)).

### Version 6.1.2

#### Bug Fix

* **\[Android]** Removed the talsec namespace that caused change of namespaces for whole app.
* **\[iOS]** Fixed issue causing app crash with lower versions of `cordova-ios` plugin.

### Version 6.1.1

#### Improvement

* **\[Android]** Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

Curious about more in-depth changes for Cordova? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-Cordova/releases) for the complete history of updates!
{% endtab %}

{% tab title="Capacitor" %}
**Github Changelog:** <https://github.com/talsec/Free-RASP-Capacitor/releases>

### Latest Version: 3.2.1

#### Fixed

* **\[Android]** Fixed the reporting issue in root detection
* **\[Android]** Fixed the reporting issue in hook detection
* **\[Android]** Fixed ANR during SDK initialization caused by blocking I/O operations
* **\[Android]** Fixed background SDK initialization stalling when the shared thread pool is saturated

### Version: 3.2.0

#### Added

* `bootloader` threat callback, reporting an unlocked or compromised bootloader — Android only
* **\[Android]** Added bootloader detection (unlocked/compromised) with `onBootloader()` callback
* **\[Android]** Added option to fetch JitPack dependencies from our own Talsec repository (`https://europe-west3-maven.pkg.dev/talsec-artifact-repository/common`)

#### Changed

* **\[Android]** Improved KernelSU detection
* **\[Android]** Improved hook detection
* **\[Android]** Improved Frida detection
* **\[Android]** Improved root detection capabilities
* **\[iOS]** Improved jailbreak detection

#### Fixed

* **\[Android]** Fixed native crash caused by std::terminate() race condition
* **\[Android]** Fixed periodic hook and root check overwriting
* **\[Android]** Fixed root detection crash in obfuscated release builds
* **\[Android]** Fixed hardware-backed keystore detection failing with `NoSuchMethodError` on some Android 12+ devices

### Version: 3.1.0

#### Added

* Swift Package Manager support for iOS. CocoaPods remains supported as a fallback
* **\[iOS]** Added support for postponed checks, therefore, due to slower execution, some subchecks are run after initial startup checks
* **\[iOS]** Improved hook detection

#### Fixed

* **\[iOS]** Fixed issue with app's color scheme initialization
* **\[iOS]** Fixed bad memory access in jailbreak check

### Version: 3.0.0

#### Breaking

* ❗️Breaking: `SuspiciousAppInfo.reason` (`string`) renamed to `reasons` (`string[]`)
* ❗️Breaking: Value `"blacklist"` in `reasons` renamed to `"blocklist"`
* ❗️Breaking: Removed `TalsecMalwareConfig` and `TalsecAndroidConfig.malwareConfig`
* ❗️Breaking: `SuspiciousAppDetectionConfig.malwareScanScope` and `reasonMode` are now required

#### Added

* Added `SuspiciousAppDetectionConfig` for malware detection configuration
* **\[Android]** New API class `SuspiciousAppDetectionConfig` that can be used to configure malware detection
* **\[Android]** New API for malware detection configuration in `TalsecConfig`, see `TalsecConfig.Builder#suspiciousAppDetection`

#### Removed

* Removed `TalsecMalwareConfig` type and `TalsecAndroidConfig.malwareConfig` field

#### Changed

* **\[Android]** Fine-tuned location spoofing detection
* **\[Android]** Modified malware incident log structure for better aggregation

#### Fixed

* **\[Android]** Fixed `VerifyError` caused by JaCoCo bytecode instrumentation
* **\[Android]** Fixed a potential cause of crash in the multi-instance detector
* **\[Android]** Fixed Java interoperability of `ScreenProtector` methods
* **\[Android]** Fixed Kotlin classpath conflicts in SDK dependency resolution (Kotlin 2.0.0)

### Version: 2.5.1

#### Fixed

* Fixed case where event dispatchers on Android were not initialized before calling `onResume` at the app launch
* **\[iOS]** Fixed new jailbreak checks false positives on iOS 14 and 13
* **\[iOS]** Fixed false positives with jailbreak on iOS 15 and 16
* **\[iOS]** Fixed issue with app crashing on screenshot/screen recording
* **\[iOS]** Fixed retrigger jailbreak issue on iOS 15 and 16

### Version: 2.5.0

#### Added

* **\[Android]** Added support for `KernelSU` to the existing root detection capabilities
* **\[Android]** Added support for `HMA` to the existing root detection capabilities
* **\[Android]** Added new malware detection capabilities
* **\[Android]** Added `onAutomationDetected()` callback to `ThreatDetected` interface — introducing a new capability, detecting whether the device is being automated using tools like Appium
* **\[Android]** Added value restrictions to `externalId` — `storeExternalId()` now returns `ExternalIdResult`, indicating `Success` or `Error` when `externalId` violates restrictions
* **\[iOS]** Added time spoofing detection, detecting an inaccurate device clock. It is a new threat `timeSpoofing`

#### Changed

* Refactor the Android plugin to separate the logic for managing listener states
* **\[Android]** Removed unused library `tmlib`
* **\[Android]** Refactoring of signature verification code
* **\[Android]** Updated compile and target API to 36
* **\[Android]** Improved root detection capabilities
* **\[Android]** Detection of wireless ADB added to ADB detections
* **\[iOS]** Improved jailbreak detection methods

#### Fixed

* **\[Android]** Fixed exception handling for the KeyStore `getEntry` operation
* **\[Android]** Fixed issue in `ScreenProtector` concerning the `onScreenRecordingDetected` invocations
* **\[Android]** Merged internal shared libraries into a single one, reducing the final APK size
* **\[Android]** Fixed bug related to key storing in keystore type detection (hw-backed keystore check)
* **\[Android]** Fixed manifest queries merge

### Version: 2.4.1

#### Fixed

* Resolved potential NullPointerException when execution state events are being sent

### Version: 2.4.0

#### Added

* Added cache for freeRASP callbacks when listener is not registered with the app
* Added API for `automation` callback into `ThreatEventActions` (Android only)

#### Changed

* Updated compile and target SDK versions to 36 on Android

#### Fixed

* Prevent multiple registration of the freeRASP listeners on the native side

### Version: 2.3.0

#### New Feature

* **\[Android]** Added `killOnBypass` to `TalsecConfig` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* Added API for `timeSpoofing` callback into `ThreatEventActions` (Android only)
* Added API for `unsecureWifi` callback into `ThreatEventActions` (Android only)
* Added API for `allChecksFinished` callback into new `RaspExecutionStateEventActions` object
* **\[Android]** Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`

#### Improvement

* **\[Android]** Added `killOnBypass` method to the `TalsecConfig.Builder` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker [Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65)
* We are introducing a new capability, detecting whether the device time has been tampered with (`timeSpoofing`)
* We are introducing a new capability, detecting whether the location is being spoofed on the device (`locationSpoofing`)
* We are introducing a new capability, detection of unsecure WiFi (`unecureWifi`)
* Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)
* Added new `RaspExecutionState` which contains `onAllChecksFinished()` method, which is triggered after all checks are completed.
* **\[Android]** Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* **\[Android]** New option to start Talsec, `Talsec.start()` takes new parameter `TalsecMode` that determines the dispatcher thread of initialization and sync checks (uses background thread by default)
* **\[Android]** Capability to check if another app has an option `REQUEST_INSTALL_PACKAGES` enabled in the system settings to malware detection

#### Changed

* **\[Android]** Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)
* **\[Android]** Shortened the value of threat detection interval
* **\[Android]** Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading
* **\[Android]** Update of internal dependencies and security libraries
* **\[iOS]** Updated internal dependencies

#### Fixed

* **\[Android]** Resolved potential collision in threat identifiers
* **\[Android]** Root detection related bugs causing false positives
* **\[Android]** ANR issue caused by `registerScreenCaptureCallback()` method on the main thread
* **\[Android]** `NullPointerException` when checking key alias in Keystore on Android 7
* **\[Android]** `JaCoCo` issue causing `MethodTooLargeException` during instrumentation
* **\[Android]** `DeadApplicationException` when calling `Settings.Global.getInt` or `Settings.Secure.getInt` on invalid context
* **\[Android]** `AndroidKeyStore` crashes causing `java.util.concurrent.TimeoutException` when calling `finalize()` method on `Cipher` (GC issues)
* **\[Android]** Fixed issue with late initializers and `TalsecMode` coroutines scopes

### Version: 2.2.2

#### New Feature

* **\[Android]** Added `killOnBypass` to `TalsecConfig` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker (Android only) ([Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65))
* Added API for `timeSpoofing` callback into `ThreatEventActions` (Android only)
* Added API for `unsecureWifi` callback into `ThreatEventActions` (Android only)
* Added API for `allChecksFinished` callback into new `RaspExecutionStateEventActions` object
* **\[Android]** Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`

#### Improvement

* **\[Android]** Added `killOnBypass` method to the `TalsecConfig.Builder` that configures if the app should be terminated when the threat callbacks are suppressed/hooked by an attacker [Issue 65](https://github.com/talsec/Free-RASP-Android/issues/65)
* We are introducing a new capability, detecting whether the device time has been tampered with (`timeSpoofing`)
* We are introducing a new capability, detecting whether the location is being spoofed on the device (`locationSpoofing`)
* We are introducing a new capability, detection of unsecure WiFi (`unecureWifi`)
* Removed deprecated functionality `Pbkdf2Native` and both related native libraries (`libpbkdf2_native.so` and `libpolarssl.so`)
* Added new `RaspExecutionState` which contains `onAllChecksFinished()` method, which is triggered after all checks are completed.
* **\[Android]** Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
* **\[Android]** New option to start Talsec, `Talsec.start()` takes new parameter `TalsecMode` that determines the dispatcher thread of initialization and sync checks (uses background thread by default)
* **\[Android]** Capability to check if another app has an option `REQUEST_INSTALL_PACKAGES` enabled in the system settings to malware detection

#### Changed

* **\[Android]** Deprecated Nexus repository removed (GCP artifact registry is the main supported distribution repository)
* **\[Android]** Shortened the value of threat detection interval
* **\[Android]** Refactoring of internal architecture of SDK that newly uses Coroutines to manage threading
* **\[Android]** Update of internal dependencies and security libraries
* **\[iOS]** Updated internal dependencies

#### Fixed

* **\[Android]** Resolved potential collision in threat identifiers
* **\[Android]** Root detection related bugs causing false positives
* **\[Android]** ANR issue caused by `registerScreenCaptureCallback()` method on the main thread
* **\[Android]** `NullPointerException` when checking key alias in Keystore on Android 7
* **\[Android]** `JaCoCo` issue causing `MethodTooLargeException` during instrumentation
* **\[Android]** `DeadApplicationException` when calling `Settings.Global.getInt` or `Settings.Secure.getInt` on invalid context
* **\[Android]** `AndroidKeyStore` crashes causing `java.util.concurrent.TimeoutException` when calling `finalize()` method on `Cipher` (GC issues)
* **\[Android]** Fixed issue with late initializers and `TalsecMode` coroutines scopes

### Version: 2.2.1

#### Changed

* **\[Android]** Issue with empty `SharedPreferences` files

#### Fixed

* **\[Android]** Decreased version of `Kotlin` to `2.0.0`

### Version: 2.2.0

#### New Feature

* Added interface for multi-instance detection

#### Improvement

* **\[iOS]** Added palera1n jailbreak detection
* **\[iOS]** Improved Dopamine jailbreak detection
* **\[Android]** Improved emulator detection
* **\[Android]** Added support for 16 KB pages

#### Fixed

* **\[iOS]** Resolved memory-related stability issues
* **\[Android]** Removed malware report duplicates

### Version: 2.1.0

#### New feature

* Added interface for screenshot / screen recording blocking on iOS.

#### **Improvements**

* Added interface for external ID storage.
* Added eventId to the logs, which is unique per each log. It allows traceability of the same log across various systems.
* **\[Android]** New root detection checks added.

#### **Fixed**

* **\[iOS]** Resolved an issue with the screen recording detection.
* **\[iOS]** Resolved an issue that prevented Xcode tests from running correctly.

### Version 2.0.0

#### **Changed**

* Android SDK requires `kotlin_version` >= `2.0.0`&#x20;
* **\[Android]** Compile API increased to 35, dependencies updated
* **\[Android]** Internal library obfuscation reworked
* **\[Android]** Root detection divided into 2 parts (quick initial checks, and time-demanding asynchronous post checks)
* **\[iOS]** Improvement of the obfuscation of the SDK
* **\[iOS]** Deep signing of the OpenSSL binaries

#### **Fixed**

* **\[Android]** ANR issues bug-fixing

### Version 1.10.0

#### New feature

* Added `screenshot` - detection of **screenshots**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `screenRecording` - detection of **screen recording**, refer to the [freeRASP integration documentation](https://docs.talsec.app/freerasp/integration/flutter).
* Added `blockScreenCapture` for **FLAG\_SECURE** control, an **active protection against screen capturing.**
* Added `isScreenCaptureBlocked` - to receive whether the screen capture is blocked

#### **Changed**

* **\[Android]** Raised Android compileSDK level to 35
* **\[Android]** Set minifyEnabled in plugin to true implicitly

#### Improvement

* **\[Android]** Improved root detection

#### **Fixed**

* **\[Android]** Proguard rules to address warnings from okhttp dependency

### Version 1.9.0

#### Improvement

* **\[Android]** Added request integrity information to data collection headers.
* **\[Android]** Enhanced and accelerated the data collection logic.

### Version 1.8.0

#### Improvement

* App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method.
* Parsing of malware data is now async.
* **\[Android]** Malware data is now parsed on background thread to improve responsiveness.

### Version 1.7.0

#### New features

* **\[Android]** `adbEnabled` callback, allowing you to detect USB debugging option enabled in the developer settings on the device.

### Version 1.6.0

#### New features

* Added configuration fields for malware detection.
* **\[Android] Malware detection** as a new callback for enhanced app security.
* **\[Android]** Refactoring Magisk checks in the root detection.
* **\[iOS]** Enhanced security with [**Serotonin Jailbreak**](https://github.com/SerotoninApp/Serotonin) **Detection** to identify compromised devices.

**Maintenance**

* **\[iOS]** Updated SDK code signing; it will now be signed with:
  * Team ID: PBDDS45LQS
  * Team Name: Lynx SFT s.r.o.

**Bug Fix**

* Resolved compatibilty issues with JDK 21 [(issue #21)](https://github.com/talsec/Free-RASP-Capacitor/issues/21)

### Version 1.5.3

#### Improvement

* **\[iOS]** Renewed the signing certificate.

### Version 1.5.2

#### Bug Fix

* **\[Android]** Reported ANR issues present on some devices were resolved ([GH Flutter issue #138](https://github.com/talsec/Free-RASP-Flutter/issues/138)).
* **\[Android]** Reported crashes caused by ConcurrentModificationException and NullPointerException were resolved ([GH Flutter issue #140](https://github.com/talsec/Free-RASP-Flutter/issues/140)).
* **\[Android]** Reported crashes caused by the UnsupportedOperationException were resolved.

### Version 1.5.1

#### Bug Fix

* **\[Android]** False positives for hook detection.

### Version 1.5.0

#### New Feature

* **\[Android]** Added the auditing of the internal execution for the future check optimization and overall security improvements.
* **\[iOS]** [Dopamine](https://github.com/opa334/Dopamine) jailbreak detection.

#### Improvement

* Improved error messages when validation of the freeRASP configuration fails.
* Updated `CURL` to `8.8.0` and `OpenSSL` to `3.0.14` ([Github issue #114](https://github.com/talsec/Free-RASP-Flutter/issues/114)).
* **\[Android]** Changed the way TalsecConfig is created, we introduced a Builder pattern to make the process more streamlined and readable.
* **\[Android]** Refactored fetching the list of installed applications for root and hook detection.
* **\[iOS]** Enhanced and accelerated the data collection logic.

#### Bug Fix

* **\[Android]** Fixed native crashes (SEGFAULT errors) in `ifpip` method.
* **\[Android]** Fixed collision for command line tools (like ping) invoked without absolute path ([Github issue #41](https://github.com/talsec/Free-RASP-ReactNative/issues/41)).

### Version 1.4.0

#### New Feature

* Added a new threat `systemVPN` for VPN detection.
* **\[Android]** Added a new threat `devMode` for Developer mode detection.

#### Improvement

* Updated the CA bundle to enhance security for secure connections.
* **\[Android]** Updated the GMS dependency to a newer version for improved performance and compatibility.
* **\[iOS]** Passcode check is now performed periodically.

#### Bug Fix

* Resolved a problem with displaying the Arabic alphabet in logs caused by the device’s default system locale.

### Version 1.3.1

#### Improvement

* **\[Android]** Updated freeRASP SDK artifact hosting ensuring better stability and availibility.

### Version 1.3.0

#### New Feature

* **\[iOS]** Added Privacy Manifest.
* **\[iOS]** Added codesigning for the SDK, it is signed by:
  * Team ID: `ASQC376HCN`,
  * Team Name: `AHEAD iTec, s.r.o.`.

#### Improvement

* Updated `CURL` to `8.5.0` and `OpenSSL` to `1.1.1w`.
* **\[Android]** Shortened duration of threat evaluation.
* **\[Android]** Improved *appIntegrity* check and its logging.
* **\[iOS]** Improved obfuscation of Swift and C strings.

#### Bug Fix

* **\[Android]** Fixed a native crash bug during one of the native root checks (detected after NDK upgrade).
* **\[iOS]** Fixed memory leak ([freeRASP iOS issue #13](https://github.com/talsec/Free-RASP-iOS/issues/13))

### Version 1.2.1

* **\[Android]** Fixed bug that prevented firing callbacks in specific situations.
* **\[iOS]** Fixed bug that caused app being killed in specific situations ([#42](https://github.com/talsec/Free-RASP-ReactNative/issues/42)).

Curious about more in-depth changes for Capacitor? Head over to our [GitHub Changelog](https://github.com/talsec/Free-RASP-Capacitor/releases) for the complete history of updates!
{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.talsec.app/freerasp/freerasp/whats-new-and-changelog.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
