Sitemap
dirty check, made by Christiaan Huizer

Member-only story

Avoid Over-Modifying Rows in Coda

Apply The “Dirty Check” pattern.

5 min readNov 12, 2025

In our recent posts, we’ve been on a journey to build the perfect Coda button to add or modify rows.

It started simple. We first built a button using AddRow(), which was perfect for applying a project template—a fixed set of items that only needed to be created once.

But we quickly hit a wall. A live project isn’t a template. You need to manage it. You need to update existing tasks, not just create new ones.

This led us to our second post and the “Find or Create” (or “Upsert”) pattern. We built a robust, multi-step formula that intelligently checks if a row already exists before deciding what to do.

Filter(...).First().WithName(existingRow, If(existingRow.isBlank(), AddRow(...), ModifyRows(...) ) )

This pattern is solid. It’s far more reliable than Coda’s native AddOrModifyRows() function, which we intentionally avoided. Why? Because the native function can famously fail in nested loops (a "scope collision") and create frustrating duplicate rows—the exact opposite of what you want.

Our If/Filter pattern solved the reliability problem but it quietly introduced a performance problem.

The Unnecessary Write

--

--

Christiaan Huizer
Christiaan Huizer

Written by Christiaan Huizer

I write every week about how to Coda . You find blogs for beginners and experienced makers. Until 7 days after publication you read my blog for free. Welcome!