File: column-sizing.md | Updated: 11/15/2025
Search...
+ K
Auto
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Maintainers Partners Support Learn StatsBETA Discord Merch Blog GitHub Ethos Brand Guide
Documentation
Framework
React
Version
Latest
Search...
+ K
Menu
Getting Started
Core Guides
Feature Guides
Core APIs
Feature APIs
Enterprise
Examples
Framework
React
Version
Latest
Menu
Getting Started
Core Guides
Feature Guides
Core APIs
Feature APIs
Enterprise
Examples
On this page
Copy Markdown
Column sizing state is stored on the table using the following shape:
tsx
export type ColumnSizingTableState = {
columnSizing: ColumnSizing
columnSizingInfo: ColumnSizingInfoState
}
export type ColumnSizing = Record<string, number>
export type ColumnSizingInfoState = {
startOffset: null | number
startSize: null | number
deltaOffset: null | number
deltaPercentage: null | number
isResizingColumn: false | string
columnSizingStart: [string, number][]
}
export type ColumnSizingTableState = {
columnSizing: ColumnSizing
columnSizingInfo: ColumnSizingInfoState
}
export type ColumnSizing = Record<string, number>
export type ColumnSizingInfoState = {
startOffset: null | number
startSize: null | number
deltaOffset: null | number
deltaPercentage: null | number
isResizingColumn: false | string
columnSizingStart: [string, number][]
}
Column Def Options
------------------
### enableResizing
tsx
enableResizing?: boolean
enableResizing?: boolean
Enables or disables column resizing for the column.
tsx
size?: number
size?: number
The desired size for the column
tsx
minSize?: number
minSize?: number
The minimum allowed size for the column
tsx
maxSize?: number
maxSize?: number
The maximum allowed size for the column
Column API
----------
### getSize
tsx
getSize: () => number
getSize: () => number
Returns the current size of the column
tsx
getStart: (position?: ColumnPinningPosition) => number
getStart: (position?: ColumnPinningPosition) => number
Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the column, measuring the size of all preceding columns.
Useful for sticky or absolute positioning of columns. (e.g. left or transform)
tsx
getAfter: (position?: ColumnPinningPosition) => number
getAfter: (position?: ColumnPinningPosition) => number
Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the column, measuring the size of all succeeding columns.
Useful for sticky or absolute positioning of columns. (e.g. right or transform)
tsx
getCanResize: () => boolean
getCanResize: () => boolean
Returns true if the column can be resized.
tsx
getIsResizing: () => boolean
getIsResizing: () => boolean
Returns true if the column is currently being resized.
tsx
resetSize: () => void
resetSize: () => void
Resets the column size to its initial size.
Header API
----------
### getSize
tsx
getSize: () => number
getSize: () => number
Returns the size for the header, calculated by summing the size of all leaf-columns that belong to it.
tsx
getStart: (position?: ColumnPinningPosition) => number
getStart: (position?: ColumnPinningPosition) => number
Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding headers.
tsx
getResizeHandler: () => (event: unknown) => void
getResizeHandler: () => (event: unknown) => void
Returns an event handler function that can be used to resize the header. It can be used as an:
The dragging and release events are automatically handled for you.
Table Options
-------------
### enableColumnResizing
tsx
enableColumnResizing?: boolean
enableColumnResizing?: boolean
Enables/disables column resizing for *all columns**.
tsx
columnResizeMode?: 'onChange' | 'onEnd'
columnResizeMode?: 'onChange' | 'onEnd'
Determines when the columnSizing state is updated. onChange updates the state when the user is dragging the resize handle. onEnd updates the state when the user releases the resize handle.
tsx
columnResizeDirection?: 'ltr' | 'rtl'
columnResizeDirection?: 'ltr' | 'rtl'
Enables or disables right-to-left support for resizing the column. defaults to 'ltr'.
tsx
onColumnSizingChange?: OnChangeFn<ColumnSizingState>
onColumnSizingChange?: OnChangeFn<ColumnSizingState>
This optional function will be called when the columnSizing state changes. If you provide this function, you will be responsible for maintaining its state yourself. You can pass this state back to the table via the state.columnSizing table option.
tsx
onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>
onColumnSizingInfoChange?: OnChangeFn<ColumnSizingInfoState>
This optional function will be called when the columnSizingInfo state changes. If you provide this function, you will be responsible for maintaining its state yourself. You can pass this state back to the table via the state.columnSizingInfo table option.
Table API
---------
### setColumnSizing
tsx
setColumnSizing: (updater: Updater<ColumnSizingState>) => void
setColumnSizing: (updater: Updater<ColumnSizingState>) => void
Sets the column sizing state using an updater function or a value. This will trigger the underlying onColumnSizingChange function if one is passed to the table options, otherwise the state will be managed automatically by the table.
tsx
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
setColumnSizingInfo: (updater: Updater<ColumnSizingInfoState>) => void
Sets the column sizing info state using an updater function or a value. This will trigger the underlying onColumnSizingInfoChange function if one is passed to the table options, otherwise the state will be managed automatically by the table.
tsx
resetColumnSizing: (defaultState?: boolean) => void
resetColumnSizing: (defaultState?: boolean) => void
Resets column sizing to its initial state. If defaultState is true, the default state for the table will be used instead of the initialValue provided to the table.
tsx
resetHeaderSizeInfo: (defaultState?: boolean) => void
resetHeaderSizeInfo: (defaultState?: boolean) => void
Resets column sizing info to its initial state. If defaultState is true, the default state for the table will be used instead of the initialValue provided to the table.
tsx
getTotalSize: () => number
getTotalSize: () => number
Returns the total size of the table by calculating the sum of the sizes of all leaf-columns.
tsx
getLeftTotalSize: () => number
getLeftTotalSize: () => number
If pinning, returns the total size of the left portion of the table by calculating the sum of the sizes of all left leaf-columns.
tsx
getCenterTotalSize: () => number
getCenterTotalSize: () => number
If pinning, returns the total size of the center portion of the table by calculating the sum of the sizes of all unpinned/center leaf-columns.
tsx
getRightTotalSize: () => number
getRightTotalSize: () => number
If pinning, returns the total size of the right portion of the table by calculating the sum of the sizes of all right leaf-columns.
