Easy everything in Mobile Dev, page 13

Interface Builder: Visual UI Design for iOS/macOS
Interface Builder is Xcode's visual editor for building UIs. You drag-and-drop components like buttons and screens, which are saved as .xib files. It's used to quickly lay out app screens without writing UI code.
Xcode Project: Your App's Blueprint and Toolbox
An Xcode project is a self-contained kit for your app, holding all files, assets, and build instructions. It's the central repository for source code, build settings, and dependencies. The footgun: moving files in Finder without telling Xcode breaks builds.
Protocol Extensions: Default Behavior for Free
Protocol extensions give conforming types default functionality "for free," like a standard toolkit with every blueprint. Use them to add common behavior to your protocols or even extend system types.

The Result Type: Modeling Success and Failure
The Result type is a sealed box for an operation's outcome: it holds either a success value or a failure error. It's used in asynchronous code like network requests to create clean, explicit completion handlers. The footgun is forgetting to handle both cases.
Value vs. Reference Semantics in Swift
Value types are like emailing a document copy; changes don't affect the original. Reference types are like a shared Google Doc link; everyone edits the same instance. In Swift, structs are copies, while classes are shared references.
Swift Control Flow: Directing Your Code's Path
Control flow statements are the traffic signals of your code. They use keywords like if, for, and switch to make decisions and repeat actions, rather than just running top-to-bottom. This is how you show a list of items or check if a user is logged.
Variables and Constants in Swift
Swift has two ways to store a value: var declares a variable you can reassign later, and let declares a constant whose value is set once and can never change, and Swift's convention is to default to let unless you have a specific reason to need var.
Profiling Flutter Apps with Dart DevTools
Dart DevTools is your app's diagnostic tool, letting you see exactly why frames drop or memory spikes. Use it to find the root cause of "jank" in lists or slow animations.
Flutter's Architectural Layers: UI and Data
Think of a Flutter app in two parts: the UI layer for what the user sees, and a data layer for fetching and managing information. This separation is crucial for apps with APIs or complex state.
flutter analyze: Your Code's First Line of Defense
Think of flutter analyze as a spell-checker for your Dart code. It catches errors, style issues, and potential bugs before you run the app. The footgun is ignoring its configuration; its real power is in a custom analysis_options.yaml file.
Flutter Build Modes: Debug, Profile, and Release
Flutter's build modes trade performance for developer features. Debug mode is for fast iteration with hot reload, while Release is for optimized user builds. You use Debug daily, Profile to hunt for bottlenecks, and Release to ship.
Dart's `expect` and Matchers: Writing Better Tests
Dart's expect and Matchers are a grammar for your tests, letting you define complex rules beyond simple equality. Use them to verify values, check for exceptions, and test async Futures/Streams.
Unit Testing in Dart: Verify Your Logic in Isolation
A unit test is a microscope for your code. It checks a single function or class in isolation, ensuring it behaves correctly without worrying about the UI or network. Use it for business logic, not for testing rendered widgets or API calls.
Dart's Platform Class: Querying the Host Environment
Think of Dart's Platform class as a runtime detective for your app. It answers "where am I running?" by checking the OS, environment variables, and more. Use it to show different UI on iOS vs. Android.
Flutter: Requesting Runtime Permissions
Don't assume your app has access to the camera or contacts; you must ask the user for permission at runtime. This is required for features like photo uploads or location tracking. The common footgun is forgetting to declare permissions in native config files.
Flutter Packages: Bridging Dart to Native Features
Think of packages as pre-built bridges to native device features. They let your Dart code access the camera or GPS without you writing the complex, platform-specific code.
CurvedAnimation: Animate with Easing and Personality
CurvedAnimation makes animations feel natural by applying a timing curve to another animation. Instead of linear motion, widgets can ease-in or bounce. Footgun: Elastic curves can overshoot the standard 0.0-1.0 range, causing unexpected UI behavior.
TweenAnimationBuilder: Animate Anything Implicitly
TweenAnimationBuilder animates any widget property without a complex AnimationController. Just give it a target value, duration, and curve. Use it for one-off animations where a full controller is overkill.
AnimatedContainer: Simple UI Animations Without Controllers
AnimatedContainer is a 'fire-and-forget' animation widget. It automatically animates its own properties like size and color when they change. Use it for simple UI state changes, like a button that grows when tapped. It only animates itself, not its child.
Reading and Writing Files in Dart
Treat files as either a single string for simple cases or a stream of data for large ones. Use dart:io for saving user settings or processing logs. The main footgun is using synchronous methods like readAsStringSync, which can freeze your app.
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