openstatus logoPricingDashboard

Logs View: Two years in the making, one day of migration

Sep 20, 2026 | by Maximilian Kaske | [engineering]

Logs View: Two years in the making, one day of migration

In August 2024 I started a data table for openstatus and we secured the logs.run domain. In August 2026 we finally moved it into the openstatus dashboard.

It took us two years of constant improvements, on the UI/UX and on the DX side. It took us one day to migrate it.

Filters and table

The new Logs tab in the openstatus dashboard: sidebar filters, faceted counts and the response timing column.
The new Logs tab in the openstatus dashboard: sidebar filters, faceted counts and the response timing column.

Row details

A selected log row opened in the sheet, showing request metadata and response headers.
A selected log row opened in the sheet, showing request metadata and response headers.

Why it lived outside openstatus

We started data-table-filters as a standalone test repository to build really good logs interfaces, with the main focus on filters. As you might know from template.openstatus.dev, we like to experiment first before moving something into our core repo.

I wanted a DX architecture that lets you create clean, opinionated data tables over and over again, from clean primitives. shadcn was the obvious choice. Back then the registry was brand new, the directory didn't exist, and AI could barely help you build any of it.

We built it on the libraries we think are the best out there:

Base UI is supported too. Our own repo still runs on Radix. There's an open issue if you want to help move it.

We recently upgraded everything (TanStack Table v9, date-fns v4, Recharts v3), so there shouldn't be a version mismatch when you bring it into your project. If there is, open an issue or send a PR.

How it grew

The first iterations were hand-crafted, including the design of how you configure a data table. The main source of inspiration was the Datadog dashboard, where you can work a log stream without ever touching the mouse.

Then it grew: first the sidebar, then the command palette, then the infinite data table (the hero), the zoomable timeline chart, live mode, and more on top.

I know, I know. It's 2026 and only a few of us still look at beautifully crafted data table UIs. Everyone else is busy wiring up MCP servers and letting agents do the looking. So we made the table talk to the agents too btw.

So now with AI, you can go a lot further:

There's so much you can do with it. I'm a bit obsessed with this repo. I care a lot about it, and I also know it doesn't bring openstatus any money. Awareness is always good, but devs often do not pay for open-source work.

Who it inspired

What makes me really proud: bigger companies picked it up as a reference for their own logs.

And away from the big names, people fork it and build their own logs UI on it. Every now and then I stumble on a repo crediting us in the README, which is really nice to see.

Built something with it? Let us know and we'll add it to the list.

Getting started

The data-table-filters homepage with the one-command shadcn init and the infinite and default table examples.
The data-table-filters homepage with the one-command shadcn init and the infinite and default table examples.

We kept making it faster to pick up:

  • Every docs page is also available as markdown. Append .md to the URL, for example /docs/quick-start.md. Agents with text/markdown headers will also access it.
  • llms.txt tells your agent exactly where to pick up.
  • We own the @data-table-filters namespace in the shadcn directory, so there's no registry config to set up in your components.json.
  • One shadcn init command gets you from nothing to a working app:
npx shadcn@latest init @data-table-filters/data-table-example-infinite --name data-table-app --template next -p nova

That creates a Next.js app on Base UI with a working /example route: filters, facets, cursor pagination, URL state, the row sheet and the timeline chart. Add -b radix before -p nova if you prefer Radix.

Already have a project?

npx shadcn@latest add @data-table-filters/data-table

While you're here, don't forget to star it on GitHub.

Cheers, Max