CarefulCopy MarkdownOpenKeep server state in TanStack Query and durable client state in Zustand.Put applied filters, sorts, tabs, dates and selections in Expo Router params.Declare each query key once; hooks, prefetches, mutations and invalidation must share it.Choose staleTime from how quickly the resource changes, not one global default.Make sheets and full-screen flows routes so links, restoration and back gestures work.Keep scroll-linked animation on the UI thread; JS-thread reads drop frames.Use LegendList for API-backed collections, including rows inside detail screens.Read live window dimensions; mounted screens must survive rotation and iPad resizing.Do not let persisted state overwrite newer values after hydration.Verify system integrations on a real device; the simulator is not proof.Delete the remote account before clearing the local session.Account deletion must remove every account-owned table, not only the profile row.OverviewThe StatsHub app for iOS and Android — what it does, how a screen is put together, and where its data comes from.FeaturesEvery screen in the app, one page per area — the four tabs, the detail stacks, the filter sheets, the tools, and the account surface.