Status
A privacy-first messenger, wallet, and super app for the Web3 community.
What is Status?
- Status is a privacy-first, design-led organization working at the intersection of secure messaging, decentralized infrastructure, and crypto-native products.
- Status built a mobile application for iOS and Android that combined a private chat messenger with a Web3 wallet, built on decentralized messaging protocols and designed around a strong privacy model.
- The mobile application was built with React Native and ClojureScript on the frontend, with a shared Go core (status-go) embedded inside the app to handle messaging, cryptography, and protocol-level operations across both mobile and desktop clients.
How I joined Status?
- I joined Status as a React Native and ClojureScript engineer working on the mobile application, drawn to the opportunity to work on a product that took privacy and decentralization seriously as architectural constraints rather than marketing language.
- At the time, I was interested in continuing to grow my expertise with ClojureScript and React Native, and Status offered a unique environment for that: a real product with a large codebase, a motivated open-source community, and genuinely difficult technical problems rooted in applied cryptography and decentralized systems.
Mobile UI & Frontend Performance
-
My initial focus was implementing user interfaces and interaction flows across the mobile app using React Native and idiomatic ClojureScript.
- This work involved building views, managing navigation, and composing reactive state across a layered architecture that bridged ClojureScript, React Native, and native platform code.
- Over time, I identified patterns for tuning frontend performance within this architecture and contributed improvements to developer tooling that supported faster iteration cycles.
Push Notifications
-
Push notifications in a privacy-first messaging app introduced a set of constraints that made the problem fundamentally different from conventional implementations.
- In a typical messaging app, a push notification can include plaintext content delivered through a service like Firebase Cloud Messaging or Apple Push Notification Services. In Status, the privacy model required that raw message content never pass through third-party infrastructure in a readable form.
- This meant that notifications had to either carry an encrypted payload that the device could decrypt locally, or serve as a signal that prompted the device to fetch and decrypt the message on its own.
-
The most clear reference at the time was the Signal app, which publishes its source code and demonstrated usable patterns for waking iOS applications with a minimal push payload and using that signal to retrieve and decrypt content.
- However, Signal and most other private messaging apps relied on centralized message delivery. Status used a decentralized messaging protocol with distributed message archives, which meant there was no single server to query for a pending message.
- Fetching a message required interfacing with decentralized storage protocols, which in turn required waking the embedded Go process — a long-running background service that was not designed for the short burst execution windows that iOS enforced for background tasks.
- This created an architectural tension because the round trip to locate, retrieve, and decrypt a message often exceeded the time budget allowed for background execution on mobile operating systems.
-
The push notification effort became a research and development project, exploring what was feasible given these constraints.
- Could the encrypted message be sent alongside the push payload and decrypted using the device keychain without waking the full application?
- Could a message be fetched by ID with a fast enough round trip to fit within the background execution window?
- How could these strategies be adapted across both iOS and Android, each with different background execution models?
-
On the infrastructure side, I worked alongside the infrastructure team to provision and configure the services needed to deliver push notifications.
- This included setting up credentials and certificates for both Firebase Cloud Messaging and Apple Push Notification Services, integrating the cross-platform SDKs for iOS and Android, and designing an abstract push notification API within the app for sending and receiving notifications in both foreground and background states.
- I also helped ensure that the Android build remained compatible with F-Droid after the push notification integration, since F-Droid does not permit Firebase dependencies. This required maintaining a separate notification path that could deliver notifications without relying on Google’s infrastructure.
Analytics & Privacy-Conscious Metrics
-
Integrating analytics in a privacy-first application required the same care as push notifications — the question was not simply what to measure, but what could be measured without compromising the privacy model.
- I worked with the product lead and the mobile core team to define a metrics consent policy that drew a clear line between aggregate product insight and individually identifiable information.
- This involved auditing the analytics pipeline to ensure that no telemetry created leaks in the privacy model, and that any data collection was transparent and required explicit user consent.
Cross-Layer Engineering
-
The layered architecture of the Status mobile app, with ClojureScript on top of React Native and a native shell embedding a Go process, meant that meaningful contributions often required working across multiple layers.
- I contributed to the status-go codebase alongside the Golang team, and helped maintain the bindings that connected the Go core to the native layer and up through to the React Native frontend.
- I also participated in the NixOS-based build pipeline that supported reproducible builds of the mobile application, and debugged issues with third-party token economic APIs and the proxy infrastructure used to route API requests to external providers.
Observations on Process & Planning
-
Status operated as a fully asynchronous, decentralized organization, and this structure attracted contributors who were highly motivated, technically capable, and comfortable with independent research.
- The challenge was not a lack of talent or initiative. Instead, planning and documentation practices did not always make it easy for contributors to self-orient once the technical work was complete.
- Decision rationale was often attached to pull requests or scattered across chat history, which meant that understanding why a decision had been made required navigating a chain of GitHub artifacts rather than referencing a living document.
-
Features like push notifications and analytics had been attempted multiple times during the company’s history, and each iteration encountered similar alignment questions.
- Contributors would complete the technical work and then find themselves unsure of where the boundaries of the vision lay, or why certain trade-offs had been chosen over seemingly equivalent alternatives.
- This pattern suggested that the gap was not in execution but in how the vision was documented and made navigable.
-
This experience deepened my appreciation for scoped planning methodologies like Shape Up, where the goal is to provide contributors with bounded problem definitions and enough recorded context to be self-adjusting, reducing the coordination cost of alignment without introducing heavy process overhead.
-
It also reinforced the value of regression-aware release processes for mobile applications, where regressions are especially costly due to app store review cycles, and where targeted automated testing alongside manual QA can significantly reduce the risk of shipping unintended changes.