All projects

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
A simplified diagram of the call integrations I worked on with the Trait team.
View workspace design preview
Trait’s dark workspace interface with a channel list, shared conversation, and an open thread.
Trait’s workspace and thread view. Figma design preview with sample content.

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.
Next projectCutroom