page
Mobile development MOC
Introduction to Mobile development
Mobile development allows you to put software that interacts with both the humans and the physical world in the hands of almost everyone in the world.
This type of development involves working with mobile platforms, most commonly iOS OS and Android OS, which are pretty capable platforms having many features in a compact and easy-to-carry format that almost everyone in the world has access to. Building mobile apps allows to distribute software that can interact with users as well as the physical world trough the phone’s sensors.
Characteristics
- User-centric: Building mobile apps is all about the user experience, expectations on performance and UI. But it also allows you to interact with the device’s features, like notifications, widgets, other apps installed or GPS, Camera, etc.
- Resource limitations: Mobile platforms are constrained environments, both on CPU and Battery, that’s why each platform allow some kind of interaction with the lifecycle of your process to execute work where it matters the most and not waste resources on things that the user won’t use.
- Offline and Online functionality: Although most apps use or rely on the network, mobile apps have a core difference from i.e. Web development, where internet connection is expected. In the mobile world, the user can or can’t be connected or can even transition between different network statuses. That’s why in the mobile world network errors are expected and should be handled without harming UX.
- Security and data protection: Having access to such powerful device on everybody’s pocket also opens up a lot of security implications, that’s why in the mobile world it is required to be transparent about the usage of certain features trough permissions which are presented to the user, your app should handle scenarios where certain feature is disabled or the user doesn’t want to allow your app access to that specific feature.
- Platform updates: Mobile Operating systems go under constant updates, which change how your app works on the each newer version, forcing you as a developer to keep up-to date with the changes, update your app and test with newer to ensure backwards-compatibility.
- Stores: Although Stores are optional in some platforms like Android, they are the main distribution channel where most users have access and go to. These stores have acceptance criteria which determines wether or not your app is allowed on their store. This usually requires having a developer account, that usually has a cost and having some marketing material to show off your app in their store is needed.
- App updates: Once an app published, it usually requires updates, wether bugfixes, security or new features, these updates need to get to the app’s users. This is done by producing a new binary and distributing it, usually, trough a store, which will take some time to review it, and even when approved, the users will take some time to update the app (or they can even never update it). This makes iterations in mobile apps really slow.
Do you really need a mobile app?
Why you might need an app
- Convenience: Ideal for quick every day tasks that a user will want to access frequently, even in short windows of time.
- Offline access: Does your product needs offline functionality
- Hardware access: If your product requires specific hardware access (that might not be supported by the browser) a mobile app might be needed.
- Core to business: If an app is core to your business model
Why you might not want an app
- Development & Maintenance cost: Mobile apps are considerably more expensive, since it usually involves at least two platforms (meaning two codebases) and having to maintain the app updated and tested with the lates OS releases.
- Limited use case: If users do not need frequent interaction or device features, a simple website or web app is often more practical
- Alternative Solutions Exist: If a website provides everything users need, an app may add little value and risk being redundant
- User Demand Uncertainty: There’s fierce competition with millions of apps—users download few, so new apps may struggle to gain traction
Comparison between other platforms
| Characteristics | Mobile | Web | Desktop |
|---|---|---|---|
| **Access to Device Features ** | Full access (camera, GPS, sensors, notifications) | Limited, via browser APIs | Full access to hardware and peripherals |
| **Offline Functionality ** | Often designed for offline use and sync | Limited offline support (via PWA technologies) | Full offline capability |
| **User Engagement ** | Push notifications, integrated with device | Email alerts, limited push notifications | Limited direct engagement tools |
| **Development Cost ** | Often higher due to multiple platforms and app store compliance | Lower, single codebase for all platforms | Medium to high, depending on platform and complexity |
| Installation & Distribution | Installed via app stores | No installation needed, accessed via URL | Installed locally on the system |
| Platform Dependency | Platform-specific (iOS, Android) with native SDKs or cross-platform tools | Platform-independent (runs in browsers) | Platform-specific (Windows, macOS, Linux) |
| **Development Complexity ** | Requires knowledge of platform-specific languages or cross-platform frameworks | Uses standard web technologies (HTML, CSS, JS) | Uses platform-specific languages and frameworks |
| **Update Process ** | Updates through app stores, user-dependent | Instant updates for all users | Updates need manual installation or auto-update setup |
| Security | High focus on data protection, platform-enforced security | Depends on web security practices | High security with OS-level protections |
Native Development
Android Development MOC
iOS Development MOC
Cross-Platform
Progressive Web Apps
ReactNative
Kotlin Multiplatform
Compose Multiplatfrom
Flutter