GridKit

Grid logic that stays out of your way.

GridKit separates grid logic from rendering. Column resolution, resizing, reordering, and selection live in framework-agnostic TypeScript — React binds it to real components today, with more framework adapters planned — so you're never fighting a component to get the behavior your data needs.

Why another grid?

TL;DR: I got tired of fighting my tools.

I've spent 2+ years building grids and tables inside SaaS ERP products — the kind where a single view needs sorting, filtering, inline editing, and a few thousand rows to not fall over. Along the way I've reached for more than one big commercial grid library (won't name names), and the pattern was always the same: the library wasn't actually built for React, it was ported to it.

That shows up in specific ways. Conditional rendering or a prop change in the wrong order would crash the whole grid. Instability that only appeared under React's StrictMode or concurrent rendering. Internals reaching into the DOM with brittle selectors and zero guard rails, so a version bump could silently break your app. And TypeScript support that felt bolted on after the fact (if even) — types that lied about what the API actually accepted, instead of types that were the API.

GridKit is my attempt at doing it the other way around: write the grid for the framework, not around it. The core logic is framework-agnostic TypeScript so it's testable and predictable on its own, but the React package is a first-class citizen built with React's rendering model in mind from day one — not a jQuery-era widget wearing a component wrapper.

Long term, I want this to be the grid people reach for without bracing for a fight — something that gets out of your way, doesn't need a support contract to debug, and actually gets the max potential out of the framework it's built on. Everything I learned about what a robust grid needs to do in production ERP software is going into GridKit.

Start with the docs

Every example on the docs site runs the real, published packages — nothing simplified for the demo.

Explore the docs