Theme by swapping CSS variables on an ordinary View
Because the platform's own colour-scheme switch could not be trusted, the theme is a set of custom properties swapped on a plain container rather than a mode handed to the system. The trap that cost the most time: putting those variables on an animated container silently breaks the light defaults — nothing errors, the app simply renders wrong in one scheme and correctly in the other, which is the hardest class of bug to notice and the easiest to reintroduce.
Sheets that measure the phone rather than assume it
A bottom sheet with a text field in it has to sit above the keyboard, above the navigation bar, and above the navigation bar when it is the three-button kind — which occupies space the gesture-bar layout does not. The library's defaults handle the common case and leave the rest to the app, so modals, dropdowns and date pickers respond to the measured geometry instead of a constant that happens to be right on the reviewer's device.
The lock is a resume behaviour, not a login screen
Locking engages when the app returns to the foreground rather than at startup, which is the moment that actually matters — a finance app left open on a desk. Biometrics have three distinct failure modes that a user experiences identically, so each has its own path back to a passcode rather than a single catch that leaves them stuck outside their own account.
The empty states are the screen
The personal home was built around the cases where there is nothing to show: no wallet created, no transaction PIN set, a balance below zero. A dashboard designed for the populated case and patched afterwards puts its worst experience in front of every new user on their first morning, which is the one impression that cannot be revised.
Invoicing as a wizard that survives being left
Create, add items, send, then record payment against it later — with recurring invoices reusing the same path rather than forking it. The state has to hold across steps, across an Android keyboard opening over an item sheet, and across the user abandoning it halfway. It is the most ordinary-looking feature I own and the one with the most edges.