2024 — hoje · Mobile engineering
CISS S.A.
At CISS I build and modernize React Native apps running in retail production — the kind of project where the hard part isn't shipping a feature, it's upgrading a live app without breaking the people who depend on it daily.
Stack
- React Native
- Expo SDK 53
- TypeScript
- Jest
- EAS
- Hermes
The problem
An app with badly outdated dependencies, zero automated tests, native folders generated by prebuild (meaning native changes can only be verified with a real device build), and feature branches still landing during the modernization. Upgrading everything at once would be a pull request impossible to review and impossible to revert.
The approach
Modernization in waves: one dependency cluster per pull request, each phase independently mergeable and revertible with a single `git revert`, ordered by blast radius times probability of breakage. Before any risky bump I built a Jest characterization test net — tests that describe current behavior rather than ideal behavior, so any drift shows up. Manual QA on a real build before each merge, because in a prebuild project the git diff doesn't tell the whole story.
What happened
The first wave (Jest, SDK alignment, HTTP client) shipped without interrupting the product work happening in parallel. On the native side I cleared a sequence of iOS blockers that usually eats days: the `fmt` library's `FMT_STRING` macro conflicting with the newest Apple Clang, solved with a controlled Xcode downgrade; ReactCodegen failing because the `node` binary path wasn't found; and iphoneos SDK location.
Project facts
Expo SDK 53, React Native 0.79, React 19, Hermes, New Architecture on
One dependency cluster per PR, each phase revertible with one command
Jest characterization test net built before the risky bumps
`FMT_STRING` clash with Apple Clang solved by a controlled Xcode downgrade
Native folders gitignored: verification only through real EAS builds
Tell me what you want to build.
A 30-minute conversation about the problem usually settles more than three email threads about technology. If it isn't for me, I'll say so right away.
andre@andrebordignon.dev · Brasília, Brasil