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 6

Using Android Views in Compose (and Vice Versa)
intermediate2 min read

Using Android Views in Compose (and Vice Versa)

AndroidView and ComposeView are bridges for gradual UI migration. Use them to embed classic Views in Compose screens or vice versa, like for a MapView. The footgun is managing state and lifecycles across the two different UI paradigms, which can lead to bugs.

TanStack Query: Manage Server State, Not Client State
intermediate2 min read

TanStack Query: Manage Server State, Not Client State

TanStack Query treats server data as a cache, not local state. It automates fetching, caching, and background updates to keep your React Native app in sync with your backend.

intermediate2 min read

Flutter's Form Widget: Grouping and Validating Input

A Flutter Form acts as a supervisor for multiple input fields, letting you validate and save them all at once. Use it for login screens or user profiles. The footgun is forgetting the GlobalKey, which makes it impossible to trigger validation.

intermediate2 min read

Axios Interceptors: Middleware for Your API Calls

Axios Interceptors are like middleware for your API calls, letting you globally modify requests before they're sent or responses before they're handled. Use them to inject auth tokens or log activity. The footgun: request interceptors run last-in-first-out.

Keychain Services: A Secure Vault for Small Secrets
intermediate2 min read

Keychain Services: A Secure Vault for Small Secrets

Think of Keychain as a system-managed safe deposit box for small secrets like passwords or tokens. It's the go-to for storing API keys or user credentials securely. The main footgun is its clunky C-style API, leading most developers to use a wrapper.

FormData: The Right Way to Upload Files
intermediate2 min read

FormData: The Right Way to Upload Files

FormData is your digital envelope for file uploads. It packages files and text into a multipart/form-data payload for fetch. Use it in React Native to upload images or videos. The footgun: don't set the Content-Type header yourself; fetch handles it.

Core Data: An Object Graph, Not Just a Database
intermediate2 min read

Core Data: An Object Graph, Not Just a Database

Core Data isn't just a database wrapper; it's an object graph manager that can persist data. Use it for complex model layers in iOS/macOS apps, especially for caching or document-based work. The footgun is treating it like a simple ORM.

intermediate2 min read

FocusNode: Programmatically Managing Widget Focus

A FocusNode is your handle to a widget's focus state, letting you programmatically request focus or listen for changes. It's essential for forms, like moving focus from one TextField to the next.

AbortController: Stop Fetch Requests You No Longer Need
intermediate2 min read

AbortController: Stop Fetch Requests You No Longer Need

An AbortController is a kill switch for network requests. Use it to cancel a fetch when a user navigates away. The main footgun is not handling the AbortError that fetch throws, which can look like a real network failure.

SwiftData
intermediate2 min read

SwiftData

SwiftData is Apple's Swift native persistence framework, introduced in 2023 as a modern layer over the same storage engine Core Data uses. You declare models with the Model macro instead of a visual schema editor, and SwiftUI views stay in sync automatically.

intermediate2 min read

Dismissible: The Swipe-to-Remove Widget in Flutter

A Dismissible widget lets you swipe away list items, like clearing notifications. Use it for to-do lists or email inboxes. The key footgun: you MUST provide a unique Key and remove the item from your data source in onDismissed, or it will reappear on…

intermediate2 min read

GraphQL: Ask for Exactly What You Need

GraphQL lets clients request exactly the data they need from a single endpoint, avoiding over-fetching. It's ideal for mobile apps, but beware of the N+1 problem where one query can trigger many database lookups on the backend.

intermediate2 min read

SQLite: A Database in a Single File

SQLite is a self-contained SQL database engine that lives in a single file. It's ideal for mobile apps needing fast, reliable local data storage without a server. The footgun is using it for high-concurrency write scenarios, where it becomes a bottleneck.

Realm Database
intermediate2 min read

Realm Database

Realm is an object oriented mobile database that stores your Swift model objects directly, without an ORM layer translating to and from SQL, and gives you live objects that automatically update in your UI whenever the underlying data changes.

Repository Pattern: Your App's Single Source of Truth
intermediate2 min read

Repository Pattern: Your App's Single Source of Truth

The Repository Pattern acts as a mediator for your app's data, fetching from sources like a network or database. Use it to separate your UI from data-fetching logic, like caching. The footgun is putting business logic here; it's for data operations only.

App Groups: Sharing Data Between Your Apps & Extensions
intermediate2 min read

App Groups: Sharing Data Between Your Apps & Extensions

App Groups create a shared 'lockbox' for your apps and extensions on a user's device, bypassing the default app sandbox. Use it to share UserDefaults or files between your main app and its widget. The footgun: you must use specific APIs and manage data sync.

intermediate2 min read

React Native: Navigating Platform-Specific Shadow Styles

React Native shadow APIs expose underlying platform differences. Use the web-like boxShadow for cross-platform consistency or the shadow* props for direct native control.

intermediate2 min read

GoRouter: URL-Based Navigation for Flutter Apps

GoRouter treats your app's screens like web pages with URLs. This declarative approach simplifies deep linking and passing data via paths like /users/123. The footgun is forgetting its declarative nature and trying to manage state imperatively.

intermediate2 min read

PermissionsAndroid: Requesting Runtime Permissions

PermissionsAndroid lets you ask for sensitive permissions like camera or location at runtime. Use its request method to show the native Android dialog. The biggest footgun is ignoring the NEVER_ASK_AGAIN result, which requires sending the user to system…

intermediate2 min read

Flutter's Router API: Declarative Navigation

The Router API treats navigation as state. You declare the page stack based on app state, giving you full control over URLs and the back button. This is vital for web/desktop apps but introduces significant boilerplate compared to simple push/pop navigation.

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