Project 03 / 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


01
Overview
Ech0 is a communication product in development. I built the Expo mobile foundation and moved it from a static preview to merged integrations with 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.