← Toutes les expériences - retour à la frise
Front-End Developer

Application télécommande TV/média en React Native, ReScript, GraphQL & Apollo

Loewe · févr. 2019 – mai 2019
Base de code React Native + ReScript ré-architecturée pour rendre les contributions faciles, et interface soignée à coups d'animations pour que l'app paraisse vraiment native - pas mi-web, mi-native. Projet Xcode lié à la main démêlé en un Podfile Cocoapods, pour que les mises à jour de React Native cessent de faire mal.

Loewe fabrique des téléviseurs ; voici l'application qui les pilote, une télécommande écrite en React Native et ReScript, avec GraphQL, Apollo et MQTT en dessous. Une mission courte, avec un seul objectif : débloquer une base de code devenue lente à faire évoluer.

Trois choses barraient la route. Le code ReScript avait besoin d'une structure à laquelle on puisse contribuer sans devoir d'abord la rétro-concevoir : il l'a eue, avec les composants bas niveau nécessaires pour suivre des maquettes qui n'arrêtaient pas de bouger. Le projet iOS était un .xcodeproj lié à la main (bibliothèques câblées une à une, certaines copiées-collées), ce qui transformait chaque montée de version de React Native en séance d'archéologie ; son passage à un Podfile Cocoapods a rendu ces mises à jour routinières. Enfin, l'application donnait encore la sensation d'un site web dans une coquille native, ce qui est rédhibitoire pour une télécommande : un appui doit répondre instantanément, sinon le téléphone perd face à la télécommande en plastique posée sur la table. C'est ce qu'a acheté le travail d'animation, celui qui n'apparaît jamais dans un journal de versions.

Transformer les maquettes Sketch en composants a fait remonter ce qu'une maquette statique cache toujours : les états de chargement, les états vides et les erreurs, que personne ne dessine. Le travail a aussi nourri bs-react-native, les bindings ReScript pour React Native dont j'assurais alors la maintenance.

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