Native iOS and Android App for Last-Mile Delivery Drivers
Optimize Driver is a mobile app that last-mile delivery drivers use to apply, run assigned routes, scan packages and record proof of delivery. VLO Labs builds and operates it as separate native apps for iPhone and Android, both listed in the public app stores.
- Industry
- Last-mile delivery and logistics software
- Project type
- VLO Labs product
- Status
- Live on iOS and Android
- Platforms
- iOS, Android
The challenge
A last-mile driver's working day runs on a phone, away from a desk and sometimes without a signal. During a shift the driver has to see the assigned stops, confirm which packages are on the vehicle, get directions, and leave a record of every delivery or failed attempt. The logistics company behind those deliveries needs that record to come back with photos, signatures and location attached.
Drivers also arrive in two different ways. Some are set up directly by the logistics company they work for. Others find the app, create an account and apply on their own. A self-registered driver cannot be handed routes straight away, because a dispatcher first has to review the driver's license and insurance. The app needed a useful state for that waiting period instead of an empty screen.
The app handles sensitive data, including precise location during routes, driver's license details and photos of identity documents. Because it is distributed publicly on the App Store and Google Play, it also has to meet store rules on background location and account deletion, including a way to request deletion without installing the app.
Our approach
VLO Labs built two native apps instead of one shared cross-platform codebase: Kotlin with Jetpack Compose on Android, and Swift with SwiftUI on iOS. Both apps use the same MVVM and repository structure and connect to the same backend API, and rules such as offline handling and notification routing are defined the same way on both.
Business decisions stay on the server. The apps show stops in the order the backend returns them. Driver approval is enforced by the server, and when a driver scans out a package, the server decides which route it joins. The backend includes an integration with a routing service built on OSRM for road networks and VROOM for stop sequencing, which dispatchers can run from their web dashboard.
Data handling follows what the work requires. Precise location is collected while a route is active. Onboarding documents go to private storage and are opened through signed links. Deleting an account erases the profile, license details, uploaded documents and location history. Completed delivery records are kept in de-identified form only where the logistics company has a legal or contractual obligation to keep them.
What we built
Driver sign-up and onboarding
Drivers create an account in the app, enter license details, and upload their license, proof of insurance and, where asked, vehicle registration. The app shows the review status, and routes appear after a dispatcher approves the account.
Routes and stops
Assigned routes show order counts, estimated distance and duration, and a map with the pickup and numbered stops. Drivers start and complete routes, browse past routes by date, and open directions in Apple Maps or Google Maps.
Package scanning
Drivers scan barcodes with the phone camera or with a Bluetooth or USB scanner paired to the phone. Routes can have scan confirmation turned on to track which packages are in the driver's possession, and accounts set up for it can scan packages out for delivery from the home screen.
Proof of delivery and failed deliveries
Drivers capture a photo and a signature on an in-app pad, and each order sets whether those are required. Failed deliveries use a fixed list of reasons, such as wrong address or refused, with evidence photos.
Notifications and in-app support
Push notifications tell drivers when a route has been assigned, and tapping one opens that route. The app keeps a notification list with an unread count, and drivers can open support tickets and chat with support without leaving the app.
Account controls
Drivers can edit their profile, turn push notifications off, and delete their account from the main Profile screen. A public page on vlolabs.com accepts deletion requests from people who no longer have the app installed.
Engineering highlights
Offline actions with explicit replay rules
When a connection fails, delivery completions, failures, status changes and package scans are saved on the device and sent again once the phone is back online. Requests the server rejects are dropped, server errors are retried up to three times, and a held action also holds later actions for the same route or order so steps do not apply out of sequence.
Location tracking that tolerates weak signal
Each location fix is sent live, spaced at least 15 seconds and 10 meters apart. Fixes that fail to send are stored on the device, up to 100 of them, and uploaded as a batch when the connection returns.
Visual changes without an app release
Colors, corner radii, text sizes and button styling come from design values the server can change. The server sends data only, each value is validated on its own, and a new theme applies at the next launch so the screen never restyles while a driver is mid-route. If anything is wrong, the app falls back to its last good or bundled theme.
Support logs that leave out secrets
The apps keep in-app debug logs that support can ask a driver to open. Before anything is stored, a redaction step removes credentials, signed file links and photo data. The Android version has automated unit tests.
Where it stands
- App Store
- Live, version 1.0.3, seller VLO LABS, INC.
- Google Play
- Live, developer VLO Labs, Inc.
- Supported devices
- iOS 17 or later, Android 8.0 or later
- Public privacy and deletion pages
- Published on vlolabs.com
Technology
Links
Related services
Have something similar in mind?
Tell us what you need to build and we will give you a straight answer on how to approach it.
Get a free consultation