Organize by feature, not only by file type
Putting every screen, hook, and service into one global folder becomes difficult as the app grows. Feature-based modules keep related UI, state, validation, and API logic close together.
Make state ownership explicit
Local form state should not become global state by accident. Keep transient UI state near the screen, while shared session, cache, and offline data belong in a deliberate store or query layer.
Design for unreliable networks
Mobile users change networks, background apps, and lose connectivity. Show clear pending states, retry safely, cache useful data, and make mutations idempotent whenever possible.
Keep the API contract stable
Mobile clients can remain installed for months. Backends should evolve compatibly, document breaking changes, and use versioned contracts when a migration cannot be avoided.
