I’d really appreciate some help with a performance issue that’s been affecting our internal Task Tracker app.
I’d describe myself as an intermediate-level AppSheet developer, and most of my apps use Google Sheets as the data source. One of my core apps — a Task Tracker — has grown quite large over time, and performance has dropped significantly.
Here are the key details:
Data size: ~100,000 rows and 27 columns (Google Sheets)
Users: Around 11–12 internal users
Use case: Internal project management and task tracking
The Problem
Syncing has become extremely slow. For example, one user recently completed around 300 tasks (clearing backlogs and current tasks), and it took him 3–4 days for the app to fully sync all the data.
I’ve done a fair bit of research on performance tuning — optimizing slices, reducing virtual columns, simplifying formulas, etc. — but I still haven’t been able to find a definitive solution that works for this scale.
Request for Help
I’d be very grateful for any advice or guidance from the community. If needed, I’m happy to share the app with someone for analysis to help identify what’s causing the issue and how to optimize it effectively.
Thanks in advance for any support — this app is central to our workflow, and resolving the sync delays would make a huge difference.
Hi Vansh , I’d like to share my experience using AppSheet with Google Sheets as a data source. My app’s performance became very slow. In my case, the app had about 50,000 rows, and the slowdown was caused by formulas using SELECT(), LOOKUP(), and FILTER(). I fixed this performance issue by replacing those formulas with table relationships (using the Ref type). I hope this is helpful.
So my app has no SELECT(), LOOKUP(), and FILTER() formulas and its just the batch syncing of tasks which is a problem otherwise starting the app takes around 20-30 seconds which I wouldnt mind being faster but I am okay with it
This is not a solution but for better clarity, you may want to mention the purpose behind this expression. A USEREMAIL() is never likely to have just “email”
This may not be trivial if the spreadsheet formulas are spread across 1000s of rows.
Perhaps the following equivalent could be a better expression
I strongly recommend implementing Security Filters to effectively filter the data. Although primarily a security feature, they function as a key scalability feature in AppSheet by limiting the data downloaded to the app.
Data Source Consideration (Crucial for Performance)
If your Data Source is Google Sheets, AppSheet may still need to fetch the entire sheet before applying the Security Filter, meaning the initial sync speed might not improve significantly.
However, if you use a Cloud SQL database or AppSheet Database, the filter will be converted into a direct database Query, allowing the back-end database to handle the filtering efficiently. This approach offers much better performance.
Further Design Recommendations
Additionally, you may need to redesign the Front End and Back End architecture:
Back End (Data Storage): Consider migrating from Sheets to a proper database source (AppSheet Database or SQL) for better query handling.
Front End (Viewing/UX): Utilize Slices to display only the necessary subsets of data, and minimize complex expressions within Virtual Columns as they are major performance bottlenecks."
I would say i am a beginner-intermediate in making apps on appsheet there is a lot to learn!
I mightve messed up somwhere which I cant figure out now
And the users are actively using the app which cant be taken down as well!
This formula allows a record to be shown if either the logged-in user is me ([PII Removed by Staff ]@gmail.com), the site is not cancelled, or the user’s email is listed in the Collaborators Email field.
In that case you can continue to try the expression I suggested. It may not necessarily improve your sync speed but is probably more compact expression.