--- title: Compiling Libraries --- This guide helps library authors understand how to use React Compiler to ship optimized library code to their users. ## Why Ship Compiled Code? {/*why-ship-compiled-code*/} As a library author, you can compile your library code before publishing to npm. This provides several benefits: - **Performance improvements for all users** - Your library users get optimized code even if they aren't using React Compiler yet - **No configuration required by users** - The optimizations work out of the box - **Consistent behavior** - All users get the same optimized version regardless of their build setup ## Setting Up Compilation {/*setting-up-compilation*/} Add React Compiler to your library's build process: npm install -D babel-plugin-react-compiler@latest Configure your build tool to compile your library. For example, with Babel: ```js // babel.config.js module.exports = { plugins: [ 'babel-plugin-react-compiler', ], // ... other config }; ``` ## Backwards Compatibility {/*backwards-compatibility*/} If your library supports React versions below 19, you'll need additional configuration: ### 1. Install the runtime package {/*install-runtime-package*/} We recommend installing react-compiler-runtime as a direct dependency: npm install react-compiler-runtime@latest ```json { "dependencies": { "react-compiler-runtime": "^1.0.0" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0" } } ``` ### 2. Configure the target version {/*configure-target-version*/} Set the minimum React version your library supports: ```js { target: '17', // Minimum supported React version } ``` ## Testing Strategy {/*testing-strategy*/} Test your library both with and without compilation to ensure compatibility. Run your existing test suite against the compiled code, and also create a separate test configuration that bypasses the compiler. This helps catch any issues that might arise from the compilation process and ensures your library works correctly in all scenarios. ## Troubleshooting {/*troubleshooting*/} ### Library doesn't work with older React versions {/*library-doesnt-work-with-older-react-versions*/} If your compiled library throws errors in React 17 or 18: 1. Verify you've installed `react-compiler-runtime` as a dependency 2. Check that your `target` configuration matches your minimum supported React version 3. Ensure the runtime package is included in your published bundle ### Compilation conflicts with other Babel plugins {/*compilation-conflicts-with-other-babel-plugins*/} Some Babel plugins may conflict with React Compiler: 1. Place `babel-plugin-react-compiler` early in your plugin list 2. Disable conflicting optimizations in other plugins 3. Test your build output thoroughly ### Runtime module not found {/*runtime-module-not-found*/} If users see "Cannot find module 'react-compiler-runtime'": 1. Ensure the runtime is listed in `dependencies`, not `devDependencies` 2. Check that your bundler includes the runtime in the output 3. Verify the package is published to npm with your library ## Next Steps {/*next-steps*/} - Learn about [debugging techniques](/learn/react-compiler/debugging) for compiled code - Check the [configuration options](/reference/react-compiler/configuration) for all compiler options - Explore [compilation modes](/reference/react-compiler/compilationMode) for selective optimization --- ## Sitemap [Overview of all docs pages](/llms.txt)