Skip to content
Getting Digital

Programming and Software Development

Mobile development

Mobile development builds for devices whose platform owners keep tight control. iOS apps are written in Swift against Apple's frameworks, Android apps mostly in Kotlin, and cross-platform toolkits such as Flutter and React Native trade some native polish for one shared codebase. What sets the field apart is less the code than its constraints: small screens, patchy networks, battery limits and a store review standing between every release and its users.

Why this topic exists: iOS, Android and the cross-platform frameworks are their own toolchains, stores and review rules (SFIA Systems development; Udemy's Mobile shelf).

Mobile development means building apps that live on a phone or tablet, installed from a store, running on hardware the developer does not control and on networks that come and go. Much of the code resembles any other client application: screens, navigation, state and calls to a server. What makes the field distinct is the environment the code has to survive in.

Constraints that shape every decision

  • Small screens and touch input, which leave little room for anything but the essential.
  • Unreliable connectivity. An app should show something useful offline and retry sensibly when the signal returns.
  • Battery and background limits imposed by the operating system, which will suspend or stop work it considers wasteful.
  • Store review. Every release passes the platform owner's checks before users see it, so a bug fix cannot ship in minutes.
  • A long tail of devices and OS versions, particularly on Android, that all need to work.
  • Permissions for the camera, location, contacts and notifications, each requested at a moment the user will understand.

Native or shared code

ApproachLanguageHow the interface is drawnSuits
Native iOSSwift, with SwiftUI or UIKitApple's own controlsApps that lean on platform features and polish
Native AndroidKotlin, with Jetpack Compose or ViewsAndroid's own controlsDeep integration with Android and its hardware range
FlutterDartIts own rendering engine paints every pixelOne team shipping a consistent design to both platforms
React NativeJavaScript or TypeScript with ReactMaps components onto native controlsTeams that already build for the web in React

Almost every app is a client of something else. It fetches and sends data through a REST API over HTTP, and much of mobile engineering lies in doing that gracefully: paging long lists, caching responses, refreshing expired tokens without logging the user out, and coping when a request dies halfway. Old versions of an app stay installed for months, so a server change that breaks them breaks users who never chose to update. SFIA has no separate mobile skill; the work falls under its general programming and software design skills, and the platform owners' own documentation acts as the real syllabus. No credential dominates hiring here, and a published app with real users is the evidence employers ask for.

Beginners tend to build on a fast office Wi-Fi connection and a new phone, then discover the app freezes on a train or crawls on an older device. Test on slow networks and modest hardware from the start, and treat accessibility settings such as larger text as part of the design rather than an afterthought. From here, the server side continues under back-end development and APIs, interface work under UX and interaction design, and release confidence under software testing. For apps that could live in a browser instead, see web development.

Next to this topic

Concepts to know

Glossary entries with the reason each one matters here.

  • REST API

    Apps are clients of APIs.

  • HTTP

    The wire protocol under every app request.

Tools of the trade

Frequently asked

Should I start with native or cross-platform development?
If you know which platform your target employers or users favour, start native there, because the platform's conventions are easier to learn directly. If you already work in React or want one codebase for both stores, React Native or Flutter is a reasonable first choice.
Do I need a Mac to build iOS apps?
In practice, yes. Apple's development tools run on macOS, and signing and submitting an app goes through them. Cloud build services can compile for you, but day-to-day development and testing are far easier on a Mac.
Kotlin or Java for Android?
Kotlin. It is the language Android's current documentation and modern interface toolkit are built around, and it runs alongside existing Java code, so older projects can adopt it gradually.

Courses in the directory

981 courses are filed here; the top 6 by our ranking, details and the provider link on each course page.

Browse the directory shelf

Last reviewed 26 September 2026 · Getting Digital