# Infinite Table Documentation

> Developer Documentation for Infinite Table, your go-to React DataGrid component to handle huge amounts of data

Canonical page: https://infinite-table.com/docs/

## What is Infinite Table?

Infinite Table is a React DataGrid component for displaying virtualized tabular data.

It helps you display huge datasets and get the most out of your data by providing you the right tools to enjoy these features:

- [<img src="/icons/50x50/sorting.svg" height="50" width="50" style={{display: 'inline-block'}} /> sorting](https://infinite-table.com/docs/learn/sorting/overview.md)
- [<img src="/icons/50x50/row-grouping.svg" height="50" width="50" style={{display: 'inline-block'}} /> row grouping](https://infinite-table.com/docs/learn/grouping-and-pivoting/grouping-rows.md) - both server-side and client-side
- [<img src="/icons/50x50/pivoting.svg" height="50" width="50" style={{display: 'inline-block'}} /> pivoting](https://infinite-table.com/docs/learn/grouping-and-pivoting/pivoting/overview.md) - both server-side and client-side
- [<img src="/icons/50x50/aggregations.svg" height="50" width="50" style={{display: 'inline-block'}} /> aggregations](https://infinite-table.com/docs/learn/grouping-and-pivoting/grouping-rows.md#aggregations)
- [<img src="/icons/50x50/live-pagination.svg" height="50" width="50" style={{display: 'inline-block'}} /> live pagination](https://infinite-table.com/docs/learn/working-with-data/live-pagination.md)
- [<img src="/icons/50x50/lazy-loading.svg" height="50" width="50" style={{display: 'inline-block'}} /> lazy loading](https://infinite-table.com/docs/learn/working-with-data/lazy-loading.md)
- [<img src="/icons/50x50/keyboard-navigation.svg" height="50" width="50" style={{display: 'inline-block'}} /> keyboard navigation](https://infinite-table.com/docs/learn/keyboard-navigation/navigating-cells.md)
- [<img src="/icons/50x50/fixed-flex-cols.svg" height="50" width="50" style={{display: 'inline-block'}} /> fixed and flexible columns](https://infinite-table.com/docs/learn/columns/fixed-and-flexible-size.md)
- [<img src="/icons/50x50/column-grouping.svg" height="50" width="50" style={{display: 'inline-block'}} /> column grouping](https://infinite-table.com/docs/learn/columns/column-grouping.md)
- [<img src="/icons/50x50/filtering.svg" height="50" width="50" style={{display: 'inline-block'}} /> filtering](https://infinite-table.com/docs/learn/filtering/index.md)
- [<img src="/icons/50x50/theming.svg" height="50" width="50" style={{display: 'inline-block'}} /> theming](https://infinite-table.com/docs/learn/theming/index.md)

## Installation

Installation could not be more straightforward - just one npm command:

npm i @infinite-table/infinite-react

## ❤️ TypeScript

Infinite Table is fully typed and offers you a great developer experience, to help you get up and running quickly.

> The TypeScript typings file is included in the npm package - you don't have to download an additional **@types** package

Read more about how to use our TypeScript types

## 📄 Extensive Documentation

We're aware good documentation is a must and are updating our documentation as we add new features. Head to [our getting started](https://infinite-table.com/docs/learn/getting-started/index.md) guide to get up and running quickly.

## 🏢 Enterprise-Ready

Infinite Table is ready to power your enterprise apps, as it supports advanced [data fetching](https://infinite-table.com/docs/learn/working-with-data/index.md#data-loading-strategies), [filtering](https://infinite-table.com/docs/learn/filtering/index.md), [sorting](https://infinite-table.com/docs/learn/sorting/overview.md), [grouping](https://infinite-table.com/docs/learn/grouping-and-pivoting/grouping-rows.md), [pivoting](https://infinite-table.com/docs/learn/grouping-and-pivoting/pivoting/overview.md), [aggregations](https://infinite-table.com/docs/learn/grouping-and-pivoting/group-aggregations.md), [live pagination](https://infinite-table.com/docs/learn/working-with-data/live-pagination.md), [lazy loading](https://infinite-table.com/docs/learn/working-with-data/lazy-loading.md) - all of those with support for both client-side and server-side implementations.

You can choose to leverage our built-in implementations in the browser, or you can process your data on the server with full support from our-side.

### 🔒 Secure by Default

We take security seriously and only have a total of 3 dependencies in our full dependency graph - and this number will only go down.

### 📦 Small Bundle Size

Our bundle size is under `300kB` and we're dedicated to [keeping it small](https://bundlephobia.com/package/@infinite-table/infinite-react).

See our bundle size in BundlePhobia

### 🧪 Automated End-to-End Tests

Our releases are automated and, we have full end-to-end tests that ensure we're delivering to our standards.

Real-browser tests help us move with confidence and continue to ship great features.

Check out our end-to-end tests in GitHub

## 🎨 Themable

`Infinite Table` is fully customizable, via CSS variables.

It ships with both a **light** and a **dark** theme - all you have to do is import the CSS file from the package.

```ts
import '@infinite-table/infinite-react/index.css';

// This file includes both the light and the dark themes.
```

Read how to use themes and **CSS variables** to customize every aspect of Infinite Table
