Every form is represented by a data table in an Apricot database. Every data table has a Row Size Limit of 65,000 bytes. Each field type uses varying amounts of bytes, some have higher impact than others. The more bytes used, the more performance issues we see. As a best practice, forms should be kept under 25,500 bytes.
Rule #1: Forms that require the use of many high impact fields should be broken down into multiple forms.
High Impact Fields
- Name 150 bytes
- Address 100 bytes
- Address Lookup 1460 bytes
- Global Address Lookup 612 bytes
- Radio Button 255 bytes
- Masked Radio Button 255 bytes
- Drop Down 255 bytes
- Masked Drop Down 255 bytes
- Attach Doc 278 bytes
- Signature 242 bytes
- User System fields (E.G. Mod User, Creation User) - Each form will always have two, this is unavoidable but should still be considered) 255 bytes
Rule #2: You should not exceed 100 fields per form.
Here’s a very important fun fact: Inactive fields still count towards Row Size Limit bytes. As a best practice, you should not exceed 100 fields per form to allow for that form to evolve over time and avoid negatively impacting performance. Our clients do make changes to their forms; they retire fields, they add new ones. We need to consider that upfront during implementation and plan for the long term.
Form Logic Considerations
Rule #3: Form Logic rules should be consolidated and optimized.
Almost every interaction the user makes with the form triggers form logic rule validation where we need to validate whether or not a form logic condition was met, and if we need to perform a rule action. The more conditions exist, the more checks need to be made per interaction with the form. Each of these validations is a request to our server.
Form logic and field count is a compounding issue for performance. Forms with extensive field counts AND many form logic rules will see performance issues. If rules #1 and #2 are followed, form logic should not be too detrimental to performance. However it’s important to understand the relationship between the two and whenever building out form logic, make sure rules are written well.
Rule #4: Linking should be kept to a minimum.
Linking is the primary way we build relationships between different forms / content in Apricot. It’s foundational for features like the Registration Grid and for tracking & managing households. Linking can also contribute to performance issues in Apricot. Though it is unavoidable by nature, it’s important to understand the impact links have when building out Apricot form structure.
Here is a good example of how to keep links to a minimum:
Often times Wizard Links are used to create workflow for clients. In the case of a form that may be getting too large, it would be best to use the Workflows feature in lieu of Wizard Links to optimize performance of the form.