Cross-Platform Mobile App Development with Capacitor
Capacitor 6.x — native runtime for web applications: takes existing React, Vue or Angular SPA and runs it in native WebView (WKWebView on iOS, system WebView on Android), adding a bridge to native APIs via TypeScript plugins. Key difference from old Cordova: plugin architecture written from scratch in Swift/Kotlin, configuration via capacitor.config.ts not config.xml, and no dependency on cordova-android/cordova-ios platform wrappers.
This option works well when: client has ready web product needing to be «packaged» into app for stores, or when team — frontend developers without mobile experience, and project doesn't require high-performance animation.
Where limitations become visible
WebView doesn't give 120fps animation. Heavy list scrolling on mid-range Android phone (MediaTek Helio G85) gives noticeable jank — system WebView doesn't use hardware acceleration as aggressively as native ScrollView. Partial solution: overscroll-behavior: none in CSS, content-visibility: auto for virtualization, will-change: transform for animated elements. Problem doesn't fully go away.
Native APIs — via Capacitor Plugins: @capacitor/camera, @capacitor/geolocation, @capacitor/push-notifications, @capacitor/filesystem. If needed plugin doesn't exist — write custom one in Swift/Kotlin via npx cap plugin:generate. This already requires native experience.
Timelines and applicability
For projects with ready web application — 2 to 6 weeks for mobile UX adaptation, plugin setup, store review. Review — separate topic: App Store rejects «thin wrappers» over web site by rule 4.2 (minimum functionality). App must provide value unavailable in browser: offline mode, push notifications, camera work or filesystem access.
Cost calculated individually per native integration volume and existing web application state.







