E-Commerce Mobile App Development
A mobile shopping app competes not with your own website — it competes with OZON, Wildberries, Rozetka apps. Users know how cart, search, and checkout should work. Any deviation from the familiar pattern raises abandoned cart rates.
Catalog and Performance
Most common bottleneck — catalog screen with images. UICollectionView / LazyVerticalGrid stutters on scroll if image decoding is synchronous. Solution: SDWebImage (iOS) / Coil (Android) with disk caching and prefetch on UICollectionViewDataSourcePrefetching / PagingSource. React Native — use FlashList instead of FlatList for large lists: virtualization is more reliable, no issues with keyExtractor and getItemLayout.
Images are the main data download reason. Use WebP (25–30% smaller than JPEG at comparable quality), lazy loading, size for actual UIImageView — don't load 2000x2000 for 150x150 preview.
Search and Filters
Search bar with 300ms debounce → query to search endpoint (Elasticsearch/Meilisearch backend). Autocomplete for popular queries and product names. Search history in UserDefaults/DataStore Preferences.
Filters — separate screen (bottom sheet or modal): category, price (RangeSlider), brand, size, color. Applying filter shouldn't reload entire catalog — just update URL parameters and show skeleton-loader while fetching new results.
Active filters — chips above catalog with X to quickly remove. This is standard; without it, users get lost.
Cart and Checkout
Cart syncs with server — not just UserDefaults. User adds item on phone, opens app on tablet — sees same cart. Mechanism: on each cart change (add/remove/quantity) — PATCH /cart in background. When opening cart screen — GET /cart for sync.
Checkout — critical flow. Max steps: address → delivery → payment → confirmation. Pre-fill everything possible (address from profile, saved card). Apple Pay and Google Pay are mandatory: 15–20% higher checkout conversion in e-commerce (Stripe data).
One-tap checkout for returning users: saved address + saved card → one confirmation screen.
Profile and Order History
Order history — paginated list with status filter. Detail page: items, delivery tracking, ability to cancel or start return. Tracking — either via delivery service API (CDEK, Russian Post, Nova Post) or link to their website.
Push notifications by order status mandatory: "Your order shipped", "Order arrived at pickup point". FCM + APNs with rich notifications (product photo in notification).
Reviews and Ratings
Review with photo: user uploads from gallery or camera. Upload via pre-signed S3 URL directly from device (saves traffic and time). Product rating — stars + review count on card and detail page.
Stack
Flutter is optimal for e-commerce with one codebase for iOS and Android: Riverpod for state, Dio for HTTP, Hive/Isar for local catalog cache, cached_network_image for images. React Native as alternative with JS-experienced team. Native SwiftUI/Jetpack Compose when maximum performance or hardware integration needed.
Process
Backend API audit (or design from scratch) → UI/UX design → develop catalog and search → cart and checkout → profile → payment integration → push notifications → testing → launch.
Timeline
MVP (catalog, search, cart, checkout with one payment method, order history): 4–8 weeks. Full app with reviews, wishlists, loyalty program, tracking, push campaigns: 2–4 months. Pricing calculated individually.







