Sometimes, you may come across performance issues with your SmartSuite Solution. Signs of these issues can include:
Slow loading of Tables (Apps), views, or record details in the user interface
Automations getting stuck in pending status or experiencing timeouts
API requests lagging or failing with 500 errors
Slow synchronization with external systems via Make, Zapier or another automations platform
Encountering performance problems with your Solution can be surprising, especially if it had been functioning smoothly for months or even years. Such issues can arise due to various underlying factors. This article aims to demystify this complex topic and provide practical tips to enhance your Solution's performance both proactively and reactively.
What Impacts Solution Performance?
Solution performance can be likened to a queue of tasks that the SmartSuite servers handle on the backend. When users perform actions within the Solution, such as loading a Table, editing a record, or creating a Table, these actions are counted as requests in the queue. While the Solution is capable of processing requests quickly, it can only handle one request at a time.
Consequently, if the queue becomes inundated with too many requests, the ones at the end of the queue must wait their turn to be processed. When there is a high volume of requests in the queue, the last request may experience a delay as it waits for preceding tasks to complete.
It is challenging to precisely quantify a limit or expected delay for processing a backlog of actions as their complexity, data volume, concurrent user load and other factors have an impact. It's important to note that automated actions, rather than human actions, tend to generate high volumes and cause congestion in the request queue.
These automated actions include:
API requests from custom integrations or third-party tools like Zapier or Make
Formula recalculation
Title field auto-generation
Automations
For instance, consider a Solution that incorporates custom API integrations, third-party integrations, and numerous formula fields:
If the external integrations are configured to make requests to the Solution continuously, the request queue may become overloaded. If a human user accesses the Solution while the queue is overwhelmed with integration requests, they may encounter slow loading of Tables or even experience crashes when performing manual actions in the Solution. This occurs because the manual request must wait behind all the API requests.
Therefore, it is crucial to recognize that SmartSuite is not intended to function as a backend hosting service or real-time database like Heroku, Parse, Firebase, or MongoDB. Instead, SmartSuite is primarily designed for use cases where all users interact directly within the SmartSuite UI.
Summary:
Use cases involving constant API requests can quickly fill up the request queue, leading to a slowdown in Solution performance.
How Does Record Count Impact Performance?
In addition to request volume, Solution and Table record count can impact performance. When you have a large number of records in an Table, tasks such as formula recalculation have a larger impact.
For example, say you have 5 formula fields in a Table that has 20,000 records. Now imagine that you do an import to update a field that is involved in those 5 formulas in each record. The system has to store the 20,000 updates as well as recalculate 100,000 individual formulas - an operation that is significantly more taxing that updating a single record.
Additionally, loading a larger volume of data takes more time and creates load on your Web browser as it renders those values in your Views. We recommend adding a limited number of fields to individual Views, as well as configuring filters to load only those records you are actively working with.
How Does my Solution Design Influence Performance?
Creating dependencies in your Solutions and Tables is a very powerful feature, but you should also take into account the impact they potentially have on performance. The following list of fields create dependencies and require additional work by the platform to display their values, render the results and may lead to slower load times:
Linked Record fields
Lookup fields
Count fields
Rollup fields
Auto-generated Title fields
Formulas that reference any of the above-mentioned field types
Tables that will contain very large numbers of records should optimize their use of these field types to ensure a smooth, high-performing user experience.
Optimizing SmartSuite for Performance
To avoid performance issues or mitigate existing problems, there are several best practices you can follow:
Formulas
Minimize the use of formulas in very large Tables where possible
Reduce the number of formula-to-formula dependencies
Remove unused or "test" formulas
Use the NOW() function sparingly to reduce how often the formula needs to recalculate
Solution Design
Consider how many linked records you use in your design, reducing any unnecessary dependencies
Remove unused or "test" linked records, rollups, counts and formulas
Consider using single or multiple select fields or Assign To fields instead of linked records to another Table if you do not require reporting on the referenced records (i.e. using an Assign To field instead of a link to a "People" Table)
Evaluate whether you need complex interdependencies that can cause a series of chained updates
Automations
Remove or disable unneeded our outdated automations
Consider the use of time-based triggers for certain actions (i.e. send an email once a day if a condition is met, instead of every time the condition is met)
Evaluate whether a "matches conditions" trigger might work in place of a "record updated" trigger - these generally fire less frequently
Integrations and External API Connections
Consider whether API interactions can be done in small batches over time instead of large, monolithic runs
Evaluate the frequency of updates, moving some to daily or weekly frequencies if possible
Wherever possible reduce the total number of requests made to the API, possibly sharing data needed for each run (i.e. caching select list values)
Guidelines for Reporting Performance Problems
If you have followed the recommendations provided in this article and are still having performance challenges, please feel free to reach out to the SmartSuite support team via Intercom or email. Please include as much of the following information as possible:
The Solution and Table ids that are impacted
The names of any involved automations
A link to the View that is causing issues
A detailed description of the issues and performance challenges
The time that you were experiencing the issues if they are intermittent
A description and technical details of any external integrations or custom API requests