Project 01 / Team contribution
Trait.
Calls that need to work beyond the chat screen.
I connected React Native call screens to realtime media and server state, and added workspace loading and recovery flows.
- Focus
- Mobile calls & workspaces
- Built with
- React Native / TypeScript / Rust SDK integration / Go service integration
- Status
- Released product · Team contribution
Project in brief
- The problem
- An incoming call can arrive while the app is in the background or after the caller has cancelled.
- My contribution
- I worked on React Native call handling, workspace recovery, and native mini-app hosting as part of the team.
- Key decision
- Handled joining, cancellation, and cleanup explicitly across native screens, the media client, and the server.
- Result
- My call, workspace, and mini-app integrations are merged into the Trait codebase.
Integration overview
Mobile calls,
shared state.
Native screens, realtime media, and server state need to agree.
- Native call screen
- The phone’s incoming-call interface.
- React Native + media
- The app connects native screens to the shared realtime room client.
- Server state
- The server owns the call and workspace state.
Handled across these boundaries
- Joining
- Cancellation
- Cleanup
View workspace design preview

01
Overview
Trait is a team workspace with channels, direct messages, tasks, and voice and video calls.
The native call screen, media room, and server need to agree on whether a call is ringing, accepted, or already cancelled.
02
My work
My changes crossed the mobile UI, shared realtime code, and server integration.
- Worked on incoming calls, media controls, and cleanup across native and shared code.
- Added loading and recovery states when someone opens a workspace.
- Built a shared native host for wallet and game mini apps, with a typed bridge between web and native code.
03
Technical decisions
The React Native app connects native call screens to a shared realtime room client. The server owns the call and workspace state.
- Handled joining, cancellation, and cleanup explicitly so each part of a call has a clear owner.
- Waited for workspace data before the first entry while keeping cached content usable.
- Kept sensitive wallet operations in native code and limited what mini apps could request.
04
Scope & status
My scope was call integration, workspace startup, and mini-app hosting within the existing team product.
- Some call changes need coordinated app and service releases.
- Automated and simulator checks cover part of the behavior. Physical-device call testing is still a separate step.