Building Helio for iPhone
- Role
- Design, frontend, and the platform argument
- Stack
- Expo, React Native, NativeWind, plus the responsive web build that actually shipped


The CEO wanted an iOS app in twelve days.
I started by building the whole thing as design-as-code in our catalog: every screen with real components, plus a navigation and deeplink spec and the shapes of the push payloads. Then I built the actual Expo project, made the data layer portable to React Native (visibility, network, and messaging all had to become adapters), bridged the design tokens across, and got it running on a real phone.
Then I argued for stopping.

Native React Native means the UI is two codebases forever. It is not a matter of some duplication, because the languages are different. A <div> is not a <View>. "Fix it once and both platforms get it" is not achievable at the UI layer, only below it. Meanwhile the desktop web app was already most of the way to responsive and was literally the same components.
So mobile v1 shipped as web. Drawer navigation, touch chat, a phone type scale, bottom sheets. Native went on the shelf, with the Expo work intact for whenever it comes back.
My favourite detail from that stretch is something I removed. The grab handles came off every bottom sheet, because none of our sheets could actually be dragged. The handle was advertising a gesture that did not work.