Skip to content

release: freeRASP 4.4.0#139

Open
tompsota wants to merge 9 commits intomasterfrom
rc/4.4.0
Open

release: freeRASP 4.4.0#139
tompsota wants to merge 9 commits intomasterfrom
rc/4.4.0

Conversation

@tompsota
Copy link
Member

@tompsota tompsota commented Feb 6, 2026

What's new

Describe the PR shortly

PR checklist

In-app checks:

  • callbacks are received
  • dev/prod switch works
  • README.md is updated (if applicable)
  • expo plugin is updated (if applicable)
  • example app is working

Pre-release checks:

  • CHANGELOG.md is updated
  • package.json version is increased
  • release label is applied on PR

To be checked by maintainers:

  • freeRASP logs are received
  • sdkVersion property in logs is correct
  • sdkPlatform property in logs is correct

Resolved issues

list of issues resolved by this PR
closes #136

@tompsota tompsota requested a review from martinzigrai February 6, 2026 10:11
@tompsota tompsota added the release Create release after merging this PR label Feb 6, 2026
Copy link
Contributor

@martinzigrai martinzigrai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! 🚀 The logic seems solid. I just found a few spots that need a bit of polish. Left some comments below. 👇

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:17.0.1"
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:18.0.1"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have 18.0.2, could you please use that version?

}
}

private fun flushCache(registeredListener: WrapperExecutionStateListener) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a suggestion 👀: Invoking the listener inside the synchronized block can lead to deadlocks. It might be safer to copy the events to a local list, clear the cache, and then dispatch them outside the lock.

}
}

private fun flushCache(registeredListener: WrapperThreatListener) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as in ExecutionStateDispatcher.

@@ -218,17 +241,17 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex

@ReactMethod
fun storeExternalId(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Talsec.storeExternalId method now enforces value restrictions (regex) and returns an ExternalIdResult instead of void. Your current implementation ignores this return value and always resolves the promise with "OK". This means if an invalid externalId is passed, the native side will reject it, but the React Native app will incorrectly think it was saved successfully.

};
eventsListener = eventEmitter.addListener(channel, listener);
eventsListener = eventEmitter.addListener(executionStateChannel, listener);
isInitializing = false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If await removeRaspExecutionStateEventListener() or data fetching throws an error, isInitializing will remain true forever, blocking subsequent calls. I suggest wrapping the logic in a try { ... } finally { isInitializing = false; } block to ensure the lock is always released.

};
eventsListener = eventEmitter.addListener(channel, listener);
eventsListener = eventEmitter.addListener(threatChannel, listener);
isInitializing = false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as in raspExecutionState.ts‎

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Create release after merging this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] ObjectAlreadyConsumedException: Array already consumed in getThreatIdentifiers (Release build only)

2 participants