5.0.0 release notes
Released 2025-11-20
Highlights
Reducing hosting total cost of ownership
Based on the knowledge of hosting dozens of CHT instances for over a decade, Medic found disk space to be the main cost in hosting. CHT 5.0 uses CouchDB Nouveau to enable disk savings in excess of 30% for large instances.


Deployments which don’t see an immediate disk space savings, should either let run compaction run organically (this is the default configuration) or initiate compaction manually.
- #9542: Reduce disk space with CouchDB Nouveau (TCO v1)
Faster synchronization which uses less server CPU
As national deployments scaled to over 5,000 users, the server CPU became overburdened. Upon close inspection, one of the bottlenecks was found to be CHWs requesting the list of documents needed for replication. The API handling this request has been massively improved in CHT 5.0. This means synchronizations take less time and, in turn, reduces server load. This reduction enables the same server to handle more requests with only a software upgrade, without any hardware changes.
Seconds to synchronize (lower is better)
CHT 4.21
CHT 5.0
- #10262: Improve replication performance by moving docs_by_replication_key to nouveau
Welcome prompt when starting a new instance for how to easily add data
Administrators logging in to the CHT for the first time reported confusion about whether the app was working. They would see an error message saying No message selected. CHT 5.0 leverages existing training card technology to help administrators get started with adding contacts and configuring the app. This includes helpful tips:
- Get started by adding contacts and users
- To configure this instance for your specific workflows, see the documentation
- #10208: Instruct new deployments how to add data
Known issues
Check the repository for the latest known issues.
Upgrade notes
Breaking changes
As mentioned above, be sure to review the upgrade documentation before upgrading to appreciate what the following changes mean for your deployment:
- #10183: Replication fails to filter out reports with needs_signoff set to false
- #10429: Require Chrome 107 to support Angular uplift
- #5906: Make declarative config mandatory
- #8157: Deprecate enabling languages through generated docs
- #9202: Increase ecmaversion linting for ddocs
- #9542: Reduce disk space with CouchDB Nouveau (TCO v1)
- #9954: Hide upgrade button in admin app for k8s deployments, while still allowing staging upgrades
- #9983: Require
app_urlto be set when enablingtoken_login
UI/UX changes
None.
And more…
Features
- #10242: Display major version in admin upgrade UI so it’s clear if its 4.x or 5.x (or X.x!)
- #10208: Instruct new deployments how to add data
- #8340: Add impact metrics API
- #9869: Add user storage usage to user-devices API
- #9954: Hide upgrade button in admin app for k8s deployments, while still allowing staging upgrades
Improvements
- #10265: Add visual indicator of Nouveau indexing progress on API startup and Admin upgrade page
- #8147: Training cards display loading error when user does not have contact
- #8348: Adding error object to logger in sentinel/server.js
- #9542: Reduce disk space with CouchDB Nouveau (TCO v1)
- #9639: Remove pre 3.x db migrations and protect
migration-logdoc from edits - #9838: Refactor to use
cht-datasourcefor reading contacts by id (both with and without lineage)
Security fixes
None.
Performance improvements
- #10262: Improve replication performance by moving docs_by_replication_key to nouveau
- #10322: Identify and remove all unused couchdb views
- #10384: Using changes feed with _doc_ids filter causes performance issues
- #10468: Remove medic-scripts from medic database post upgrade.
Bug fixes
- #10183: Replication fails to filter out reports with needs_signoff set to false
- #10319: npm build fails on lastest master
- #8026: Admin app fails to update
brandingif existing document is malformed - #8027: Admin app fails to update
partnersif existing document is malformed - #9739: Can’t deselect all reports after selecting all reports
Technical improvements
- #10420: Test Cinque & Nouveau on large production data set
- #10467: Haproxy unit tests are failing in GHA
- #10023: Update
release-notesscript to include all commit co-authors in contributors list - #10079: Update
webappto read contacts with cht-datasource - #10186: Remove upgrade service from Helm charts
- #10203: Africa’s Talking documentation link provided is not working
- #10206: Remove ancient/deprecated/3.x scripts
- #10294: Branch name escape logic broken for semver
- #10309: API is throwing error in latest master for SMS workflows
- #10374: Flaky e2e test: Search Reports should navigate back to list view and return results when searching by case_id
- #10375: Flaky e2e test: Bikram Sambat date display should display report list dates converted to bikram sambat
- #10420: Test Cinque & Nouveau on large production data set
- #10429: Require Chrome 107 to support Angular uplift
- #5906: Make declarative config mandatory
- #8157: Deprecate enabling languages through generated docs
- #8220: Docker image build fails for branch names with reserved characters
- #8657: Delete transition code in telemetry service
- #8787: Remove indexedDB polyfill for Firefox
- #9202: Increase ecmaversion linting for ddocs
- #9499: UI Nav Work Image Replacement - Feature Messaging
- #9720: Support stateless API docker container
- #9921: Reports search
- #9992: Remove haproxy-healthcheck service from single-node CouchDb deployments
Contributors
Thanks to all who committed changes for this release!
Did this documentation help you ?

