Skip to main content
Overview: Improve doc performance

Noticing doc performance issues and not sure what to do? Start here!

Updated over a week ago

As your docs grow, there are many things Coda does behind-the-scenes to make it scale and continue to run smoothly. However, there may be cases where some adjustments to a hefty formula or the overall doc design can help make your doc 10-1000x faster.

A good metaphor for thinking about doc performance is packing for a camping trip. The more gear you pack, the more comfortable you’ll be while camping. However, the more weight you carry, the slower you will hike. The less gear you pack, the faster and farther you go, but you'll be a little less comfortable.

This article is meant to serve as a starting point if you’re noticing performance issues. It will help you identify which type of issue you’re dealing with and will point you to more in-depth resources on each.

Within this article, you’ll find...


Slowness when switching or scrolling pages

Rendering issues occur when Coda has loaded the doc in your browser, but there is a lag in actually showing the data on your screen. The more data and styling a page needs to display, the longer it will take to be rendered.

You may be dealing with rendering performance issues if you notice...

  • Switching pages takes a long time, even when the doc is fully loaded.

  • When scrolling a page, you see gray loading indicators instead of rows, and it takes a while for the rows to show up.

  • Opening a dialog, menu, or panel is taking a long time.

If any of these sound familiar, then check out this article on rendering issues.

Lagging formulas or stuck calculations

Formulas are one of the most powerful aspects of Coda. You can write formulas that let you do very complex calculations. However, some of those calculations can inadvertently slow down your doc. Sometimes this is caused by unintentional circular logic, or by formulas attempting to process more data than is necessary.

If you notice any of the following in your doc, you’re likely encountering calculation issues:

  • Your doc shows Calculating... in the upper right corner for long periods of time (more than 5 seconds) when you open the doc or when you add, edit or delete data.

Frame 1 (27).png
  • When you press a button, you see a spinning circle and the action takes a while to complete.

  • Table search takes an abnormally long time to complete.

Learn how to troubleshoot and resolve calculation issues here.

Warnings or errors related to doc size

Doc size performance issues arise when there is a large amount of data in your doc. If your workspace is on the Free plan, there are doc size limits to be aware of. But even if you’re on Pro, Team, or Enterprise plans, it is still possible for your doc to become so large that it no longer operates smoothly. In such cases, it may be time to scale back the size of your doc.

If you notice any of the following, doc size is likely the culprit:

  • You receive a warning that you’re approaching the doc size limit for your plan.

  • You see a message in your doc informing you that “formulas are not calculating.”

  • Your doc will not open on the mobile app, or you a prompted to try “low memory mode.”

  • You see an “Aww snap” error message.

  • Your doc might take a while to finish loading and be full interactive.

  • You notice your automations are taking longer than expected to run.

  • You notice your published form submissions are taking longer than expected show up.

To learn all about managing doc size and related performance issues, check out this article.

Additional performance issues

Below are some less common sources of performance issues.

Lagging when typing

Being a doc, Coda has a very flexible writing surface that blends text, visualizations, tables, formulas and more. With that flexibility and enough objects — including text, typing or editing text can be impacted.

If you notice any of the following in your doc, you’re likely encountering typing performance issues:

  • When you type, it may take several seconds for the letters to appear.

  • Entering new lines may appear delayed or take a few seconds to see the cursor move to the new line.

To improve typing performance, we suggest trying any of the following:

  • Making sure your browser is up-to-date and the latest version.

  • Restarting your device.

  • Archiving or deleting stale content or objects on the page. For example if it’s a page with weekly meeting notes for the past 6 months, consider starting a new page or moving entries older than a month out of that page.

Page content is slow to load or blank

Load performance is related to the speed at which Coda can download your data into your browser. If you notice any of the following in your doc, you’re likely encountering load performance issues:

  • Your doc shows spinners and various gray loading indicators, instead of showing page content.

  • Your doc shows some content, but selecting buttons or reactions doesn’t work yet.

  • Your doc seems like it’s loaded and then after a little bit, the font updates and content moves around.

  • Your doc may intermittently show “Offline” in the top right.

  • Your browser tab or window is mostly, or completely, blank for a “long” time.

