X Tutup
Skip to content

feat: tanstack replacement for virtual-table in root keys#5066

Draft
MichaelUnkey wants to merge 77 commits intomainfrom
root-key-table
Draft

feat: tanstack replacement for virtual-table in root keys#5066
MichaelUnkey wants to merge 77 commits intomainfrom
root-key-table

Conversation

@MichaelUnkey
Copy link
Collaborator

@MichaelUnkey MichaelUnkey commented Feb 17, 2026

What does this PR do?

  • Generic DataTable component and all supporting primitives (cells, headers, footers, hooks, utils) from the dashboard into the shared @unkey/ui package, making it reusable across the monorepo.
  • Refactors the root keys table to use the new shared DataTable, replacing the previous VirtualTable implementation with a paginated, non-virtualized approach.
  • Introduces a new root-keys-table component folder in the dashboard that owns root-key-specific columns, skeleton rendering, query hooks, and schema.

Changes

@unkey/ui (new exports)

  • DataTable — generic TanStack Table component with sorting, row selection, keyboard nav, skeleton loading, and load-more/pagination footer support
  • Cell primitives: BadgeCell, CopyCell, HiddenValueCell, TimestampCell, StatusCell, AssignedItemsCell, LastUpdatedCell, RootKeyNameCell
  • Header primitive: SortableHeader
  • Footer components: PaginationFooter, LoadMoreFooter
  • Empty state: EmptyRootKeys
  • Hooks: useDataTable, useRealtimeData, useTableHeight
  • Constants: STATUS_STYLES, StatusStyle

Dashboard — components/root-keys-table/ (new)

  • columns/create-root-key-columns.tsx — column definitions for the root keys table
  • components/skeletons/render-root-key-skeleton-row.tsx — skeleton row renderer
  • components/settings-root-keys/ — delete/edit actions and popover
  • hooks/use-root-keys-list-query.ts — paginated tRPC query hook
  • schema/query-logs.schema.ts — Zod schema for the query payload

Dashboard — consumer updates

  • root-keys-list.tsx — now uses DataTable, EmptyRootKeys, PaginationFooter from @unkey/ui and the new root-keys-table module; replaces infinite-scroll loadMore with page-based onPageChange
  • keys-list.tsx — updated HiddenValueCell import to use @unkey/ui
  • Removed old components/data-table/ directory from the dashboard

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Chore (refactoring code, technical debt, workflow improvements)
  • Enhancement (small improvements)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How should this be tested?

  • Root keys settings page loads and displays keys correctly
  • Pagination controls work (next/prev page, page size)
  • Sorting on sortable columns works
  • Delete and edit actions open correct dialogs
  • Skeleton loading state renders during fetch
  • Empty state renders when no keys exist

Checklist

Required

  • Filled out the "How to test" section in this PR
  • Read Contributing Guide
  • Self-reviewed my own code
  • Commented on my code in hard-to-understand areas
  • Ran pnpm build
  • Ran pnpm fmt
  • Ran make fmt on /go directory
  • Checked for warnings, there are none
  • Removed all console.logs
  • Merged the latest changes from main onto my branch with git pull origin main
  • My changes don't cause any responsiveness issues

Appreciated

  • If a UI change was made: Added a screen recording or screenshots to this PR
  • Updated the Unkey Docs if changes were necessary

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch root-key-table

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@vercel
Copy link

vercel bot commented Feb 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dashboard Ready Ready Preview, Comment Mar 3, 2026 4:41pm
engineering Ready Ready Preview, Comment Mar 3, 2026 4:41pm

Request Review

chronark and others added 21 commits February 24, 2026 14:15
* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* chore: clean up nav
…0M +) (#4959)

* fix(clickhouse): improve clickhouse query for key logs and add  new table and mv for latest keys used

* fix valid/error count = 0 scenario

* remove identity_id from order by

* wrap identity_id with aggregating function since its removed from the order key

---------

Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>
* fix: domain refetch and promotion disable rule

* fix: regression

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
* refactor: move custom domains to tanstack db

* fix: comment

* fix: delete mutation

* remove: unnecessary query
* remove agent

* remove agent
* remove agent

* remove agent

* use vault in dashboard

* remove
* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* chore: clean up nav

* feat: add per-project sticky domain and only display that
* chore: use vault in api

* chore: use vault in api

* fix harness

* use memory test

* vault container go start

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* dunno

* nextjs should allow a setting that says dynamic

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Add references to real-time performance benchmarks in:
- introduction.mdx: new 'Performance at scale' accordion
- modes.mdx: link after latency claim

Presents benchmarks as capability demonstration rather than comparison.
Add missing SEO description to frontmatter

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Andreas Thomas <dev@chronark.com>
Remove Spring Boot Java, Rust, and Elixir SDK docs that are not linked in navigation and appear to be outdated/unmaintained.

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Andreas Thomas <dev@chronark.com>
* rework release

* rework release
* feat: generate rpc wrappers

* bazel happyier

* more changes

* more changes

* move path

* delete old files (#5043)

* fix: rabbit comments

---------

Co-authored-by: Oz <21091016+ogzhanolguncu@users.noreply.github.com>
* add a gossip implementation

* add gossip to sentinel/frontline

* add message muxing

* sentinel fun

* cleansings

* cleansings

* cleansings

* cleansings

* use oneof

* fix bazel happiness

* do some changies

* exportoneof

* more cool fancy thingx

* change gateway choosing

* add label

* adjjust some more

* adjjust some more

* fixa test

* goodbye kafka

* fix: bazel

* rename gateway -> ambassador

* add docs

* fix: rabbit comments

* [autofix.ci] apply automated fixes

* idfk

* more changes

* more changes

* fix ordering

* fix missing files

* fix test

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: retry cillium policy until CRDs are ready

* fix: blocks until all system pods are ready
* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* feat: new build screen for ongoing deployments

* fix: table column typo
ogzhanolguncu and others added 12 commits February 24, 2026 14:18
* refactor: move them to tanstack

* refactor: tidy up

* feat: add env provider to decide what env we are on

* refactor: tidy

* feat: add scroll into view for settingcard

* fix: bg

* refactor: remove toasts from env-vars

* chore: tidy

* fix: build
* feat: vault bulk en/decrypt

* oops wrong file

* cleanup proto

* [autofix.ci] apply automated fixes

* cleanup

* cleanup

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* feat: trace generated rpc clients

* ignore not found
* fix: retry memberlist creation

* remove comments

* move to const
* Restore filtering on logs

Restores filtering on the logs.

* [autofix.ci] apply automated fixes

* fmt

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
* fix: resolve dns to ip

* rabbit comments
* fix: Billing page has inconsistent section widths (#5132)

Standardized all SettingCard components to use consistent width classes:
- Updated Usage component: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated CancelAlert component: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated Billing Portal in client.tsx: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated CurrentPlanCard component: removed min-w-[200px] from className for consistency

All billing sections now use contentWidth='w-full' for consistent layout.

Fixes #5132

* Fix billing and setting cards

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
@MichaelUnkey MichaelUnkey changed the title feat: Root key table feat: tanstack replacement for virtual-table in root keys Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

X Tutup