CommCare Limits Guide

CommCare Limits Guide

 

Mobile tab mockup.png

 

This page outlines key product limits in CommCare to help guide system design for optimal performance.

Performance depends on many factors, such as device type, data volume, application complexity, workflows, and connectivity. CommCare is designed to be flexible, with some enforced limits (e.g., maximum case name length) and others left open to fit a wide range of use cases. For example, 40 simple apps with low data may perform better than 20 complex apps, so while we recommend 30 applications, the best number depends on your context.

We encourage real-world testing to confirm performance. If you have questions or do not see a specific feature, contact the CommCare team.

App Structure

Type

Limit

* = Strict Limit

Notes

Type

Limit

* = Strict Limit

Notes

Applications per Project

30 Apps

More apps = slower web app and app preview performance.

Keep this in mind when building applications with the intention to scale in a project space. The more apps operating at scale within a project space, the worse the performance of web apps/app preview.

Forms in an App

100 forms

Not only does the number of forms affect performance, but it affects usability, too. Imagine being a web user trying to build an app and sort through more than 100 forms!

Questions per Form

1,000 questions (including hidden values and labels)

Even with display conditions, having forms with lots of questions can slow things down. A form with 1,000 questions takes approximately 1.5 hours to fill in if answered straight through.

Case Properties per Case Type

250 case properties

Find yourself exceeding 250 case properties? Consider Child Cases.

At around 1,000 case properties certain functionality will be unusably slow.

At 2,000 some things will stop working entirely.

Form Question ID Length

1,000 Characters*

Tip: Make IDs meaningful but readable — balance clarity and brevity. Remember that question IDs are the default column headers for your exports, too, so keeping them clear and concise from the start will help you not only in app building, but also when it’s time to export data.

Case Name / Case Property Name Length

255 characters*

Same advice as question IDs: clear but concise names work best.

Value Length for Questions and Case Properties

32,767 characters*

This is an Excel-based cell limit. Most choice values and answers will come far under this limit. It can be useful for long text fields, but be cautious of storing too many large values so you don’t undermine performance.

Conditional Alerts (Email & SMS)

10 alerts per project

Conditional Alerts are run on case save. This means that too many alerts on the same case type can cause slowdowns.

Locations & Lookup Tables

Type

Guidelines

Notes

Type

Guidelines

Notes

Location Structure

100,000 locations

We recommend keeping location structures below 10,000, but have seen projects successfully use up to 115,000.

Locations are a useful feature for limiting access to data, but the size of a location structure should be kept to a minimum. The larger the structure, the longer a query to determine what a user can access will take. This will negatively impact load times for pages that display or depend on locations, resulting in a degraded user experience.

Lookup Tables

500,000 rows

For better usability, try to keep it under 10,000.

Number of Groups

100 groups

 

Data Actions and Workflows

Type

Guidelines/Limit

  • = Strict Limit

Notes

Type

Guidelines/Limit

  • = Strict Limit

Notes

Case Updates (All Sources Combined)

CommCare limits case updates from all sources as described in CommCare Rate Limiting.

CommCare won’t always enforce these limits, but it is in a project’s best interest to plan around these limits. This will ensure that case updates always happen in a timely manner.

Form Submissions

CommCare limits both form submissions and case updates as described in CommCare Rate Limiting.

The form submission limits are lower than the case update limits, which means your project will likely encounter the form submission rate limits first. Review the calculated rate limits for form submissions.

Reassigning Cases

100,000 cases

It’s a background process, but large volumes take time. Try to reassign fewer cases at once to speed things up.

Auto Update Rules

50,000 cases/day*

When adding auto update rules, keep this limit in mind.

For example, if a project needs an update to run on 200,000 cases, they should anticipate it will take at least 4 days to complete.

Case Imports

100,000 rows per upload*

Best performance is under 10,000 rows. Large files may slow or crash Excel.

Bulk Form Archiving

10,000 forms

Archiving is slow — do it in batches for best results.

Deduplication Rules

10 rules per domain

For performance reasons it is best to minimize the number of rules per case type.

Case Data Size in Restore

100,000 cases (unenforced)

This is effectively an answer to the question “how many cases does a user need access to on a device at any given time, and how much data can a device handle?”.

While there are restores that include more than 100,000 cases, to ensure good performance you should aim to keep restores below this number.

Bulk Case Editing

100,000 cases

You cannot select more than 100,000 cases in the UI.

Data Exports & Reporting

Type

Guidelines/Limit

  • = Strict Limit

Notes

Type

Guidelines/Limit

  • = Strict Limit

Notes

Export Size

100,000 rows*

For more information, visit Form Data Export | Form Exports and Case Data Export | Error Messages In Case Exports.

Saved Exports per Project

100

These do not incur any load on the system until manually run by a user.

Daily Saved Exports

10 active exports

Keep only what’s necessary to avoid unnecessary load.

User Configurable Reports (UCR)

Depends on CommCare plan*

Behind a CommCare Feature Flags. There are privileges that limit the number of UCRs allowed per project.

A note about COmplex UCRs: UCRs use an open-ended domain-specific language (UCR JSON) that places no upper limit on the complexity of what can be attempted. While we cannot provide specific guidance that will cover all cases, keep this in mind as a potential source of slowness when developing complex UCRs, and when debugging issues in a project that use complex UCR conditions.

Mobile User Configurable Report (UCR) Row Count

100,000 rows per report*

Behind a CommCare Feature Flags

UCRs, and mobile UCRs especially, should use filters to include only the rows needed.

UCRs should generally only contain the columns that are needed, with 5-10 being a normal amount. If the number of columns exceeds 20, then this may further reduce the number of rows that will be performant in a restore.

Data Forwarding

Type

Limit

  • = Strict Limit

Notes

Type

Limit

  • = Strict Limit

Notes

Endpoint Response Times

5 minutes (enforced)

You should aim to have the endpoint respond in under 5 seconds if possible.

We do rate limit data forwarding based on the total amount of time waited in a given time window.

Number of Repeaters

10 active repeaters (unenforced)

CommCare does not handle large repeat record load from one project well, and you should expect a limit around the number of active repeaters allowed to be implemented in the future. Design your data forwarding workflows around this limit.

Daily Saved Exports

10 active exports

Keep only what’s necessary to avoid unnecessary load.

Requeuing Repeat Records

10,000 (unenforced)

Using the repeat record report, you can manually requeue repeat records. To avoid disrupting normal operations of your active repeaters, it is best to limit the number of repeat records you manually requeue at any given time.