@esmx/rspack-react
The Rspack React package provides a set of APIs for creating and configuring React-based Rspack applications, supporting React component development, building, and SSR with React Refresh hot module replacement.
Installation
Use package manager to install @esmx/rspack-react as a development dependency:
Type Exports
BuildTarget
Build target environment type that defines the target environment for application builds, used to configure specific optimizations and features in the build process:
node: Build code to run in Node.js environmentclient: Build code to run in browser environmentserver: Build code to run in server environment
RspackAppConfigContext
Rspack application configuration context interface provides context information accessible in configuration hook functions:
esmx: Esmx framework instancebuildTarget: Current build target (client/server/node)config: Rspack configuration objectoptions: Application configuration options
RspackAppChainContext
Rspack chain configuration context interface provides context information accessible in chain hook functions:
esmx: Esmx framework instancebuildTarget: Current build target (client/server/node)chain: rspack-chain configuration object for chained configurationoptions: Application configuration options
RspackAppOptions
Rspack application configuration options interface:
minimize: Whether to enable code compression, defaults to automatic selection based on environmentconfig: Configuration hook function for modifying Rspack compilation configurationchain: Chain hook function using rspack-chain for flexible configuration modification
RspackHtmlAppOptions
Rspack HTML application configuration options interface, extends RspackAppOptions:
css: CSS output method, optional 'css' (separate file) or 'js' (bundled into JS), defaults to automatic selection based on environmentloaders: Custom loader configuration for replacing default loader implementationsstyleLoader: style-loader configuration optionscssLoader: css-loader configuration optionslessLoader: Less compilation optionsstyleResourcesLoader: Global style resources auto-injection configurationswcLoader: TypeScript/JavaScript compilation optionsdefinePlugin: Global constant definitions, supports different values for different build targetstarget: Build target compatibility configuration
RspackReactAppOptions
Rspack React application configuration options interface, extends RspackHtmlAppOptions. All options from RspackHtmlAppOptions are available, with React-specific configurations handled automatically by the build tool.
Function Exports
createRspackReactApp
Creates a React Rspack application instance with automatic React configuration, including:
- React JSX/TSX support with automatic runtime
- React Refresh plugin for hot module replacement (development only)
- TypeScript and JavaScript compilation with React transform
- SSR support for React components
Parameters:
esmx: Esmx framework instanceoptions: React application configuration options
Returns:
- Returns a Promise that resolves to the created React application instance
Example:
React-Specific Features:
The createRspackReactApp function automatically configures:
- JSX/TSX Support: Adds
.tsxand.jsxextensions to resolve configuration - React Transform: Configures SWC loader with React transform using automatic runtime
- React Refresh: Automatically enables React Refresh plugin for HMR in client development builds
- Environment Variables: Sets
process.env.NODE_ENVbased on build environment
createRspackHtmlApp
Creates an HTML-type Rspack application instance. This function is re-exported from @esmx/rspack and is available for use in React applications if needed.
Parameters:
esmx: Esmx framework instanceoptions: HTML application configuration options
Returns:
- Returns a Promise that resolves to the created HTML application instance
createRspackApp
Creates a standard Rspack application instance. This function is re-exported from @esmx/rspack and provides the base Rspack functionality.
Parameters:
esmx: Esmx framework instanceoptions: Rspack application configuration options
Returns:
- Returns a Promise that resolves to the created application instance
Constant Exports
RSPACK_LOADER
Rspack built-in loader identifier mapping object that provides commonly used loader name constants:
builtinSwcLoader: Rspack built-in SWC loader for processing TypeScript/JavaScript files, configured with React transform for TSX/JSX fileslightningcssLoader: Rspack built-in lightningcss loader, a high-performance compiler for processing CSS filesstyleLoader: Loader that injects CSS into the DOMcssLoader: Loader that parses CSS files and handles CSS modularizationlessLoader: Loader that compiles Less files to CSSstyleResourcesLoader: Loader that automatically imports global style resources (variables, mixins, etc.)workerRspackLoader: Loader for processing Web Worker files
Using these constants can reference built-in loaders in configuration, avoiding manual string input:
Notes:
- These loaders are already built into Rspack, requiring no additional installation
- When customizing loader configuration, these constants can be used to replace default loader implementations
- The
builtinSwcLoaderis automatically configured with React transform for.tsxand.jsxfiles - Some loaders (such as
builtinSwcLoader) have specific configuration options; please refer to the corresponding configuration documentation
Module Exports
rspack
Re-exports all contents from @rspack/core package, providing complete Rspack core functionality, including plugins, loaders, and utilities.
React-Specific Configuration
Automatic React Configuration
When using createRspackReactApp, the following React-specific configurations are automatically applied:
- File Extensions:
.tsxand.jsxare added to resolve extensions - React Loader Rule: A dedicated rule for
.tsxand.jsxfiles with:- SWC loader with TypeScript parser
- React transform with automatic runtime
- React Refresh enabled in development (client builds only)
- React Refresh Plugin: Automatically added for client development builds
- Environment Variables:
process.env.NODE_ENVis set based on build environment
Customizing React Configuration
You can customize React-specific behavior using the chain hook:
SSR Support
React SSR is fully supported. React components can be rendered directly using react-dom/server without special loader configuration:
Examples
Basic React Application
React Application with Custom CSS Configuration
React Application with TypeScript Configuration
Notes
- React Version: Requires React 18.0.0 or higher
- TypeScript Support: Full TypeScript support with TSX files
- Hot Module Replacement: React Refresh is automatically enabled in development for client builds
- SSR: Fully supported without additional configuration
- Performance: Uses Rspack's high-performance build system with React optimizations
- Module Linking: Built-in support for Esmx module linking capabilities