Skip to content
tezvyn:

📱Mobile Dev

Mobile app development across platforms

345 bites

Test yourself: Top 30 intermediate Mobile Dev concepts questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Intermediate concepts in Mobile Dev, page 17

intermediate2 min read

XCFrameworks: One Bundle for Every Apple Platform

An XCFramework is a shipping container for compiled Apple libraries: one bundle holds device, simulator, and Mac binaries so Xcode picks the right slice automatically. Use it to distribute closed-source SDKs.

intermediate2 min read

WorkRequest: The Blueprint for Android Background Tasks

A WorkRequest is the blueprint for a background task in Android. It defines *what* work to do and *when*, letting WorkManager handle execution for tasks like syncing data. The footgun is putting logic in the request; it only configures, the Worker acts.

intermediate2 min read

EventChannel: Streaming Data from Native to Flutter

EventChannel is a one-way radio from native code to your Flutter app, designed for continuous event streams, not single method calls. Use it to listen for ongoing platform events like sensor data, GPS location updates, or battery state changes.

intermediate2 min read

C++ as React Native's Cross-Platform Engine

C++ is the shared engine under React Native's New Architecture, powering JSI and cross-platform TurboModules. One C++ module replaces separate Android and iOS native code.

intermediate2 min read

@objc: Swift's Bridge to Objective-C

@objc is the bridge badge that exposes Swift code to the Objective-C runtime so UIKit selectors and KVO work. You need it for target-action and Core Data. Forget it and you get a runtime crash, not a compiler error.

intermediate2 min read

Constraints: Building UIs with Relationships, Not Boxes

Constraints define UI by relationships, not nested boxes. Think of it like telling elements 'align with that one' instead of placing them in rigid rows. This is key for complex, responsive layouts, but can lead to unsolvable rules if not defined carefully.

intermediate2 min read

Flutter Widget Testing: Verifying UI in Isolation

Widget testing is like testing a single actor's performance without the full play. It lets you build, interact with, and verify a single UI component in isolation, making it faster than a full app test and more comprehensive than a unit test.

intermediate2 min read

ESLint: Catch React Native Bugs Before Runtime

ESLint scans your React Native code before execution to catch syntax errors, unused imports, and missing accessibility labels in your IDE or CI pipeline. The footgun is ignoring warnings; silenced rules let bugs ship to production.

intermediate2 min read

Profiling iOS Memory with Instruments

Instruments X-rays your heap to catch objects that outstay their welcome. Profile image-heavy features or when jetsam kills your app. Never trust Simulator memory numbers; always validate on physical hardware.

intermediate2 min read

Mocking Dependencies in Flutter with Mockito

Mockito creates fake, controllable versions of your app's dependencies, like an API client. This is crucial for unit tests, letting you isolate code from external systems to make tests fast, reliable, and independent of network or database availability.

intermediate2 min read

React Native Android Release Builds

A release build is the shipping crate: optimized JS, shrunk native code, and a cryptographic signature the Play Store trusts. Generate it before any Play Store upload. Lose your signing keystore and you can never update the app again; back it up immediately.

intermediate2 min read

Thread Sanitizer catches data races in Swift

Thread Sanitizer turns flaky race crashes into reproducible reports by monitoring memory accesses at runtime. Use it in Xcode to catch unsynchronized cross-thread reads and writes. It only catches races that execute during your test run, so coverage matters.

intermediate2 min read

Generating Code Coverage Reports in Dart

Code coverage shows which lines your tests execute. It's a health check for your test suite's reach, not a measure of code quality. Use the coverage package to generate reports for CI/CD. The footgun is that high coverage doesn't prove correctness.

intermediate2 min read

Upload Key vs App Signing Key

Your upload key is a disposable badge for Google Play, not the signature users install. You sign release AABs with it before uploading. Treating it as unlosable or committing it to git are common mistakes.

intermediate2 min read

KVO: Swift's Built-In Observer Pattern

KVO lets an object subscribe to property changes on another object automatically. It shines when you need UI updates driven by model state, but forgetting to remove observers before deallocation crashes your app with an NSException.

intermediate2 min read

Flutter for Web: Build and Deploy

Flutter for Web compiles your Dart code into a web app. Use flutter build web and choose a renderer: HTML for smaller size or CanvasKit for performance. The footgun is the initial download size, which can be large and slow down first-page load.

intermediate2 min read

Flutter's `compute`: Offload Heavy Work from the UI Thread

Flutter's compute function runs heavy calculations in the background to prevent your app's UI from freezing. Use it for tasks like parsing large JSON or complex math. The footgun: on the web, it runs on the same event loop, not in a true parallel thread.

intermediate2 min read

Flutter Nested Navigation: Routers Within Routers

Nested Navigation is like having a mini-app with its own back button inside a single screen. It's used for UIs like a BottomNavigationBar where each tab needs its own navigation history. The footgun is calling the wrong Navigator's context.

intermediate2 min read

Performance Profiling in Tests

Performance profiling in tests means capturing frame build and raster times during a scripted, automated run instead of eyeballing smoothness, so jank regressions get caught in CI before they ever reach a real device.

intermediate2 min read

Classic BLoC with Streams and Sinks

Classic BLoC separates UI from business logic by exposing inputs as Sinks and outputs as Streams. The widget pushes events into sinks, the BLoC processes them, and emits new state on streams that the UI rebuilds from, keeping logic testable and…

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