Intermediate concepts in Mobile Dev, page 11
KeyboardAvoidingView: Keep Inputs Visible When Keyboard Appears
KeyboardAvoidingView prevents the on-screen keyboard from hiding your inputs. It's a wrapper that shrinks, slides, or pads its content to keep it in view. Use it for login forms or chat windows. The behavior prop acts differently on iOS vs. Android.
TestFlight: Apple's Beta Testing Framework
TestFlight is your private App Store for beta builds. Use it to distribute pre-release versions to internal teams and external testers for feedback before a public launch. The footgun: external tester builds require a beta App Review, unlike internal builds.
Android Biometric Authentication: The BiometricPrompt API
Android's BiometricPrompt is a unified API for fingerprint, face, or iris scans, replacing older, fragmented methods. Use it to authorize payments or unlock features. The footgun: never assume a specific biometric type is available; always have a fallback.

The React Native Gesture Handler State Machine
Think of a gesture handler as a state machine with six states. This lets you react to specific moments in a gesture's lifecycle—like BEGAN or ACTIVE—not just a single event. The footgun: ignoring the CANCELLED state, which can leave your UI broken.

Navigating Apple's App Store Submission and Review
Think of App Store submission as a strict gatekeeping process, not just an upload. You must prove your app is safe, reliable, and transparent via App Store Connect.

Bottom Tab Navigator: Core Mobile Navigation
A Bottom Tab Navigator is the classic mobile UI for switching between top-level app sections. It lazily loads screens, mounting them only when first focused to save memory. Use it for primary navigation.
Phased Release: De-Risking App Updates
A phased release is like slowly opening a floodgate for your app update. It rolls out to a small percentage of users first, letting you monitor for crashes before it reaches everyone and limiting the blast radius of a bad bug.
Zustand: Lightweight Global State for React
Zustand provides simple global state management for React, feeling like a shared useState hook for your whole app. Use it in small to medium apps where Redux is overkill. The main footgun is its limited ecosystem, making it a risk for large-scale apps.
App Store Connect Analytics
App Analytics in App Store Connect is Apple's built in, privacy preserving dashboard showing how users find, install, and use an app, covering impressions, product page views, conversion rate, downloads, and retention, with no SDK required.

useSharedValue: State for High-Performance Animations
The useSharedValue hook creates state that lives on the UI thread, bypassing React's render cycle for animations. Use it with useAnimatedStyle to drive smooth, 60fps animations. The footgun: modifying a shared value won't re-render your component.

Xcode Cloud
Xcode Cloud is Apple's built in CI/CD service that builds, tests, and distributes iOS and Mac apps from source control on Apple hosted cloud Macs, so teams do not need to run their own build hardware or manage signing separately.
Finding Widgets with Flutter's Finder Class
Finder is your magnifying glass for widget tests, letting you locate specific widgets in the tree. It describes what to find, while the WidgetTester does the actual finding. The footgun is assuming a finder returns only one widget when it might match several.

useAnimatedStyle: Link Shared Values to Component Styles
The useAnimatedStyle hook connects a shared value to a component's style, running animations on the UI thread. It's a reactive StyleSheet for dynamic properties like opacity or transform. The footgun: never mutate shared values inside the hook.
WidgetTester: Programmatically Drive Your Flutter UI
WidgetTester is a robot user for your app, programmatically tapping, dragging, and entering text. Use it in testWidgets to simulate user flows and verify UI state. The footgun is forgetting tester.pump() after an action; you'll assert against a stale UI.

Reanimated Worklets: Run JS on the UI Thread
A Reanimated worklet is a JS function that runs directly on the UI thread, bypassing the bridge for 60fps animations. They're used in hooks like useAnimatedStyle to compute styles without dropping frames. The footgun: worklets capture their entire closure.
Golden File Testing: Visual Regression for Widgets
Golden file testing is a 'spot the difference' game for your UI, catching visual regressions by comparing a widget's rendering to a master image. Use it to lock down critical widget appearances.

App Signing by Google Play: Trust Google with Your Keys
App Signing by Google Play separates your app's identity from the key you use for uploads. Google manages the final, user-facing signing key, which is mandatory for new apps. The footgun is thinking your upload key is the final key; losing it is recoverable.
React Native NetInfo: Know Your Connection State
The NetInfo API is your app's network sensor, telling you if you're online and whether you're on WiFi or cellular. Use it to show an 'offline' banner or defer large downloads. The main footgun: isConnected only confirms a local link, not server reachability.

Google Play Dynamic Delivery: Ship Features On-Demand
Shrink your app's initial install size by delivering features on-demand. Instead of one giant APK, Dynamic Delivery sends a small base app, then downloads larger features like AR modes or special tools only when the user needs them.
React Native Geolocation: The Web API on Mobile
Think of it as the web's navigator.geolocation API for your native app. Use it for map features or location-based content. The biggest footgun on iOS is forgetting location usage descriptions in Info.plist, which causes silent permission failures.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles