Mobile Application Architecture
Mobile application architecture divides an app into parts that present screens, manage state, apply business rules, and communicate with device or remote data. The boundaries and data flow keep operating-system lifecycles, unreliable networks, and changing features from turning every screen into tightly coupled code.
itMobile and client application development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Mobile Application Architecture
A mobile app is a guest in somebody else's operating system. The host controls the process, screens, memory, background time, and occasionally the timing of its exit. Architecture is the arrangement that keeps the app intelligible when that hospitality becomes brief: it assigns state, effects, and platform work to owners with lifetimes that match the job.
The useful picture is a loop, not a stack of fashionable folders. An event arrives from a tap or the system. A state holder turns it into a transition or sends it toward a rule. New immutable UI state comes back for the view to render. State travels toward the screen; events travel toward whoever is allowed to change the state. This stops two screens from quietly becoming rival historians.
Data deserves an adult in the room. A repository presents one contract while it coordinates storage, network services, or a device source. It is where cache choice, retry, conflict, and write policy belong. The view is allowed to show a pending save and forward Retry. It is not appointed chief negotiator with the network merely because it has a button nearby.
The phrase source of truth sounds grander than its job. It means that one owner is authoritative for one kind of data. A local database can hold the copy higher layers read, while a server remains authoritative for shared account data. Once connectivity, queued writes, and conflicts appear, success is no longer one cheerful moment. It is a series of states: pending, syncing, saved, failed, or conflicted.
The operating system adds its own plot twists. Lifecycle means a screen can be recreated and the process can disappear before a request finishes. Durable drafts belong in persistent storage, not in a view's private memory. Background work is a scheduled opportunity with limits, not a permanent worker wearing a tiny hard hat. The architecture must say what survives, what retries, and what the screen can honestly report.
Shared code changes the boundary; it does not make platform behavior evaporate. Adapters keep permissions, background execution, accessibility, signing, and delivery differences at the edge of shared policy. Native and cross-platform choices are therefore trade-offs about where code lives and how much platform-specific behavior remains visible, not a referendum on whether one framework is morally superior.
Read the intro when the full event-and-state loop needs a careful map. Use the slides to compare ownership, lifetime, patterns, and sharing boundaries at a glance. Keep the cheatsheet close when reviewing a write policy or tracing a failure. Then use the exercise to make one draft save survive an offline interruption. That is where the folders stop posing and start answering questions.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://developer.android.com/topic/architecture
Supports
- Separation of concerns and lifecycle-aware state ownership
- UI, data, and optional domain layers
- Single sources of truth and unidirectional data flow
- https://developer.android.com/topic/architecture/ui-layer
Supports
- Immutable UI state, state holders, and event flow
- State flowing down and events flowing up
- https://developer.android.com/topic/architecture/data-layer
Supports
- Repository and data-source responsibilities
- Immutable data, source-of-truth, persistence, and testing boundaries
- https://developer.android.com/topic/architecture/domain-layer
Supports
- Optional use cases for complex or reused business logic
- https://developer.android.com/topic/architecture/data-layer/offline-first
Supports
- Local and network source coordination
- Local source-of-truth reads, queued writes, and synchronization concerns
- https://developer.apple.com/documentation/swiftui/model-data
Supports
- Declarative UI driven by model data
- State, binding, observation, and source-of-truth choices
- https://developer.apple.com/documentation/uikit/managing-your-app-s-life-cycle
Supports
- Foreground and background lifecycle constraints
- Scene and application delegate lifecycle ownership
- https://developer.apple.com/documentation/backgroundtasks
Supports
- System-scheduled background work and constrained execution
- https://docs.flutter.dev/app-architecture/guide
Supports
- Views, view models, repositories, services, and optional use cases
- Feature-oriented MVVM responsibilities
- https://docs.flutter.dev/app-architecture/recommendations
Supports
- Separation of concerns, repositories, MVVM, unidirectional flow, dependency injection, and tests
- https://reactnative.dev/docs/environment-setup
Supports
- Shared React Native application framework and native-project boundary
- Framework recommendation for production app capabilities
- https://kotlinlang.org/docs/multiplatform/multiplatform-share-on-platforms.html
Supports
- Shared source sets and platform-specific expected and actual declarations
- https://learn.microsoft.com/en-us/dotnet/architecture/maui/
Supports
- Modular, modifiable mobile applications, MVVM, dependency injection, and navigation
- https://github.com/sindresorhus/awesome
Supports
- Discovery of the Awesome iOS ecosystem list
- https://github.com/vsouza/awesome-ios
Supports
- Discovery of The Composable Architecture and RIBs as mobile architecture resources
- https://pointfreeco.github.io/swift-composable-architecture/1.9.0/documentation/composablearchitecture/
Supports
- State, actions, reducers, effects, dependencies, composition, and testing
- https://github.com/uber/RIBs
Supports
- Cross-platform business-driven mobile architecture and runtime trees
- https://android-developers.googleblog.com/2008/09/announcing-android-10-sdk-release-1.html
Supports
- Android 1.0 SDK release on 2008 Sep 23
- https://developer.apple.com/news/?id=04092010a
Supports
- iPhone SDK 4 beta and multitasking APIs on 2010 Apr 9
- https://engineering.fb.com/2015/03/26/android/react-native-bringing-modern-web-techniques-to-mobile/
Supports
- React Native for iOS open-sourced on 2015 Mar 26
- https://engineering.fb.com/2015/09/14/developer-tools/react-native-for-android-how-we-built-the-first-cross-platform-react-native-app/
Supports
- React Native for Android released on 2015 Sep 14
- https://blog.google/innovation-and-ai/technology/developers-tools/all-io17-announcements/
Supports
- Android app architecture guide and Architecture Components preview in 2017 May
- https://android-developers.googleblog.com/2018/05/use-android-jetpack-to-accelerate-your.html
Supports
- Android Jetpack announcement and integration of Architecture Components in 2018 May
- https://developers.googleblog.com/en/flutter-10-googles-portable-ui-toolkit/
Supports
- Flutter 1.0 stable release on 2018 Dec 4
- https://developer.apple.com/news/?id=06032019b
Supports
- SwiftUI announcement on 2019 Jun 3
- https://android-developers.googleblog.com/2021/07/jetpack-compose-announcement.html
Supports
- Jetpack Compose 1.0 stable release on 2021 Jul 28
- https://developer.android.com/jetpack
Supports
- Android Jetpack lifecycle, navigation, background work, and adaptive UI role
- https://developer.apple.com/documentation/technologyoverviews/swiftui
Supports
- SwiftUI app entry, data model, scenes, and declarative Apple-platform UI role
- https://flutter.dev/
Supports
- Open-source multi-platform framework and shared-code role
- https://reactnative.dev/
Supports
- React components rendered with native platform UI
- https://kotlinlang.org/multiplatform/
Supports
- Shared business logic and optional shared UI across targets
- https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui
Supports
- Open-source C sharp and X A M L cross-platform framework
- https://ionicframework.com/docs
Supports
- Open-source web UI toolkit and Angular, React, and Vue integrations
- https://capacitorjs.com/docs
Supports
- Web-native runtime, native container, and plugin boundary
