← All experience - back to the timeline
Front-End Developer

TV/media remote app made with React Native, ReScript, GraphQL & Apollo

Loewe · Feb 2019 – May 2019
Re-architected the React Native + ReScript codebase to make contributing easy, and polished the UI with tons of animations so the app feels truly native - not half web, half native. Untangled the hand-linked Xcode project into a Cocoapods Podfile, so React Native updates stopped hurting.

Loewe builds televisions; this was the app that drives them, a remote written in React Native and ReScript, with GraphQL, Apollo and MQTT underneath. A short mission with one goal: unblock a codebase that had become slow to contribute to.

Three things were in the way. The ReScript code needed a structure people could add to without reverse-engineering it first, so it got one, along with the low-level components the team needed to keep up with mockups that kept moving. The iOS project was a hand-linked .xcodeproj (libraries wired in by hand, some of them copy-pasted), which turned every React Native upgrade into an archaeology session; moving it to a Cocoapods Podfile made upgrades routine again. And the app still felt like a web app in a native shell, which for a device remote is fatal: pressing a button has to answer instantly, or the phone loses to the plastic remote on the table. That is what the animation work bought, the kind that never shows up in a changelog.

Turning the Sketch designs into components surfaced what static mockups always hide: the loading, empty and error states nobody draws. The work also fed back into bs-react-native, the ReScript bindings for React Native I was maintaining at the time.

ReScript · JavaScript · React · React Native · Reason React · Reason React Native · GraphQL · Apollo · Mobile · MQTT · iOS · Auth0 · Cocoapods · Bitrise · Git · Fastlane