The first thing a job post tells you is which platform it wants, and the three kinds of job share a shape but not a toolkit.
Android is the largest. Kotlin is its language now, named in most Android job posts, and Java is still named in a large share, because apps built before Kotlin took over are still being maintained. The Android SDK is the platform itself, Android Studio the tool for building in it, and Jetpack the set of libraries Google provides on top. Jetpack Compose is the newer way of building Android screens in code rather than in layout files, and it is now asked for in a good share of Android job posts. Kotlin Coroutines handle work that must not block the screen. Gradle builds the app and ADB talks to a connected phone.
iOS is the smallest but the most tightly defined. Swift is its language, named in nearly every iOS job post, with Objective-C still in a good share for the same reason Java survives on Android. The iOS SDK is the platform, Xcode the tool, and the screens are built with SwiftUI, the newer code-first way, or UIKit, the older one, and most iOS job posts ask for both. Combine handles asynchronous work, CocoaPods manages packages, and Instruments is the tool for finding out why an app is slow or using too much memory.
Cross-platform means one codebase that produces both apps. React Native is the framework asked for most, by a wide margin, and it brings JavaScript or TypeScript, React and Redux with it, so a web engineer can move into mobile. Expo is the toolkit that makes React Native easier to set up and ship. Flutter, with Dart, is second and some way behind. Kotlin Multiplatform is the newest, and it is asked for mainly at the food-delivery and payments companies, where the business logic is shared between native Android and iOS apps. Cross-platform is the norm in client work, at the large services firms and the app studios, because a client wants one app for both phones at one price, and at the medical-device and core-banking companies. The consumer-app companies, the streaming services and the GCCs build natively, and the car-dashboard and handheld-device companies build only on Android.
An app is built from screens, and each screen has to show data, react to taps, and survive the phone turning sideways or the user switching to another app and back. MVVM is the pattern named most for organising that, in Android, iOS and cross-platform job posts alike, with MVI, MVP, MVC and VIPER appearing in smaller shares, the last two mostly in iOS work. On Android, LiveData and Jetpack Compose carry data to the screen, and Dagger and Hilt wire the pieces together. UX Design and UI Design are named in a fair share of job posts, because on a phone the engineer is closer to the design than anywhere else, and Material Design and Apple HIG are the two platforms' rules for how an app should look and behave. Figma appears where the engineer works from a designer's files, most at the car and device companies. Mobile-First and Offline-First describe apps designed from the start for a phone and for a network that comes and goes.
The app does not hold the business data. It asks the server for it through a REST API, shows what comes back, and sends the user's actions back the same way. Backend and API integration is the most common extra ask in the whole role, named in most job posts and in nearly all at the GCCs, because the app is only the visible end of a system the engineer has to understand. On Android, Retrofit and OkHttp are the libraries that make those calls. GraphQL appears in a fair share of job posts, most in iOS and cross-platform work and at the retailers' and banks' GCCs, where the app asks one endpoint for exactly the fields a screen needs. Protocol Buffers appear at the food-delivery and ride-hailing companies, where the app and server exchange a very large volume of small messages and every byte matters. OAuth 2.0, JWT and SAML appear for signing the user in, most at the banks. A fair share of job posts also ask for SQL or a backend language, which is the employer wanting the engineer to be able to read the server side too.
An app has to work when the network is slow or gone, so it keeps a copy of what it needs on the device. Room is the Android library for that, over SQLite, and Core Data is the iOS one. Offline-First means designing the app so it reads and writes locally first and syncs with the server when it can, and it is named most in iOS job posts and at the construction companies, whose users are on building sites with poor signal. Google Firebase appears as a ready-made backend and data store for smaller apps.
Some things happen when the app is not on screen. An order status changes, a payment clears, a message arrives, or a sync has to finish. Push Notifications are how the server tells the phone, and they are named in a fair share of job posts, most at the GCCs and in cross-platform work. WorkManager on Android schedules work that has to finish even if the app is closed, and Kotlin Coroutines and Combine keep slow work off the screen thread so the app never freezes. Live order tracking and real-time location, at the food-delivery and ride-hailing companies, are the hardest form of this, with maps updating many times a second.
A mobile engineer reaches parts of the device a web engineer never touches. Bluetooth and WiFi are named in a fair share of job posts, and they are concentrated in two places: the medical-device companies, whose apps pair with a device on the patient, and the handheld-scanner and car-dashboard companies. Those last two are a different kind of mobile career. The car companies build on Android Automotive, the version of Android that runs the screen in a dashboard, and ask for the Android Framework and the AOSP Build System, which means working on the platform itself rather than on an app above it. The handheld-device company is entirely Android, for the apps on warehouse and store scanners. The camera, location and payments hardware appear in the consumer apps, and UPI is named at the payments companies.
A payments or banking app is some of the most demanding mobile work there is, because it is trusted with money. The fintech and banking tag is on a fair share of job posts overall and on most at the payments companies and the banks' GCCs. It means secure sign-in, encrypted storage on the device, careful handling of every transaction, and following the rules of the payment networks and regulators.
A mobile app is not deployed to a server. It is built, signed, and submitted to Apple's and Google's stores, which review it before anyone can download it, and a bug cannot be fixed until the next release is approved. App Store Deployment and Play Store Deployment are named as skills in their own right because of this. A build-and-release pipeline is asked for in a good share of job posts, and in most at the GCCs and the consumer-app companies. It runs the tests on every change, builds both apps, and pushes them to testers and then to the stores. Azure DevOps, GitHub Actions and Jenkins are the general pipelines named, about equally, and Fastlane and Bitrise are the tools built for mobile releases, with CircleCI in a few job posts.
Once the app is in users' hands, the team needs to know when it crashes, and on a phone that happens on thousands of different devices the engineer never sees. Firebase Crashlytics is the tool named for collecting crashes, and Instruments for finding memory and speed problems on iOS. These appear in a small share of job posts, and monitoring is a plus rather than a requirement.
Testing is asked for in a good share of job posts, and most of all at the GCCs, where the banks and retailers cannot afford a broken release in front of millions of customers. Two kinds appear. Unit tests check one piece of logic at a time, and JUnit and Robolectric are the tools on Android, XCTest on iOS. UI tests drive the real app on a device or an emulator the way a user would, and Espresso is the Android tool, XCUITest the iOS one, Detox the React Native one, and Appium the one that works across platforms, with Cucumber and TestNG in a few job posts. Testing is named most at the car and device companies and the GCCs, and least in client work.
Underneath all of it sits the ordinary craft of building software in a team: Git for source control, pull requests and reviews, issue tracking, and a rhythm of regular releases. Job posts count these as given and almost never list them as skills.
A mobile engineer who knows one platform well, Kotlin with Jetpack Compose on Android or Swift with SwiftUI on iOS, understands MVVM, can talk to a REST API and store data on the device, handles push notifications and background work, tests with JUnit and Espresso or XCTest, and can ship through a pipeline to the stores, meets the core of nearly every job post. The variations belong to the employer. The food-delivery, payments, ride-hailing and streaming companies want native engineers on both platforms, with Kotlin Multiplatform, Protocol Buffers, real-time tracking and the most demanding performance. The retailers' and banks' GCCs want native apps with GraphQL, push notifications, Azure DevOps or GitHub Actions pipelines and the most testing. The car-dashboard and device companies want Android engineers who can work on the Android Framework and AOSP itself, with Bluetooth, WiFi and Figma. Client work wants cross-platform engineers in React Native or Flutter who can build one app for both phones. Across all of them, the app is the visible end of a larger system, and the engineer who understands the server side is asked for everywhere.