packages/codemod/docs/COLLAPSIBLE_MIGRATION.md
This document outlines the migration from Chakra UI v2 Collapse component to v3 Collapsible.
| v2 Component | v3 Component |
|---|---|
Collapse | Collapsible.Root |
Collapsible.Content |
v2:
import { Collapse } from "@chakra-ui/react"
v3:
import { Collapsible } from "@chakra-ui/react"
| v2 Prop | v3 Prop | Notes |
|---|---|---|
in | open | Renamed for consistency |
animateOpacity | ❌ | Removed (always animated in v3) |
v2:
import { Button, Collapse } from "@chakra-ui/react"
function Demo() {
const [isOpen, setIsOpen] = useState(false)
return (
<>
<Button onClick={() => setIsOpen(!isOpen)}>Toggle</Button>
<Collapse in={isOpen}>
<Box p={4} bg="gray.100">
Collapsible content
</Box>
</Collapse>
</>
)
}
v3:
import { Button, Collapsible } from "@chakra-ui/react"
function Demo() {
const [isOpen, setIsOpen] = useState(false)
return (
<>
<Button onClick={() => setIsOpen(!isOpen)}>Toggle</Button>
<Collapsible.Root open={isOpen}>
<Collapsible.Content>
<Box p={4} bg="gray.100">
Collapsible content
</Box>
</Collapsible.Content>
</Collapsible.Root>
</>
)
}
v2:
import { Collapse } from "@chakra-ui/react"
;<Collapse in={isOpen} animateOpacity startingHeight={20} endingHeight="auto">
<Box>Content</Box>
</Collapse>
v3:
import { Collapsible } from "@chakra-ui/react"
;<Collapsible.Root open={isOpen} startingHeight={20} endingHeight="auto">
<Collapsible.Content>
<Box>Content</Box>
</Collapsible.Content>
</Collapsible.Root>
v2:
import { Collapse } from "@chakra-ui/react"
;<Collapse in={isOpen} unmountOnExit>
<ExpensiveComponent />
</Collapse>
v3:
import { Collapsible } from "@chakra-ui/react"
;<Collapsible.Root open={isOpen} unmountOnExit>
<Collapsible.Content>
<ExpensiveComponent />
</Collapsible.Content>
</Collapsible.Root>
To automatically migrate your Collapse components, run:
npx @chakra-ui/codemod transform collapsible <path>
# Transform all files in src directory
npx @chakra-ui/codemod transform collapsible ./src
# Dry run to preview changes
npx @chakra-ui/codemod transform collapsible ./src --dry
If you prefer to migrate manually:
Collapse import with CollapsibleCollapsible.Root >
Collapsible.Contentin to openanimateOpacity (always animated in v3)Collapse componentCollapsible.Root wraps Collapsible.Contentin → openanimateOpacity - Opacity animation is now always included in v3