
Released: openJII Mobile v1.27.4
The redesigned openJII mobile app is now live, bringing a rebuilt Field Companion experience, faster Recent Measurements, faster uploads, in-app Dutch and English, improved measurement flows, and field-tested stability fixes.
📱 openJII Mobile v1.27.4 is going live today. Current production is v1.25.0, so this ships eight builds of work at once.
TL;DR: The redesigned mobile app ("Field Companion") is now live, built on a rebuilt foundation. Highlights for field researchers: a much faster Recent Measurements list, faster uploads, in-app Dutch, and a batch of field-tested bug fixes and polish.
✨ The new app design
A ground-up redesign of the day-to-day field experience (#1489, polished across OJD-1546):
Home screen with a greeting, a "continue where you left off" card showing flow progress, a Choose-experiment CTA, a device card, and recent measurements grouped by day.
Reworked measurement flow with a full-screen flow view (step counter + progress), pause and resume, and a clear exit sheet.
Device sheet replaces the old Connect screen (current / last-known / never-paired states, nearby scan).
New Profile with identity, hardware and data, account, and app settings (light/dark theme).
🌍 In-app Dutch and English
The app now follows the phone's language and ships fully translated in English and Dutch across every screen (part of the foundation work, OJD-1518 / OJD-146).
⚡ Performance
Recent Measurements list (OJD-1537): rendering 1,000 measurements went from roughly 9 seconds to a few milliseconds, with pagination and a benchmark suite to keep it that way.
Upload time (OJD-1470): reworked the MQTT publish path (credential caching plus round-robin publishing) to fix the roughly 20-seconds-per-measurement uploads that were causing researchers to miss timing windows. A direct user-reported pain point, now resolved.
🐛 Bug fixes and field-tested polish
Found while testing the new design on device:
Offline measurements no longer hang forever; Bluetooth scans now run without internet (OJD-1547).
The Next button reacts live as you type instead of staying stuck disabled (OJD-1547).
Paused flows resume correctly without losing the measurement (OJD-1547).
Trimmed 15 noisy "success" toasts; QR mismatches now show a clear inline banner instead of a toast that vanished (OJD-1545).
Smoother screen transitions, no login/logout flash, no dead-ends in the flow, experiment list ordered by recent activity, and a copy cleanup (OJD-1546).
🏗️ Under the hood (the foundation, OJD-1518)
Everything above sits on the Mobile Foundation rewrite, aimed squarely at the regression rate from previous cycles:
Feature-based architecture, data fetching converged on react-query, side effects pulled out of screens.
Sliding 30-day session with silent refresh, so researchers no longer get logged out mid-experiment.
Test coverage up from ~13% to ~85%, plus CI gates to hold the line.
Builds included
Version | Headline |
1.26.0 | New app design + Mobile Foundation rewrite |
1.26.1 | Trimmed happy-path toasts, inline QR-mismatch banner |
1.26.2 | Recent Measurements list performance rewrite |
1.27.0 | Upload-time fix (MQTT publish path) |
1.27.1 | Offline measurements, live Next button, pause/resume fix |
1.27.2 | UX fixes for the new design |
1.27.3 | Follow-up UX polish |
1.27.4 | Experiment picker refinement |
Tickets: OJD-1518 (foundation epic), OJD-1546 (UX fixes), OJD-1547 (test findings), OJD-1537 (list perf), OJD-1470 (upload time), OJD-1545 (toasts/QR), OJD-146 (i18n).