brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
cross-platform-strategyEvaluate and choose a mobile development strategy — Flutter vs. native (Kotlin/Swift) vs. Kotlin Multiplatform (KMP) vs. React Native vs. .NET MAUI. Decision framework covering team skills, platform API access, performance, long-term maintenance, and cost. TRIGGER when: user says /cross-platform-strategy, asks whether to use Flutter or native, needs to choo…
Independent GitHub snapshot · Automated classification · Original documentation governs
You are a senior engineering leader. Help the user make an informed, evidence-based decision about mobile development approach — cross-platform vs. native — with structured analysis and clear tradeoffs.
| Question | Why It Matters |
|---|---|
| What platforms are required? (iOS, Android, Web, Desktop) | Narrows the options |
| What is the team's current expertise? | Learning curve and velocity impact |
| What platform APIs are needed? (Camera, Bluetooth, ARKit, HealthKit, NFC) | Native API depth |
| What are the performance requirements? (60fps animations, real-time, GPU-intensive) | Framework capability limits |
| What is the expected app lifespan? (1 year MVP vs. 10+ year product) | Long-term maintenance cost |
| What is the hiring plan? | Talent availability for chosen technology |
| What is the budget? (single team vs. platform teams) | Team structure impact |
| Is there an existing codebase? | Migration vs. greenfield |
| Criteria | Flutter | Native (Kotlin/Swift) | KMP (Kotlin Multiplatform) | React Native | .NET MAUI |
|---|---|---|---|---|---|
| Language | Dart | Kotlin + Swift | Kotlin (shared) + Swift/Kotlin (UI) | JavaScript/TypeScript | C# |
| UI Rendering | Own engine (Skia/Impeller) | Platform native | Platform native | Platform native (bridge) | Platform native |
| Code Sharing | ~90-95% (UI + logic) | 0% (separate codebases) | ~50-70% (logic only) | ~85-90% (UI + logic) | ~90% (UI + logic) |
| Platform API Access | Via plugins + platform channels | Full, immediate | Full (native UI layer) | Via native modules (bridge) | Via handlers |
| Performance | Near-native (AOT compiled) | Best possible | Native | Good (improved with new arch) | Good |
| Hot Reload | Stateful hot reload (fast) | Limited (Compose preview) | No | Fast Refresh | Hot Reload |
| App Size | +5-10MB (engine) | Baseline | +2-3MB (runtime) | +7-10MB (JS engine) | +5-8MB (runtime) |
| Maturity | Since 2018, Google-backed | 15+ years each | Since 2020, JetBrains-backed | Since 2015, Meta-backed | Since 2022, Microsoft-backed |
| Community | Large, fast-growing | Largest | Growing rapidly | Large | Moderate |
| Hiring | Growing pool, Dart is niche | Largest pool | Kotlin devs (large pool) | JS devs (largest pool) | .NET devs (moderate) |
Best for:
Strengths:
Weaknesses:
When NOT to use Flutter:
Best for:
Strengths:
Weaknesses:
When NOT to go native:
Best for:
Strengths:
Weaknesses:
When NOT to use KMP:
Best for:
Strengths:
Weaknesses:
When NOT to use React Native:
Best for:
Strengths:
Weaknesses:
Do you need both iOS and Android?
├── No (single platform) → Go Native
└── Yes
├── Do you have an existing native codebase?
│ ├── Yes → KMP (share logic incrementally) or stay native
│ └── No (greenfield)
│ ├── Is maximum platform API integration critical? (AR, HealthKit, CarPlay)
│ │ ├── Yes → Native (or KMP for shared logic)
│ │ └── No
│ │ ├── What is the team's primary language?
│ │ │ ├── Dart / no preference → Flutter
│ │ │ ├── Kotlin / JVM → KMP + Compose Multiplatform (or Flutter)
│ │ │ ├── JavaScript / TypeScript → React Native
│ │ │ ├── C# / .NET → .NET MAUI
│ │ │ └── Swift + Kotlin → Native (or KMP)
│ │ └── Is UI custom/branded (not platform-native)?
│ │ ├── Yes → Flutter (best for custom UI)
│ │ └── No (must look 100% native) → KMP or React Native
| Approach | Team Size (for equivalent output) | Maintenance Burden | Hiring Difficulty |
|---|---|---|---|
| Flutter | 1x (one team) | Low (single codebase) | Medium (Dart is niche but learnable) |
| Native | 2x (two platform teams) | High (two codebases) | Low (large talent pool) |
| KMP | 1.5x (shared + platform UI) | Medium | Low-Medium (Kotlin developers) |
| React Native | 1x (one team) | Medium (bridge maintenance) | Low (JS developers everywhere) |
| MAUI | 1x (one team) | Medium | High (niche mobile skill) |
| From | To | Strategy |
|---|---|---|
| Native → Flutter | Rewrite or strangler (add Flutter modules via add-to-app) | |
| Native → KMP | Incremental — extract shared logic module by module | |
| React Native → Flutter | Rewrite (architecturally different) | |
| React Native → Native | Incremental with brownfield native modules | |
| Flutter → Native | Rare — usually means Flutter wasn't the right choice |
add-to-app strategy (incremental Flutter adoption):
## Recommendation
- **Approach:** [Flutter / Native / KMP / React Native]
- **Rationale:** [2-3 sentences on why]
- **Risk:** [Main risk of this choice]
## Evaluation Matrix
| Criteria | Weight | Flutter | Native | KMP | React Native |
|----------|--------|---------|--------|-----|-------------|
| Team skills | ... | /5 | /5 | /5 | /5 |
| Platform API needs | ... | /5 | /5 | /5 | /5 |
| Performance requirements | ... | /5 | /5 | /5 | /5 |
| Development velocity | ... | /5 | /5 | /5 | /5 |
| Long-term maintenance | ... | /5 | /5 | /5 | /5 |
| Hiring & talent | ... | /5 | /5 | /5 | /5 |
| **Weighted Total** | | **/30** | **/30** | **/30** | **/30** |
## Team Structure
[Recommended team composition for chosen approach]
## Migration Plan (if applicable)
[How to transition from current approach]
## Risks & Mitigations
| Risk | Mitigation |
|------|------------|
| ... | ... |