# Mito vs. Other Dash Components

## Which Grid Should I Use for My Use Case?

1. If you're looking to allow users to perform spreadsheet operations on their data, **Mito** is a good choice. This includes formulas like SUM/VLOOKUP, pivot tables, and graphing.&#x20;
2. If you want to *record* user edits and automate data work, **Mito** is a good choice. Mito records all user edits to your dataframes as a Python script, and then replays edits on new datasets.
3. If you're looking for advanced visual customization (with CSS and JavaScript), **AgGrid** is a good choice. This includes complete color customization, row width customization, and more.
4. If you're for a solid, simple, static layout of data, and you're looking to just use core packages, **Dash Table** is a good choice.

## Functionality Supported by These Component:

<table data-full-width="true"><thead><tr><th width="242.33333333333331"></th><th width="238">Dash Table</th><th>Dash AgGrid</th><th>Mito for Dash</th></tr></thead><tbody><tr><td><strong>Exploration Features</strong></td><td></td><td></td><td></td></tr><tr><td>Sorting</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Column Resizing</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Search</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Filtering</td><td><mark style="color:yellow;">Limited by default</mark></td><td><mark style="color:yellow;">Limited by default</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Toggle Filter</td><td><mark style="color:red;">No</mark></td><td><mark style="color:yellow;">Enterprise-only</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Conditional Formatting</td><td><mark style="color:yellow;">Programmatically, CSS/JS</mark></td><td><mark style="color:yellow;">Programmatically, Python</mark></td><td><mark style="color:yellow;">By grid end-user</mark></td></tr><tr><td>Graphing</td><td><mark style="color:red;">No</mark></td><td><mark style="color:yellow;">Enterprise-only</mark></td><td><mark style="color:green;">Yes, Plotly charts</mark></td></tr><tr><td>Pivot Tables</td><td><mark style="color:red;">No</mark></td><td><mark style="color:yellow;">Enterprise-only</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td><strong>Editing Features</strong></td><td></td><td></td><td></td></tr><tr><td>Edit Specific Cells</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Reorder rows</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Excel-like Formulas</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Import from XLSX</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Import from CSV</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Import from Snowflake</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:yellow;">Enterprise-only</mark></td></tr><tr><td>AI Transformation</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Export to CSV</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Export to XLSX</td><td><mark style="color:red;">No</mark></td><td><mark style="color:yellow;">Enterprise-only</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td><strong>Automation Features</strong></td><td></td><td></td><td></td></tr><tr><td>Python Macro-Record</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Rerun Edits on New Data</td><td><mark style="color:red;">No</mark></td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td><strong>Styling Features</strong></td><td></td><td></td><td></td></tr><tr><td>Change coloring</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Change Font</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Row Spacing</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Row Height</td><td><mark style="color:yellow;">With CSS</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Column Width</td><td><mark style="color:yellow;">Programmatically, Python</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:yellow;">By grid end-user</mark></td></tr><tr><td>Pin Columns</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Conditional Formatting</td><td><mark style="color:yellow;">Programmatically, CSS/JS</mark></td><td><mark style="color:yellow;">Programmatically, Python</mark></td><td><mark style="color:yellow;">By grid end-user</mark></td></tr><tr><td>Change Icons</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Style Inputs</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Style Print Format</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td>Tree Data</td><td><mark style="color:red;">No</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">No</mark></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td><strong>Performance</strong></td><td></td><td></td><td></td></tr><tr><td>Supports Unlimited Rows</td><td><mark style="color:yellow;">Gets laggy on large data</mark></td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Displays Unlimited Rows</td><td><mark style="color:yellow;">Gets laggy on large data</mark></td><td><mark style="color:green;">Yes, with infinite row model</mark></td><td><mark style="color:red;">No, defaults to first 1500</mark></td></tr><tr><td>Supports Unlimited Cols</td><td><mark style="color:yellow;">Gets laggy on large data</mark></td><td><mark style="color:yellow;">Gets laggy on >100 cols.</mark></td><td><mark style="color:green;">Yes</mark></td></tr><tr><td>Displays Unlimited Cols</td><td><mark style="color:yellow;">Gets laggy on large data</mark></td><td><mark style="color:yellow;">Gets laggy on >100 cols.</mark></td><td><mark style="color:red;">No, defaults to first 1500</mark></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td><strong>Package</strong></td><td></td><td></td><td></td></tr><tr><td>Open-Source</td><td><a href="https://github.com/plotly/dash/tree/dev/components/dash-table"><mark style="color:green;">Yes</mark></a></td><td><a href="https://github.com/ag-grid/ag-grid"><mark style="color:green;">Yes</mark></a></td><td><a href="http://github.com/mito-ds/mito/"><mark style="color:green;">Yes</mark></a></td></tr><tr><td>Non-third-party Package</td><td><mark style="color:green;">Yes</mark></td><td><mark style="color:red;">pip install dash-ag-grid</mark></td><td><mark style="color:red;">pip install mitosheet dash</mark></td></tr></tbody></table>

{% hint style="info" %}
Dash is designed to allow for ultimate flexibility and customization. That means even if a component doesn't support some of the operations that you want your app to support, you can probably add custom code to your Dash app to support the functionality.&#x20;

For example, although DashTable does not directly support XLSX import, you could still add this to your application with additions to your UI.&#x20;

This feature table is meant to demonstrate what features are available in the *grid-component* only -- so you'll better understand what you have to build yourself.
{% endhint %}
