Writing
EngineeringJul 24, 20253 min

The Performance Tax Nobody Can See

What building X-Ray taught me about making the hidden cost of no-code decisions visible before users hit the wall.


Every slow no-code app I've ever opened was slow for reasons the builder couldn't see. Not because they made a careless choice — because the tool never told them the choice had a price.

That's the thing about abstraction. It hides the cost right up until the cost is the only thing you can feel.

A nested list feels free

In Adalo, you can drop a list inside a list inside a screen in about four seconds. It looks fine. It is fine — at ten records, on your phone, on office wifi. Then the app gets real users and real data, and that innocent little nested list is quietly firing a cascade of database queries every time the screen loads. The builder didn't do anything wrong. They just couldn't see what the convenient thing actually cost.

Nested lists are the number one performance mistake in Adalo apps. Not because our builders are careless — because the mistake is invisible at the moment you make it.

A platform's real job isn't preventing every bad decision. It's making the consequences legible before the user hits the wall.

Making the invisible legible

That's what X-Ray is. It scans an app and surfaces the things that don't announce themselves:

  • Nested lists — the query multiplier, flagged so you can flatten or split the screen.
  • Screen complexity — screens carrying so many components that every interaction drags, marked as candidates to break apart.
  • Orphaned screens — screens nothing links to anymore, quietly inflating the app bundle and cluttering the builder.
  • Lottie files — beautiful, and bandwidth-hungry over time, listed so their use stays deliberate.
  • Database metrics — row counts, table counts, cache hit ratios: the shape of the thing your app is actually sitting on.

None of that was hidden on purpose. It was hidden because the whole promise of no-code is that you don't have to think about it. X-Ray is us admitting that "you don't have to think about it" and "you can never see it" are not the same promise, and only the first one is any good.

The lesson for anyone building tools

The instinct when you build an abstraction is to hide everything underneath it. That's the point, right? But the most useful tools I know are selective about it. They hide the mechanism and expose the consequences. You don't need to understand the query planner. You do need to know this screen is about to cost your users three seconds.

X-Ray runs read-only, in seconds, and costs nothing — because the entire value is just letting people see the tax before they pay it. Give someone a clear picture of what their choices cost, and most of the time they'll make a better one on their own. They were never trying to build something slow. They just couldn't see the bill.