Academy integration (proof of concept) #3499
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR provides a proof-of-concept implementation for integrating the App-Learning Academy inside Blink Wallet using react-native-webview.
The purpose is a security review so the Blink team can verify how the academy is embedded, how data is passed, and how potential attack vectors are mitigated.
Out of Scope (to be addressed later)
❌ UI behavior (e.g. hiding/showing bottom bar, safe area handling, dark mode)
❌ Reuse of the existing wallet WebView component
Security Documentation
Before reviewing the code, please read our WebView Security Guide.
It explains the security measures that sandbox the academy from the rest of the application, including:
How to Run the Integration
In academy-screen.tsx, replace the placeholder with your token:
const jwtToken = '[PUT YOUR JWT TOKEN HERE]'
Summary
This PoC demonstrates how the academy can be integrated securely inside the Blink Wallet.
It shows that:
✅ User sessions are bound via short-lived JWTs.
✅ The WebView is sandboxed and locked down.
✅ The message bridge is hardened against injection or spoofing.
✅ External navigation and script injection are prevented.
Addendum: Eager Loading on iOS
Using
enableScreens(false)
allows us on iOS to eagerly load the Academy tab. Without it, the Academy tab would only load once the user clicks on it, resulting in a slight delay. We can safely set this option to false, as it is primarily intended for navigation-heavy apps, which currently is not the case for Blink Mobile.