Avatar of Martins Berzins
Martins Berzins

Full-stack indie hacker building SQLitePilot in public and hoping these tools genuinely help other teams.

Dev Updates

Dev Update: Deep Links and State Persistence

Maintain development context across sessions with state-persistent URLs that automatically restore active connections, table selections, and search filters.

Last updated: Apr 10, 2026

The "Refresh" Tax

It's annoying - spending time drilling down into a specific table, applying a search filter to find a rogue record, and then losing everything because you refresh or needed to share that specific view with a teammate.

Until now, SQLitePilot’s dashboard was a "single-state" experience. If the page reloaded, you started from scratch.

We just shipped Deep Link support to fix that.

Your URL is now your state

We’ve implemented a two-way sync between the UI and the browser URL. Now, as you navigate, the URL updates in real-time to reflect exactly what you are looking at:

  • Selected Connection: Tracked via the db parameter (UUID).
  • Active Table: Tracked via the table parameter.
  • Search Terms: Your server-side search is tracked via the search parameter.

The URL format looks like this: /?db={connectionId}&table={tableName}&search={searchTerm}.

How this changes your workflow

  • Seamless Refreshes: If the app needs to reload, it will now auto-attempt to reconnect to your database, fetch the schema, and restore your exact table and search filters automatically.
  • Shareable Views: You can copy the URL and send it to a colleague. As long as they have the same access rights in your organization, they will land on the exact same data view you’re looking at.
  • Browser History: You can now use the back and forward buttons in your browser to hop between different tables or search results.

Security and Stability

We didn't just slap query strings on the end of the URL. We built this with proper safeguards:

  • Authorization is still required: Deep links do not bypass security. If someone without access opens your link, the API will still block them and show an error.
  • Race Condition Prevention: We implemented explicit guards to ensure that "auto-connecting" doesn't trigger loops or weird UI flickers while the database is loading.
  • Debounced Search: The URL updates as you type, but it’s debounced so we aren't spamming your browser history with every single keystroke.

This is a small quality-of-life update, but for those of us managing dozens of tables across multiple remote VPS servers, it makes the "Indie Stack" feel a lot more professional.