Why a year range reads 2026-2008, why an Arabic keyboard leaves OTP boxes blank, and why a delivery date comes out Hijri. Three defaults, and the code that replaces each one.
Why translation is a runtime change while layout direction is a native flag, why you must flush storage before rebooting, how to use logical properties, and how to mirror navigation icons.
Why connected is not reachable, why reachable is not your API being up, how to write a safe NetInfo banner, and how to seed TanStack queries from disk using initialData.
Why cold starts deliver incoming URLs twice through getInitialURL and the url event listener, how to implement a consume-once guard, and how to queue intents until navigation is ready.
Why bare redux-persist migrations drop auth state on every boot, how to delete deprecated keys safely, and how to build a user state reset registry for clean sign-outs.
Why rapid stepper taps create out-of-order network race conditions, how to implement dual-state pending tracking, and how to collapse multiple taps into a single confirmed save in React Native.
How to handle all four permission states in React Native, guide blocked users to Settings, support Android 13 READ_MEDIA_IMAGES, and configure Axios multipart boundaries cleanly.
Why Axios defaults to waiting indefinitely, how to scope per-request timeouts to best-effort lookups, and how to build fallback states so network delays never freeze your checkout.
How to structure form state with Formik and Yup, display field-level validation errors, retain typed inputs across API failures, and prevent duplicate submissions with shared button guards and idempotency keys.
Why Android 15 edge-to-edge enforcement ignores adjustResize, how one native values-v35 resource rescues your forms, and how to migrate to inset-aware layouts before Android 16.
Keep the input responsive, distinguish empty results from errors, retry the right query, and reuse a correctly scoped cache. This lesson closes the Search module.