Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page outlines recommendations for designing and building useful CommCare applications. These are compiled from collective experience in app construction and are only recommendations. Individual projects could vary substantially and the overall best practice is to go through extensive user testing and piloting to identify and correct language, media, or work flows that are confusing.


  • Can show more properties than case list.  
  • Add properties that will help user make sure they've picked the right case
  • Add properties that will help user before opening a form for the case 
  • Use the Format option to display case properties correctly for the user. See Case List and Case Detail Configuration.
  • Use ID Mapping if displaying any case properties that store item values.  This will make sure friendly text is shown.  

Case Properties

  • Saving and loading of case properties into the form is an important aspect of case management
  • In the event that you are saving and/or loading case properties into specific hidden values, consider organizing those hidden values into question groups called ''save'' and ''load'' respectively. This will help you stay organized with the movement of case properties. 


  • For multilingual applications make sure each of the following is translated:
    • Question labels/display text in a form
    • Names of forms and modules
    • Any informatoin displayed information displayed in the case list and detail (including ID mapping)
    • User Interface translations (Translate the CommCare User Interface Translations) for your language.  Common language (ex. back, form is loading) should be updated.
  • Set the default language of your application before creating your released build.  Drag and drop the languages and put the default language at the top.  


  • Take advantage of calculations in forms to minimize errors. For example, if you are asking for a birth date, add a label afterwards that shows the calculated age. This may highlight an error in date entry if the age appears different than what the user expected.

  • Use labels to force the user to stop and verify their information. You can add a label that shows the user data they entered and encourages them to verify if it is correct (see Common Logic and Calculations ).

  • Use groups to prevent writing the same display logic (and having to update it) for related questions. Groups also make it easier to manage large forms in the designer (see the Beginner's Guide)
  • Consider including a success/you're done with the form label as your last question. This can be particularly useful on J2ME phones by giving the user an opportunity to correct any errors and make it clear to the user that the form is ending..
  • Don't try to do too much in one form. If you make a simple form that is easy to use it has a higher probabilty of success than a complex one that tries to tackle too much.