Lesson 1 of 4
Native or cross-platform: choosing how to build
2 min read
The options
| Approach | Languages | Strengths | Trade-offs |
|---|---|---|---|
| Native Android | Kotlin (Java) | best performance, full platform APIs, first access to new features | Android only |
| Native iOS | Swift | same, for Apple devices | iOS only; needs a Mac |
| Flutter | Dart | one codebase, own rendering engine, consistent pixel-perfect UI, fast hot reload | larger app size; platform features through plugins |
| React Native | JavaScript/TypeScript | one codebase, React skills reused, native UI components | bridge/JSI complexity for heavy native work |
| Kotlin Multiplatform | Kotlin | shared business logic, native UI on each side | younger ecosystem |
India is Android-first (well over 90% of phones), and many devices are budget phones with limited memory, storage and patchy connectivity. Designing for those constraints is a selling point in interviews.
How to choose (an interview-ready answer)
- One small team needing both platforms quickly → Flutter or React Native.
- Heavy device integration (camera processing, Bluetooth, background services) or top performance → native.
- An existing React web team → React Native.
- Most real companies are pragmatic: cross-platform for most screens, native modules where needed.
Mobile is different from web
- Lifecycle: the OS can pause or kill your app at any time to save memory and battery.
- Unreliable networks: offline-first thinking, retries, caching.
- Limited resources: memory, battery, storage, CPU on low-end phones.
- Permissions: camera, location and notifications must be requested in context and can be denied.
- Release process: store review, staged rollouts, and users who don't update for months, so your backend must support old app versions.
Check yourself
- When would you choose native over Flutter?
- Name three ways mobile development differs from web development.
Sign up free to save your progress.