Case Loads on CommCare

A frequent question about using CommCare is, "how many cases are too many?"

This question has many dimensions, and this page is intended to help you think through them.

The acceptable number of cases varies depending on several factors:

  • How big the case is

  • The device/phone

  • The Web App

  • The complexity of what you are doing in your app

  • How long your users can wait for a case list transaction or a sync

Best Practice

We suggest the following number of cases for a single case type be technically feasible and considered best practice:

  • CommCare for Android: 10,000

  • CommCare for Web Apps: 10,000

However, testing a realistic transaction of cases on your phone or Web App is essential when approaching these numbers. Even though having 10,000 cases on your phone or Web App is possible, it does not mean it is operationally feasible.

A rough rule of thumb for an "average" case is that every 25 cases or so will add an additional second to the sync process.

We suggest keeping each sync with the server to update cases below 1000. This will determine the number of cases on each phone or Web App.

Example

If you use case sharing and need to sync data frequently, it may take close to a minute each time. This may not be acceptable in some workflows.

Performance Issues

Slow loading of the Case List

Applications are great at filtering cases for a case list based on case type or based on parent-child case relationships.

Example

If you have 500 mothers with 10 children each, the case list for the mothers can load in a reasonable amount of time. Displaying a mother's 10 child cases should be even faster. However, showing all children would take more time. 

Case list load time is negatively affected by how much case data gets displayed on the case list or used in sorting. Additional filtering based on case properties will also negatively affect how long it takes to load a case list.

If performance is your primary concern, we suggest the smallest number of case properties be accessed when building the case list.

Slow Sync with Server

The sync time with the server is affected by the total number of cases on the phone or Web App. Therefore, the first sync will be slower. However, subsequent syncs will be faster and are less likely to time out.

The server calculates the data to be sent to the phone or Web App during the first sync request. The server will cache the data for subsequent requests even if the first sync times out.

How to Test

Generally, we recommend testing your particular scenario with cases created using the Excel importer tool.