Nativní iOS/Android vývoj
Plný výkon platformy. Žádné kompromisy.
Stavíme nativní mobilní aplikace ve Swift a Kotlin s architekturou, která vydrží roky provozu a tisíce uživatelů.
Proč nativní vývoj¶
Cross-platform frameworky ušetří čas na startu. Nativní vývoj ušetří problémy v produkci.
Když potřebujete Bluetooth Low Energy komunikaci se skenerem v ruce skladníka, background location tracking pro řidiče, nebo custom kamerový pipeline pro OCR na výrobní lince — cross-platform abstrakce vás zpomalí víc, než ušetří. Každý wrapper přidává latenci, omezuje přístup k platformním API a komplikuje debugging.
Swift (iOS) a Kotlin (Android) dávají plný, neomezený přístup ke všemu, co platforma nabízí. ARKit/ARCore pro augmented reality, Core ML/ML Kit pro on-device inference, HealthKit/Health Connect pro zdravotní data, CallKit pro VoIP, WidgetKit pro home screen widgety. Žádné čekání na to, až framework autoři wrapper dopíší.
Výkon bez kompromisů¶
Nativní kód běží přímo na hardware. Žádný JavaScript bridge, žádný Dart VM overhead. Pro většinu CRUD aplikací to není rozdíl. Pro real-time camera processing, complex animations, nebo heavy computation je to propast:
- Frame rate: Stabilních 60 fps (120 fps na ProMotion zařízeních) i při komplexních animacích
- Memory footprint: Přímá kontrola nad alokacemi, ARC/GC optimalizace per platformu
- Startup time: Cold start pod 1.5s, warm start pod 500ms
- Battery: Optimalizovaný background processing, žádný zbytečný bridging overhead
Architektura pro enterprise¶
Enterprise mobilní aplikace není todo list. Je to systém, který musí fungovat roky, přežít turnover vývojářů, zvládnout desítky obrazovek a stovky business rules. Architektura rozhoduje.
Clean Architecture + MVVM¶
Oddělujeme zodpovědnosti do vrstev, které se mění nezávisle:
Domain layer — čistá business logika, Use Cases. Neví nic o UI, databázi, síti. Testovatelná unit testy bez jakýchkoliv závislostí. ProcessOrderUseCase, ValidateDeliveryUseCase — každý use case dělá jednu věc.
Data layer — Repository pattern. Abstrakce nad zdroji dat (API, lokální DB, cache). Repository rozhoduje, odkud data vezme: cache? Síť? Obojí? Business logika neví a neřeší.
Presentation layer — ViewModels pro state management. SwiftUI na iOS, Jetpack Compose na Androidu. Unidirectional data flow — stav teče jedním směrem, žádné race conditions, předvídatelné chování.
Dependency injection: Hilt/Koin na Androidu, Swinject na iOS. Každá závislost je injektovatelná a mockable. Testovatelné na každé vrstvě — unit testy pro logiku, integration testy pro data layer, UI testy pro flows.
Kotlin Multiplatform (KMP)¶
Kde dává smysl sdílet kód, sdílíme. KMP modul pro:
- Networking: Ktor client, serialization, API modely
- Business rules: Validace, výpočty, transformace
- Caching: SQLDelight pro lokální databázi
- State management: Shared ViewModels s expect/actual pro platformní specifika
UI zůstává čistě nativní — SwiftUI a Jetpack Compose. Výsledek: 40-60% sdíleného kódu, 100% nativní UX. Žádné kompromisy v uživatelském zážitku.
Design systém¶
Každá enterprise aplikace potřebuje design systém. Ne proto, že je to trendy — proto, že bez něj je UI po roce nevypadlé konzistentně a nové obrazovky trvají 3× déle.
Figma → kód pipeline¶
Design tokens (barvy, spacing, typography, shadows) definované v Figma, exportované do kódu. Změna brand barvy = změna na jednom místě, propagace across celé aplikace. Reusable komponenty: CoreButton, CoreCard, CoreListItem — konzistentní chování a vzhled.
Accessibility od začátku¶
VoiceOver (iOS) a TalkBack (Android) nejsou afterthought. Semantic labels, focus management, dynamic type support. Kontrastní poměry podle WCAG 2.1 AA. Accessibility není jen pro nevidomé — je to kvalitní UI pro všechny.
Kdy nativní, kdy cross-platform¶
Rozhodujeme na základě požadavků, ne ideologie:
| Kritérium | Nativní (Swift/Kotlin) | Cross-platform (RN/Flutter) |
|---|---|---|
| Hardware přístup (BLE, NFC, kamera) | ✅ Plný, bez wrapperů | ⚠️ Přes bridge, limitace |
| Výkon (animace, real-time) | ✅ Maximum | ⚠️ Dostatečný pro většinu |
| Time-to-market | ⚠️ Delší (2 codebase) | ✅ Kratší (1 codebase) |
| Dlouhodobá údržba | ✅ Stabilní, platformní updates | ⚠️ Závislost na frameworku |
| Budget | ⚠️ Vyšší | ✅ Nižší |
Naše doporučení: Pro provozní aplikace s hardwarovými požadavky, offline režimem a dlouhým životním cyklem volíme nativní. Pro MVP, interní nástroje a content-driven aplikace zvažujeme cross-platform.
Technologický stack¶
iOS: Swift, SwiftUI, UIKit, Combine, async/await, Core Data, SwiftData, Keychain, XCTest, Swift Testing, Xcode Cloud.
Android: Kotlin, Jetpack Compose, Coroutines/Flow, Room, Hilt, DataStore, Espresso, JUnit5, Gradle.
Shared: Kotlin Multiplatform, Ktor, SQLDelight, kotlinx.serialization, Turbine.
CI/CD: Fastlane, GitHub Actions, Bitrise, Firebase App Distribution, TestFlight.
Časté otázky
Nativní volíme pro hardware-intenzivní aplikace (BLE, NFC, kamera, AR), vysoké výkonnostní požadavky, komplexní animace a dlouhodobé projekty s dedikovanými týmy. Cross-platform (React Native, Flutter) má smysl pro jednodušší CRUD aplikace, rychlý time-to-market nebo omezený rozpočet.
Business logiku sdílíme přes Kotlin Multiplatform (KMP) — shared modul pro networking, caching, business rules. UI zůstává nativní (SwiftUI, Jetpack Compose). Výsledek: 40-60% sdíleného kódu při zachování plně nativního UX.
MVVM s Clean Architecture. Repository pattern pro data layer, Use Cases pro business logiku, ViewModels pro prezentační vrstvu. Dependency injection (Hilt na Androidu, Swinject na iOS). Testovatelné na každé vrstvě.
MVP za 6-8 týdnů. Plnohodnotná aplikace s offline režimem, integrací a CI/CD: 3-6 měsíců. Závisí na rozsahu — discovery workshop pomůže upřesnit scope a timeline.
Ano. Reusable component library specifická pro projekt. Figma → kód pipeline s design tokens. Accessibility (VoiceOver, TalkBack) od začátku. Konzistentní UX across celé aplikace, rychlejší vývoj nových obrazovek.