Courier Service Client Mobile App Development
A courier service client app is what a user opens when waiting for a package or wanting to send one. The competitive advantage here is not functionality (it's the same everywhere), but how fast and frictionless order placement works and how clearly delivery status is displayed.
Order Placement: Addresses and Cost Calculation
Order form — "from" and "to". Address autocomplete via Google Places Autocomplete or Mapbox Search API with sessionToken for billing optimization. Determining current location with one tap and reverse geocoding: user shouldn't input their address manually.
Real-time cost calculation: change address — price updates. Debounce 500ms on input field to avoid API requests on every character. Skeleton loader while calculating — empty field with "—" is worse than animated placeholder.
Cargo type — dimensions, weight, fragility — affects price and courier selection. Simple selector: XS / S / M / L / XL with illustrations. Not a form with "width", "height", "weight" fields — kills conversion.
Real-time Tracking
After placing an order, user wants to see where the courier is. Map with courier marker updates every 3-5 seconds via WebSocket. Smooth marker animation — via ValueAnimator (Android) or CABasicAnimation (iOS) with position interpolation.
If app is minimized — push notifications on key statuses: courier accepted, left, arriving (5-10 minutes before ETA), delivered. ETA calculated on server via Distance Matrix API and updated in real-time.
Push "courier arriving in 5 minutes" requires server logic: tracking distance from courier to delivery point, trigger on threshold crossing. Client app doesn't calculate this — only receives and displays.
Live Activity (iOS 16+)
For iOS, implement ActivityKit Live Activities — interactive widget on lock screen and in Dynamic Island showing delivery status and ETA without opening the app. Updates via ActivityKit push updates (separate APNs channel). User sees progress on lock screen — significantly reduces app opens to check courier status.
History and Reorder
List of past orders with one-tap reorder — addresses and cargo type auto-filled. Saved addresses: home, work + up to 5 custom. Store in Keychain (iOS) / EncryptedSharedPreferences (Android), sync with backend.
Payment
Stripe or local payment processor with card saving (SetupIntent in Stripe for tokenization without real transaction). Apple Pay and Google Pay as quick option without card number input. Promo codes — field in form with server-side validation, not client-side.
Timeline: 6 to 10 weeks. Cost calculated individually after requirements analysis.







