<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mayank Mahadevwala</title>
    <description>The latest articles on DEV Community by Mayank Mahadevwala (@itsmemyk).</description>
    <link>https://dev.to/itsmemyk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3919930%2Fdc79251d-09cd-4308-93f3-4313699cb8ab.jpeg</url>
      <title>DEV Community: Mayank Mahadevwala</title>
      <link>https://dev.to/itsmemyk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsmemyk"/>
    <language>en</language>
    <item>
      <title>I built an open-source React data grid with zero dependencies</title>
      <dc:creator>Mayank Mahadevwala</dc:creator>
      <pubDate>Fri, 08 May 2026 11:20:12 +0000</pubDate>
      <link>https://dev.to/itsmemyk/i-built-an-open-source-react-data-grid-with-zero-dependencies-2lk</link>
      <guid>https://dev.to/itsmemyk/i-built-an-open-source-react-data-grid-with-zero-dependencies-2lk</guid>
      <description>&lt;p&gt;I've been working on &lt;strong&gt;react-tree-grid&lt;/strong&gt; — an open-source, zero-dependency&lt;br&gt;&lt;br&gt;
  component library for React 18+ that provides three components: Grid, Tree,&lt;br&gt;&lt;br&gt;
  and TreeGrid.                                             &lt;/p&gt;

&lt;p&gt;## Why I built it                                                                                                                                                          &lt;/p&gt;

&lt;p&gt;Most React data grid libraries either come with a heavy dependency footprint,&lt;br&gt;&lt;br&gt;
  are locked behind a commercial license, or don't support hierarchical data&lt;br&gt;&lt;br&gt;
  out of the box. I wanted something that was fully open-source, lightweight,&lt;br&gt;
  and covered all three use cases — flat grids, tree lists, and tree grids —&lt;br&gt;&lt;br&gt;
  in a single package.                        &lt;/p&gt;

&lt;p&gt;## What it does                                                                                                                                                            &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grid&lt;/strong&gt; — a flat tabular data grid with:                                                                                                                                  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual scrolling (100,000+ rows)
&lt;/li&gt;
&lt;li&gt;Inline editing (input, select, checkbox, combo, date picker)&lt;/li&gt;
&lt;li&gt;Sorting and header filters (input, select, combo)
&lt;/li&gt;
&lt;li&gt;Drag-and-drop row and column reorder
&lt;/li&gt;
&lt;li&gt;Frozen columns (left and right)
&lt;/li&gt;
&lt;li&gt;Rowspan and colspan
&lt;/li&gt;
&lt;li&gt;Footer aggregates (sum, avg, count, min, max)
&lt;/li&gt;
&lt;li&gt;Light/dark theming via CSS custom properties
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tree&lt;/strong&gt; — a file-explorer style hierarchy with:                                                                                                                           &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand/collapse
&lt;/li&gt;
&lt;li&gt;Checkboxes&lt;/li&gt;
&lt;li&gt;Drag-and-drop reorder
&lt;/li&gt;
&lt;li&gt;Inline label editing
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TreeGrid&lt;/strong&gt; — hierarchical rows inside a data grid:      &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parent/child rows with expand toggle
&lt;/li&gt;
&lt;li&gt;All Grid features apply&lt;/li&gt;
&lt;li&gt;Grouping via &lt;code&gt;groupBy&lt;/code&gt; prop
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;## Installation                                                                                                                                                            &lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
  npm install @itsmemyk/react-tree-grid                                                                                                                                      

  Quick example                           

  import { TreeGrid } from '@itsmemyk/react-tree-grid/treegrid'                                                                                                              
  import { ThemeProvider } from '@itsmemyk/react-tree-grid'
  import type { GridColumn } from '@itsmemyk/react-tree-grid/grid'                                                                                                           
  import type { TreeGridRow } from '@itsmemyk/react-tree-grid/treegrid'

  interface OrgRow extends TreeGridRow {  
    name: string                                                                                                                                                             
    role: string                                                                                                                                                             
  }                                                                                                                                                                          

  const columns: GridColumn&amp;lt;OrgRow&amp;gt;[] = [                                                                                                                                    
    { id: 'name', header: [{ text: 'Name' }], width: 200 },
    { id: 'role', header: [{ text: 'Role' }], width: 160 },                                                                                                                  
  ]                                                         

  const data: OrgRow[] = [                                                                                                                                                   
    { id: 'ceo', name: 'Alice', role: 'CEO', $opened: true },
    { id: 'cto', name: 'Bob', role: 'CTO', parent: 'ceo' },                                                                                                                  
    { id: 'fe', name: 'Carol', role: 'Frontend Lead', parent: 'cto' },
  ]                                       

  export function App() {                                                                                                                                                    
    return (                                                                                                                                                                 
      &amp;lt;ThemeProvider theme="light"&amp;gt;                                                                                                                                          
        &amp;lt;TreeGrid                                           
          columns={columns}                                                                                                                                                  
          data={data}                                       
          treeColumnId="name"
          style={{ width: 400, height: 240 }} 
        /&amp;gt;                                
      &amp;lt;/ThemeProvider&amp;gt;
    )                                                                                                                                                                        
  }                                       

  Theming                                                                                                                                                                    

  Wrap your app with ThemeProvider and override any design token:                                                                                                            

  &amp;lt;ThemeProvider
    theme="light"                                                                                                                                                            
    overrides={{ colorPrimary: '#e91e63', fontFamily: 'Inter, sans-serif' }}
  &amp;gt;                                                                                                                                                                          
    {/* components */}                                      
  &amp;lt;/ThemeProvider&amp;gt;                        

  All tokens are exposed as CSS custom properties (--react-tree-grid-*) so                                                                                                   
  you can use them in your own styles too.                                                                                                                                   

  TypeScript                                                                                                                                                                 

  Types are fully bundled — no @types/ package needed. Sub-path imports                                                                                                      
  allow tree-shaking individual components:                                                                                                                                  

  import { Grid } from '@itsmemyk/react-tree-grid/grid'                                                                                                                      
  import { Tree } from '@itsmemyk/react-tree-grid/tree'     
  import { TreeGrid } from '@itsmemyk/react-tree-grid/treegrid'                                                                                                              

  Links                                                                                                                                                                      

  - 📦 npm: npmjs.com/package/@itsmemyk/react-tree-grid
  - 📖 Docs: itsmemyk.github.io/react-tree-grid/docs                                                                                                                         
  - 💻 GitHub: github.com/itsmemyk/react-tree-grid          
  - 🎮 Live demo: itsmemyk.github.io/react-tree-grid                                                                                                                         

  Would love feedback — happy to answer questions in the comments!                                                                                                           
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
