Couple of things that make life difficult in the dashboard
At any rate, I'll thread a bit of feedback here: couple of things that make life difficult in the dashboard.
7 Replies
First, this guy:

Sometimes it means there are no documents matching your selected filter. But it also means:
- loading, we don't know if anything matches yet
- you paused for more than 500ms while entering filter info how dare you
- you just added another filter how dare you
It would be nice if:
- this text only showed when there are no matches to the query
- I could press enter/submit to update the filter and see this screen less - instant update is nice for simple search boxes, but if I pause while editing I get to wait for a bit. Sometimes I say bad words.
- Adding another filter didn't update anything (sort of resolved if we add enter/submit to update)
Then there's this guy:

My tables aren't huge, but I spend a lot of time staring at that little spinner.
It would be nice if:
- I didn't have to wait 10 seconds (actual number) whenever I navigate to even a mildly sizable table. You guys should check out this awesome platform I'm using called Convex, it has pagination for this sort of thing 😅
- If the table is loading, the rest of the UI didn't lock up - if I tap Data by accident I can't hit a different link in the dashboard until it loads
Ideally, when I'm looking for some data, I'd like to:
- navigate to the table
- be able to start interacting with filter controls immediately, even if still loading data
- add multiple filters without the table view updating and locking up the UI
If loading data was non-blocking, that would fix everything except the load time problem, it really addresses most of this, and is probably the correct fix here. Then you don't need enter/submit, that's really just a workaround to help avoid the blocking.
Proper virtualization could go a long way - I'm guessing it's not that virtualization isn't working, but how heavy your
renderItem()
is, if I had to guess.This wasn't super recent, but it was a great moment when we shifted to implementing more things on the dashboard using Convex. We obv are very careful about circular dependencies in infra. So many product features were easier to build using the primitives we were building. Good dog-fooding too
100%, makes sense that a product like Convex would be hard to dogfood like this at the beginning. Building x with x seemed like a bad idea until I worked at Netlify, we literally built Netlify with Netlify. Which is still hard for me to reason about in my head lol. Recursive infrastructure 😅
Also I hope my little quips above (eg., "you just added another filter how dare you") were taken as levity and not actual frustration! Just my writing style.
i appreciated it 😆
Yeah we're pretty principled about which systems can depend on which systems. Thankfully we have a lot of experience there