Skip to content

Built-in Plugins ​

Oxc transformer includes built-in support for popular transformation plugins to improve developer experience and build performance.

Styled Components ​

The styled-components plugin adds comprehensive support for styled-components with server-side rendering, style minification, and enhanced debugging capabilities.

Basic Usage ​

javascript
import { transform } from "oxc-transform";

const result = transform("Component.jsx", sourceCode, {
  plugins: {
    styledComponents: {
      displayName: true,
      ssr: true,
      fileName: true,
      minify: true,
    },
  },
});

Example ​

Input:

jsx
import styled from "styled-components";

const Button = styled.div`
  color: blue;
  padding: 10px;
`;

Output (with default options):

jsx
import styled from "styled-components";

const Button = styled.div.withConfig({
  displayName: "Button",
  componentId: "sc-1234567-0",
})(["color:blue;padding:10px;"]);

Configuration Options ​

Core Options ​

OptionTypeDefaultDescription
displayNamebooleantrueEnhances the attached CSS class name with component names for easier debugging
ssrbooleantrueAdds unique component IDs to avoid checksum mismatches during server-side rendering
fileNamebooleantrueControls whether the displayName is prefixed with the filename

Template Literal Options ​

OptionTypeDefaultDescription
transpileTemplateLiteralsbooleantrueConverts template literals to a smaller representation for reduced bundle size
minifybooleantrueMinifies CSS content by removing whitespace and comments

Advanced Options ​

OptionTypeDefaultDescription
purebooleanfalseAdds /*#__PURE__*/ comments for better tree-shaking
namespacestringundefinedAdds a namespace prefix to component IDs
meaninglessFileNamesstring[]["index"]List of filenames considered meaningless for component naming

Not Yet Implemented ​

OptionTypeDefaultDescription
cssPropbooleantrueJSX css prop transformation (planned)
topLevelImportPathsstring[][]Custom import path handling (planned)

Supported Import Patterns ​

The plugin works with various styled-components import patterns:

javascript
// Default import
import styled from "styled-components";

// Namespace import
import * as styled from "styled-components";

// Named imports
import { createGlobalStyle, css, keyframes } from "styled-components";

// Native and primitives
import styled from "styled-components/native";
import styled from "styled-components/primitives";

Features ​

âś… Fully Supported:

  • Display names for debugging
  • Filename prefixing in display names
  • Server-side rendering support
  • Template literal transpilation
  • CSS minification
  • Namespace prefixes
  • Pure annotations for call expressions

⚠️ Partially Supported:

  • Pure annotations (call expressions only, not tagged templates due to bundler limitations)

❌ Not Yet Implemented:

  • JSX css prop transformation
  • Custom import path handling

Released under the MIT License.