Enter the New Era of React 18 Library Building: Introducing esbuild-plugin-react18-css

Mayank Chaudhari
4 min readMar 16, 2024

In the ever-evolving landscape of web development, staying ahead of the curve is crucial. With the advent of React 18, developers are presented with exciting opportunities to redefine how they build and manage libraries. One such innovation that promises to revolutionize the process is the esbuild-plugin-react18-css. Let’s delve into what makes this tool a game-changer and how it empowers developers to create exceptional React 18 libraries.

Unveiling esbuild-plugin-react18-css

esbuild-plugin-react18-css is a cutting-edge ESBuild plugin tailored specifically for React 18 library development. It offers a comprehensive suite of features designed to streamline the creation of libraries while maximizing performance and flexibility.

Features at a Glance

  • ESBuild Plugin Power: Seamlessly integrate CSS/SCSS modules handling, autoprefixer, and more into your build pipeline.
  • Build Fully Tree Shakable Libraries: Harness the power of tree shaking — build libraries that are fully tree shakable. Not only JavaScript/TypeScript, even CSS is fully tree shakable. Import components directly from your-lib/client/component and add @import your-lib/client/component/index.css for optimal resource utilization.
  • CSS/SCSS Modules Support: Leverage CSS/SCSS modules effortlessly. Your styles are automatically converted to BEM-like CSS, enhancing maintainability and organization.
  • Fully Tree Shakable CSS: Optimize your users’ CSS footprint by importing only the necessary styles, reducing bloat and enhancing performance.
  • Full TypeScript Support: Embrace the type safety and developer productivity offered by TypeScript, ensuring robustness throughout your project.
  • React 18 Server Components Compatibility: Unleash the full potential of React 18’s server components without compromising on styling and build optimizations.
  • Framework Agnostic: Compatible with all major build systems, tools, and frameworks for React 18, ensuring seamless integration into your preferred workflow.
  • Comprehensive Documentation: Explore documentation generated with Typedoc, empowering developers to harness the full capabilities of the plugin effortlessly.

Getting Started

Getting started with esbuild-plugin-react18-css is a breeze. Simply install it using your preferred package manager:

A canonical package with shorter name is also available r18css

pnpm add esbuild-plugin-react18-css
npm install esbuild-plugin-react18-css

or

yarn add esbuild-plugin-react18-css

Integrating the plugin into your build setup is straightforward. Whether you’re using tsup or esbuild, configuration is simple and intuitive:

Using with tsup

// tsup.config.ts or tsup.config.js
import { defineConfig } from "tsup";
import cssPlugin from "esbuild-plugin-react18-css";
export default defineConfig(options => ({

esbuildPlugins: [cssPlugin()]
}));

Using with esbuild

import cssPlugin from "esbuild-plugin-react18-css";
esbuild.build({

plugins: [cssPlugin()],
});

Customization Options

Tailor the behavior of esbuild-plugin-react18-css to suit your specific needs with customizable options:

interface CSSPluginOptions {
/** by default name is generated without hash so that it is easier and reliable for library users to override some CSS*/
generateScopedName?: string | ((className: string, filename: string, css: string) => string);
/** set skipAutoPrefixer to true to disable autoprefixer */
skipAutoPrefixer?: boolean;
/** global CSS class prefix. @defaultValue "" */
globalPrefix?: string;
/** If you want to keep .module.css files */
keepModules?: boolean;
}

Conclusion

With esbuild-plugin-react18-css, developers enter a new era of React 18 library building. Its unparalleled feature set, seamless integration, and robust performance optimization capabilities make it an indispensable tool for modern web development workflows. Empower various projects world-wide to be leaner, more efficient with libraries that are lean and fully tree shakable while embracing the latest advancements in React 18.

So, what are you waiting for? Dive into the future of React 18 library development with esbuild-plugin-react18-css and elevate your coding experience to new heights.

This tool is best used with setup provided by react18-tools/turborepo-template.

🌟 Don’t forget to star this repository and join the community driving innovation forward!

Licensed under MIT open source.

Built with 💖 by Mayank Kumar Chaudhari

For hands-on courses on Turborepo, React, Next.js, and TypeScript, check out my courses page — https://mayank-chaudhari.vercel.app/courses

New course on crafting and publishing React18 / React19 libraries coming soon…

--

--

Mayank Chaudhari

Technical Writer | Developer | Researcher | Freelancer | Open Source Contributor