3.4.0 release notes

Known issues

  • medic#5617: Broken functionality after upgrade to 3.4 with custom locales

Upgrade notes

Breaking changes

There are no breaking changes when upgrading from 3.3.x.

Supported software

There are no required changes to the supported software matrix from 3.0.0.

NodeCouchDBBrowsersSMS bridgeAndroidmedic-androidmedic-couch2pg
8.11+2.1+Chrome 53+, Firefox latestmedic-gateway4.4+0.4.5+3.0+

Scale to support more users

In previous versions users who had an internet connection would maintain a continuous request to the server waiting for any relevant database changes. For projects with thousands of users this caused the server to use a lot of memory to keep track of all of those requests.

This change removes the continuous replication in favor of making a short lived request when;

  • five minutes has passed since the last replication attempt,
  • the user creates or updates a document,
  • we detect the user has come back online, or
  • the user clicks the new “Sync now” button.

medic#4805 and medic#3976


Customizable branding

You can now configure the webapp logo, title, and favicon to use your project’s branding medic#4849. You can also add logos of your partners to show on the About page medic#4850. More information is available in the feature overview and the configuration documentation.

Improved performance loading Contacts tab

We made several changes to reduce the time it takes to load information on the Contacts tab.

And more…


  • medic#2031: Log user statistics on key user interactions to the database


  • medic-android#66: Only allow webview to access expected URLs
  • medic-conf#112: XForm without instanceID will not load
  • medic#3128: Ability to delete a translation key
  • medic#3762: Re-write permissions data structure to be object properties instead of an array to avoid duplicates
  • medic#4209: Show meaningful error when ‘username’ is already taken
  • medic#4598: Message’s translation key sent when translation is missing
  • medic#4599: Allow translation to nest another translation key
  • medic#4682: Remove blank UI elements in Enketo forms
  • medic#4694: Link the report to the scheduled task that caused the report to be created
  • medic#4733: Update the medic-android target API
  • medic#4796: Update the medic-gateway target API
  • medic#4922: Add a logout button in the admin app
  • medic#4960: Improve design and usability of admin app
  • medic#4973: Add a favicon to the admin app
  • medic#5035: Link to webapp from admin app
  • medic#5082: Make content-security-policy more strict
  • medic#5249: Country code and Gateway phone number fields shouldn’t be required
  • medic#5307: Swahili “starting app” translation missing

Performance fixes

  • medic#3466: Marking a report as verified is slow
  • medic#4936: Add performance checking to release testing workflow
  • medic#5050: Memory leak when switching between tabs
  • medic#5229: Resources doc re-downloaded on every change in list pages

Bug fixes

  • couch2pg#6: Update couch2pg to escape characters that postgres doesn’t support
  • medic#4279: Countdown timer does not show if there is a relevant
  • medic#4621: Invalid report not being replicated to facility user
  • medic#4697: Renaming an Area after generating a report will not update the report names
  • medic#4885: Schedules are not cleared for offline contacts/reports
  • medic#5018: Noto font not loading on the admin webapp
  • medic#5019: Reports with scheduled tasks and deleted patients fail to load
  • medic#5025: Fix favicon caching
  • medic#5027: Branding doesn’t work for offline users
  • medic#5029: Branding doesn’t update on login page
  • medic#5034: Horticulturalist postCleanup not actually cleaning up
  • medic#5057: Task titles on overdue tasks only are appearing red
  • medic#5062: Cannot start API after changes to the translation messages format
  • medic#5068: The released API bundle is missing shared-libs
  • medic#5071: Loading Targets tab as admin logs an Error
  • medic#5078: Forms still available after deleting them using medic-conf
  • medic#5108: All reports synced doesn’t notice new reports
  • medic#5109: Restarting API always triggers a new version prompt
  • medic#5186: Only send tombstone deletes when document is still deleted
  • medic#5234: Guard against bad HTTP codes in error reporting
  • medic#5250: Adding or deleting languages should update the UI without needing to refresh
  • medic#5270: Bootstrap failed retry button doesn’t work
  • medic#5271: Translations not updated after upgrade
  • medic#5272: Message queue not loading when translations are missing
  • medic#5277: Upgrades via admin upgrade page are broken
  • medic#5319: db-batch gets stuck in a loop
  • medic#5380: Check is missing in checkboxes
  • medic#5390: The accept_patient_reports transition clears sent tasks
  • medic#5409: Errors when navigating away from edited forms
  • medic#5432: Selecting no language and submitting is showing translation keys instead of default app language
  • medic#5482: Countdown timer sound is not playing
  • medic#5486: Logging in with an incorrect password shows an unhelpful error message
  • medic#5488: Reports are being created for the wrong contact
  • medic#5514: Images on the Reports tab are not displaying

Technical issues

  • medic#3476: Investigate and use travis build stages
  • medic#3925: Fix “db.type() is deprecated and will be removed in a future version of PouchDB”
  • medic#4814: Replace yarn with npm
  • medic#4932: Re-enable flakey e2e test: register by SMS
  • medic#5026: Deprecation warning running add-branding-doc migration
  • medic#5030: Switch to eslint
  • medic#5031: Write a script to import and export translations to POE
  • medic#5038: Fix flakey test: Reports Summary Displays correct LHS and RHS summary Concerning reports using patient_id
  • medic#5099: Fix and re-instate flakey e2e test
  • medic#5227: Clarify process for running e2e tests locally