React Native mobile app for warehouse order fulfillment with WooCommerce.
Allows warehouse staff to browse orders, scan barcodes to verify products, manage pick & pack workflows, and work offline with automatic sync.
- Orders Management — Browse, filter, and search WooCommerce orders. Pull-to-refresh and auto-polling for new orders.
- Batch Status Update — Long-press to select multiple orders, then change their status in one action. Select All supported.
- Swipe Actions — Swipe right on an order card to mark it completed, swipe left to view details.
- Shake to Undo — Shake your device to undo the last status change (single or batch).
- Status-specific Feedback — Different vibration patterns and sounds for each order status (completed, processing, on-hold, cancelled, failed).
- Order Notes — View and add order notes (private or customer-facing).
- Status Updates — Change order status directly from the app with confirmation dialogs.
- Barcode Scanning — Scan product barcodes using the device camera. Matches by SKU, then by meta keys (
_barcode,_ean,_gtin,_upc). - Flashlight Toggle — Turn on the camera torch for scanning in low-light environments.
- Scan History — Persisted list of the last 50 scans with product name, SKU, match status, and timestamp. Long-press to copy barcode.
- Export Scan History — Share scan history as CSV via the system share sheet.
- Camera Permissions — Automatic runtime permission request with fallback UI and link to device settings.
- Pick & Pack — Per-order picking workflow with inline scanner. Track picked/missing/damaged items with progress bar.
- Wave Picking — Consolidates multiple orders into a single pick list grouped by SKU. Reduces warehouse walks by picking each product once for all orders.
- Priority Queue — Automatic order scoring based on age, shipping method, value, and customer notes. Toggle priority sort to surface urgent orders first.
- Auto-Advance — After completing an order, the app offers to open the next pending/processing order automatically.
- Volume Button Scanner — Press any volume button to activate/reset the barcode scanner during picking (hands-free scanning).
- Daily Summary — Scheduled morning notification (8:00 AM) with pending/processing/on-hold order counts. Toggle in Settings.
- New Order Alerts — Push notification when a new order arrives.
- Offline Support — MMKV-backed local cache with mutation queue. Optimistic UI updates, auto-sync on reconnect with retry logic.
- Dark/Light/System Theme — Full theme support with system preference detection.
- Clipboard — Long-press to copy order numbers, SKUs, and barcodes.
- Node.js >= 22.11.0
- React Native CLI
- Xcode (iOS) / Android Studio (Android)
npm install
# iOS
cd ios && pod install && cd ..
# Run
npx react-native run-ios
npx react-native run-android- In your WooCommerce store, go to Settings > Advanced > REST API
- Create API keys with Read/Write permissions
- Open the app and enter your store URL, consumer key, and consumer secret
- MMKV over AsyncStorage — ~30x faster, synchronous reads, no UI jank on hydration
- Normalized store —
Record<number, WcOrder>for O(1) lookups, efficient single-order updates - Optimistic updates — UI updates immediately, rolls back on network error
- Mutation queue — FIFO with max 5 retries per mutation, auto-flush on reconnect
- Barcode matching — SKU first (most reliable), then common meta keys (
_barcode,_ean,_gtin,_upc) - Pick sessions not persisted — Fresh start on app restart for accuracy (v1)
- Status-specific haptics — Different vibration patterns per order status for tactile awareness
- Auto-advance picking — Reduces manual navigation between orders during high-volume fulfillment
- Wave picking — Greedy SKU-overlap grouping algorithm; picker visits each bin once for multiple orders
- Priority scoring — Weighted formula: age (0-40) + shipping method (0-30) + value (0-15) + note (0-10) + status (0-5)