To improve load performance, we suggest trying any of the following:

  • Making sure your browser is up-to-date and the latest version.

  • Restarting your device.

  • Open and try using Coda on a different device.

  • Run a speed connection test and confirm the speeds are healthy.

  • Try using connecting to wired network, instead of wireless or wifi.

Packs stuck “syncing”

If the top right of the doc says “Syncing...” - with an adjacent Pack icon - for an extended period of time, the most likely reason is you’re using a Pack formula in a column on a large table.

Frame 1 (28).png

This could be either a column format from the Pack, or any formulaic column that happens to use a Pack formula. Pack formulas are relatively inefficient due to their security constraints. In a table of a thousand rows or more, they will significantly hinder a doc’s performance while refreshing. To improve this, try some of the following tips:

  • If at all possible, use sync tables and add relation columns to them to get their data into your other tables. Syncs happen in asynchronous batches that never block other calculations in your doc.

  • Check if you have your Pack sync settings set to automatically refresh every day or hour. If you don’t need live data from the Pack, then that’s wasted calculations. Consider switching to manual refresh rate.

  • If only some of your rows don’t need to be kept live, you could either wrap your Pack formula in an IF(...) condition to prevent it from being executed regularly, or you could archive those rows.

If you have giant sync tables, be aware of these potential pitfalls:

  • You don’t always need to trigger a full refresh of a sync table to get updated data into your doc:

    • Some sync tables support two-way editing, where you can just edit a row in place in your Coda sync table.

    • Many Pack button actions that edit 3rd party data are smart enough to tell the row representing that data in a sync table to update itself accordingly.

  • If you have the Keep Un-synced Rows option toggled on for your sync table, it can get very large, and prevent new rows from getting added after you hit the sync table row limit. A more robust pattern is to have an automation copy your sync table’s rows into a separate “archive” table, which won’t have the same row limit. Over time the “archive” table in the doc, could cause a doc to hit various size limits, so see more tips here on how to archive outside the doc here.

Cross-doc sync seems stuck

Sometimes the source doc of a Cross-doc table might have Calculation or Docs size performance issues, which prevents Cross-doc from pulling new data from the source table to sync to the child table. When this happens, pushing or pulling data might take a longer time than usual, to the point where the operation seems stuck and data is not synced from the parent table.

If your Cross-doc sync is stuck, consider:

Conversely, if your sync doc is already pretty large, or if you have an expensive formula that depends on the Cross-doc table, pulling a large number of new rows/row edits from the source doc might exacerbate the pre-existing issues. Sometimes these issues might come without warnings, for example an expensive formula might appear fine for a small sync table, but will get stuck when that sync table has thousands of new row updates from the source table. Moreover, since Cross-doc sync is a type of automation, any potential cause of automation performance issues may lead to Cross-doc sync issues as well.

If your doc runs into performance issues after a Cross-doc sync is trigger, you can look into:

Overall, it is recommended to avoid syncing and keeping unnecessary Cross-doc data to keep your doc in good shape:

  • Consider disabling Keep Un-synced Rows button to remove rows that have already been deleted in the source table.

  • Create a filter view on the parent doc and use that as the Cross-doc source to limit the rows synced through Cross-doc to only those that are necessary.

Automations lagging or not executing

If you notice any of the following in your doc, you’re likely encountering automation performance issues:

  • If your doc is calculation disabled, formulas will no longer run, nor will automations.

  • Automations triggering much later than expected, or sometimes what appears to be not to at all since it takes a long time.

  • Automations require calculations to complete before running (or between running multiple steps), so slow formulas may delay your automations.

  • If your automation presses all buttons in a button column (or presses another button which presses all buttons in a column), then calculations and button actions will likely take a long time.

To improve automation performance, we suggest trying any of the following:

  • Ensuring your doc size is healthy — learn more in the Doc size performance issues.

  • If you need to take multiple actions at once, create a single button that iterates over your data using ForEach or FormulaMap instead of pressing multiple buttons.

  • For time-based (periodic) automations, consider scheduling them at lower-activity times to reduce latency. This could be outside working hours for daily automations or during weekends for weekly automations.

Did this answer your question?