Transform CSS-IN-JS styled components to Sentry Flex Layout components
# Install from registry
codemod run sentry-flex-layout
# Or run locally
codemod run -w workflow.yamlThis codemod transforms CSS-IN-JS styled components with flexbox properties into Sentry's Flex Layout components.
Before:
const CenteredDiv = styled("div")`
display: flex;
justify-content: center;
align-items: center;
`After:
const CenteredDiv = <Flex justify="center" align="center">{children}</Flex>The codemod converts the following CSS flexbox properties to Flex component props:
justify-content→justify(flex-start → start, flex-end → end, etc.)align-items→align(flex-start → start, flex-end → end, etc.)flex-direction→direction(row, column, row-reverse, column-reverse)flex-wrap→wrap(wrap, nowrap, wrap-reverse)gap→gap(preserved as-is)
- Only transforms
styled("div")components that includedisplay: flex - Requires the Flex component to be imported
- Preserves all other styled components unchanged
# Test the transformation
npm test
# Validate the workflow
codemod validate -w workflow.yaml
# Publish to registry
codemod login
codemod publishThis codemod is designed to handle large-scale migrations of CSS-IN-JS flex layouts to component-based layouts. It:
- Finds candidates: Automatically identifies
styled("div")components with flex properties - Extracts properties: Parses CSS and maps flexbox properties to component props
- Generates components: Creates JSX Flex components with appropriate props
- Preserves children: Maintains
{children}placeholder for component usage
For large codebases with 325+ instances, run the codemod incrementally and test each transformation.
MIT