Transfer List

Two lists side by side: check items in one and move them to the other, such as the columns of a table or the members of a team.
Beta
Web
iOS
Android
@advui/core
Source

Table columns

Hidden columns0/3
Shown columns0/3

Installation

pnpm
pnpm add @advui/core
npm
npm install @advui/core

Usage

import { TransferList } from '@advui/core'

<TransferList
  items={columns}
  value={shown}
  onValueChange={setShown}
  labels={{ source: 'Hidden columns', target: 'Shown columns' }}
/>

Examples

Controlled, with a fixed item

People0/3
Design
Engineering
Support
Team0/2
Engineering
2 on the team

API reference

TransferList

PropTypeDefaultDescription
items requiredTransferListItem[]—`{ value, label, description?, disabled? }`, in the order both lists show them. A disabled item stays in its list.
valuestring[]—The values in the target list (right).
defaultValuestring[]—Starting `value` when uncontrolled.
onValueChange(value: string[]) => void—Called after a move, with the target list in the order of `items`.
listHeightSizeTokens | number'56'Height of each list (224px by default). Longer lists scroll.
disabledbooleanfalseNothing can be checked or moved.
labelsPartial<TransferListLabels>—The lists’ names (`source`, `target`: “Available”, “Selected”), `selectAll`, `empty`, `moveTo(list)` for the buttons and `moved(count, list)` for the announcement.

Accessibility

  • Each list is a Checkbox Group named by its title, with a Select All checkbox at the top.
  • The buttons between the lists are named for where they move the items (“Move to Selected”). With nothing checked they are aria-disabled rather than disabled, so a button keeps focus after it moves the items.
  • After a move, “2 moved to Selected” is announced: through a polite live region on web, and announceForAccessibility on iOS and Android.
Keyboard interactions
KeyAction
TabMoves between the checkboxes and the buttons.
SpaceChecks or unchecks an item.
Enter / SpaceOn a button, moves the checked items.

Platform notes

iOS
VoiceOver does not read group names: each checkbox has its list’s name as its hint (Checkbox Group).
Android
TalkBack does not read group names: each checkbox has its list’s name as its hint (Checkbox Group).
Since v0.14.0Last updated Nov 2, 2026Edit this page on GitHub