packages/codemod/docs/STACK_MIGRATION.md
This document outlines the migration of Stack-related components from Chakra UI v2 to v3.
| v2 Component | v3 Component |
|---|---|
Stack | Stack |
VStack | VStack |
HStack | HStack |
StackDivider | StackSeparator |
v2:
import { HStack, Stack, StackDivider, VStack } from "@chakra-ui/react"
v3:
import { HStack, Stack, StackSeparator, VStack } from "@chakra-ui/react"
| v2 Prop | v3 Prop | Notes |
|---|---|---|
spacing | gap | Renamed for CSS alignment |
divider | separator | Renamed for consistency |
v2:
import { Stack } from "@chakra-ui/react"
;<Stack spacing={4}>
<Box>Item 1</Box>
<Box>Item 2</Box>
<Box>Item 3</Box>
</Stack>
v3:
import { Stack } from "@chakra-ui/react"
;<Stack gap={4}>
<Box>Item 1</Box>
<Box>Item 2</Box>
<Box>Item 3</Box>
</Stack>
v2:
import { VStack, HStack } from '@chakra-ui/react'
<VStack spacing={4}>
<Box>Vertical 1</Box>
<Box>Vertical 2</Box>
</VStack>
<HStack spacing={6}>
<Box>Horizontal 1</Box>
<Box>Horizontal 2</Box>
</HStack>
v3:
import { VStack, HStack } from '@chakra-ui/react'
<VStack gap={4}>
<Box>Vertical 1</Box>
<Box>Vertical 2</Box>
</VStack>
<HStack gap={6}>
<Box>Horizontal 1</Box>
<Box>Horizontal 2</Box>
</HStack>
v2:
import { Stack, StackDivider } from "@chakra-ui/react"
;<Stack spacing={4} divider={<StackDivider />}>
<Box>Section 1</Box>
<Box>Section 2</Box>
<Box>Section 3</Box>
</Stack>
v3:
import { Stack, StackSeparator } from "@chakra-ui/react"
;<Stack gap={4} separator={<StackSeparator />}>
<Box>Section 1</Box>
<Box>Section 2</Box>
<Box>Section 3</Box>
</Stack>
v2:
import { Stack, StackDivider } from "@chakra-ui/react"
;<Stack spacing={4} divider={<StackDivider borderColor="gray.200" />}>
<Box>Section 1</Box>
<Box>Section 2</Box>
</Stack>
v3:
import { Stack, StackSeparator } from "@chakra-ui/react"
;<Stack gap={4} separator={<StackSeparator borderColor="gray.200" />}>
<Box>Section 1</Box>
<Box>Section 2</Box>
</Stack>
v2:
import { Stack, StackDivider } from "@chakra-ui/react"
;<Stack>
<Box>Section 1</Box>
<StackDivider />
<Box>Section 2</Box>
</Stack>
v3:
import { Stack, StackSeparator } from "@chakra-ui/react"
;<Stack>
<Box>Section 1</Box>
<StackSeparator />
<Box>Section 2</Box>
</Stack>
v2:
import { Stack } from "@chakra-ui/react"
;<Stack spacing={4} direction={{ base: "column", md: "row" }}>
<Box>Item 1</Box>
<Box>Item 2</Box>
</Stack>
v3:
import { Stack } from "@chakra-ui/react"
;<Stack gap={4} direction={{ base: "column", md: "row" }}>
<Box>Item 1</Box>
<Box>Item 2</Box>
</Stack>
To automatically migrate your Stack components, run:
npx @chakra-ui/codemod transform stack <path>
# Transform all files in src directory
npx @chakra-ui/codemod transform stack ./src
# Dry run to preview changes
npx @chakra-ui/codemod transform stack ./src --dry
If you prefer to migrate manually:
spacing to gap on all Stack componentsdivider to separatorStackDivider with StackSeparatorStackSeparator instead of StackDividerspacing → gap (aligns with CSS gap property)divider → separator (more semantically accurate)StackDivider → StackSeparator (consistent naming)The v3 Stack provides:
gap prop aligns with standard CSS gap property