React Native
198 bites tagged React Native — interview questions with model answers, and 60-second explainers.
Generating a signed release APK or AAB
Create a keystore, reference its credentials via gradle.properties (gitignored), wire a release signingConfig in build.gradle, then assembleRelease or bundleRelease. Android release signing.
Fabric UI update lifecycle vs old architecture
Render builds an immutable C++ shadow tree, commit diffs trees and runs Yoga layout, mount applies mutations to native views; JSI shares the tree, enabling synchronous and concurrent rendering unlike the… the Fabric render pipeline.
TurboModule lazy loading vs eager startup
Legacy modules are instantiated eagerly at launch; TurboModules initialize only when JS first accesses them, so unused modules cost nothing at startup. why lazy module init speeds startup.
What JSI is and how it replaces the Bridge
JSI is a lightweight C++ layer letting JS hold references to native host objects and call them directly and synchronously, with no JSON serialization or async batched queue. understanding JSI fundamentals.
TurboModules and lazy loading benefits
TurboModules use JSI for direct, synchronous, type-safe calls and are loaded lazily on first use instead of all at startup, cutting init time. new-architecture native modules.
Threading of native module methods
Methods run on a dedicated native module queue, not the UI thread; long blocking work stalls other module calls; offload to a background executor or override methodQueue, returning results via promise. native module threading.
Purpose of RCTBridgeModule and ReactContextBaseJavaModule
These declare a class as a discoverable native module, provide the JS-facing name, and let RN export methods to JavaScript. understanding the native module contract.
Creating a native module with a sync method
Extend the RN base class, mark the method exported and synchronous, register in a package or bridging file. native module mechanics across platforms.
Offline data storage and sync strategy
Persist locally in SQLite or WatermelonDB, queue mutations with a pending flag, detect reconnection with NetInfo, then replay the queue and resolve conflicts. offline-first design.
Unifying divergent native video player props
A JS component accepts a unified source prop, then uses Platform.OS to map it into each native view's expected props before rendering. designing a cross-platform wrapper over divergent native views.
Platform-specific typography in a global theme
Define one theme with Platform.select for fontFamily, expose semantic text styles, and reuse them everywhere rather than per-screen overrides. centralizing platform-aware styling.
Android-only native module called safely from JS
Write a ReactContextBaseJavaModule with an exported method, register it in a package, then guard the JS call with Platform.OS or a null check on the module. building a platform-specific native module and guarding calls.
Passing params between Stack Navigator screens
Navigate to the route with a params object, read it via route.params on the target, pass an id not a huge object. navigation params basics. using global state or refs to smuggle data instead of route params, or passing.
Composing tap and pan gestures together
Declare both gestures and relate them with simultaneous or exclusive composition, using Gesture.Race or simultaneousHandlers so a small move stays a tap. gesture composition and relations.
Adding native code to Expo without ejecting
Use prebuild with config plugins to inject native changes, build a custom development client with EAS, keep native folders generated not hand-edited. knowing modern Expo CNG and dev clients.
The legacy React Native Bridge architecture
JS, native, and shadow threads communicate via an async, batched, JSON-serialized Bridge. knowing the old three-thread Bridge model. calling the Bridge synchronous, ignoring serialization cost, or confusing it with JSI.
Web DOM elements vs React Native core components
View maps to UIView/ViewGroup, Text to native text, no HTML or CSS, all text must be inside Text. understanding RN renders to native views, not the DOM. claiming RN runs in a webview or uses real div and CSS.
Build flavors and schemes for RN environments
Android productFlavors with distinct applicationId and resources, iOS schemes plus configurations and targets, environment config injection. managing dev, staging, and prod builds natively.
Layered testing strategy for a large RN app
Many fast Jest unit tests, fewer RNTL component tests on behavior, few Detox/Maestro E2E on critical flows. understanding the test pyramid in RN.
Unit testing a custom hook with renderHook
Render the hook, read result.current, fire actions inside act, assert updated state. knowing how to test hook logic in isolation. calling hook directly outside a component or skipping act around updates.
CodeGen and Typed Scaffolding in the New Architecture
It reads typed JS specs and generates native interfaces at build time so JS and native agree on types, avoiding runtime checks and giving compile-time safety. CodeGen's purpose.
How Fabric Improves Rendering Over the Old UIManager
A C++ shadow tree shared across threads, JSI-based synchronous access, immutable tree commits, and support for concurrent React features. Fabric rendering model.
Why the New Architecture Replaced the Bridge
The old bridge was async, serialized to JSON, and a single batched channel causing latency; JSI replaces it with direct synchronous C++ interop. motivation for the New Architecture.
ViewManager and Exposing Native Component Props
The ViewManager creates the native view and maps it to a JS component; you expose props with a prop-setter that receives the value when the prop changes. native UI component bridging.
Get React Native bites daily.
Five a day, five minutes, offline. With quizzes so it sticks.
Open testing — you’ll join as an early tester.