Project 05 / Team contribution
Ech0.
Connecting the mobile app to its messaging SDK.
I built the Expo app foundation and connected chat history, attachments, device linking, and message actions to the Rust SDK.
- Focus
- Mobile messaging & SDK integration
- Built with
- Expo / React Native / TypeScript / Rust SDK / BoltFFI
- Status
- In development · SDK integrations merged
Project in brief
- The problem
- Late history or live events could show a message again after it had been deleted or revoked.
- My contribution
- I built the Expo app foundation and frontend controllers over the Rust messaging SDK.
- Key decision
- Used SDK message identities and versioned events to keep deleted content out of later snapshots.
- Result
- The integrations are merged, with recorded Android-device and iOS-simulator checks. Ech0 remains in development.


01
Overview
Ech0 is a communication product in development. The mobile app began as a static preview before I connected it to the native messaging SDK.
The app needs to handle late chat history and uncertain upload results. It also needs to update every open view when a message is deleted.
02
My work
I built the mobile screens and frontend controllers that use the SDK’s public contracts. The SDK owns persistence, protocol state, and durable operations.
- Connected chat history, native attachment preparation, downloads, and media views to the SDK.
- Built QR device-linking screens with approval on the primary device and clear pending states.
- Kept message deletion and revocation consistent across chat and retained views, and connected replies to the original messages.
A closer look
Keeping a deleted message from coming back.
- The problem
- The native chat could keep showing a message after the SDK reported it deleted or revoked. A later history or live snapshot also had to respect that terminal state.
- My decision
- I projected typed SDK events into chat using the original Delivery message identity, independent state versions, and account ownership checks. Durable message state stayed with the SDK.
- The behavior
- Private deletion removes the message from the user’s view. Public revocation leaves a row without its original body. Older history, outbox, and live snapshots cannot restore the removed content.
The projection was merged and checked with real SDK messages on a physical Android device and an iOS simulator, including reopening and cold restart. Physical iOS and private propagation between two devices remain separate acceptance work; Ech0 is in development.
03
Technical decisions
React Native screens use typed controllers over a Rust SDK exposed through BoltFFI. The frontend displays SDK state across chat, media, and device-linking screens.
- Used the SDK’s message IDs and versioned events so late history could not restore a deleted message.
- Retried uncertain media preparation with its original SDK operation instead of starting a second upload.
- Scoped asynchronous work to the active account and kept enrollment, storage, and cryptography in the SDK.
04
Scope & status
The messaging, attachment, and device-setup integrations are merged. Ech0 is still in development.
- Merged code and platform exports do not establish a production release.
- Message-state changes have recorded Android-device and iOS-simulator checks. Full device pairing and broader physical-iOS testing remain separate work.