Saturday, March 28, 2026
Punch item resolution on poor connectivity is risky—status can conflict when syncing. Allow users to mark punch items "resolved offline" with photo proof; auto-sync when reconnected and prevent duplicate updates. Builds confidence in offline-first workflows on job sites with spotty signals.
updated_at conflict resolution; add OfflinePunchCard widget showing sync status.
Field users capture dozens of photos daily in daily reports but don't see sync status. Add visual queue showing which photos are synced vs. queued; tap-to-retry failed uploads. Background sync via Workmanager (Android) + BackgroundFetch (iOS) keeps uploads flowing. Reduces field user anxiety about lost data.
SyncProgressCard to report screen; hook background tasks to PhotoSyncManager; show badges (✅ Synced, ⏳ Pending, ❌ Failed); expose retryFailed() on tap.
When a contractor replies to an RFI, momentum is lost if the user doesn't see the notification or has to dig through the app. Send FCM push notification on contractor response; tap opens the thread inline, allow voice reply directly. Keeps field workflow uninterrupted without app switching.
rfi_responses table to fire FCM via Cloud Function; payload includes RFI ID for deep linking; create InlineRFIReplySheet with voice recording button hooked to AudioService.