@lynx-js/react-webpack-plugin
0.11.0
Minor Changes
- Register the snapshot and worklet definitions collected from the background build on the main thread, so a definition the main-thread bundle dropped no longer fails with
Snapshot not found. (#3393)
Patch Changes
- Add
compat.transformLegacyEventAttributeNamesto disable legacy event attribute-name conversion independently from other compatibility transforms. (#3475)
0.10.3
Patch Changes
- Allow the next minor of
@lynx-js/template-webpack-pluginas a peer dependency. (#3362)
0.10.2
Patch Changes
-
Avoid wrapping shared async main-thread assets more than once. (#3281)
-
Add the experimental
experimental_transformBuiltinAttributeNamesoption for transforming builtin element attribute names.falsepreserves attribute names.truetransformsonClicktobindtap,onCatchTaptocatchtap, otheronXXXevent names tobindxxx, and remaining camelCase names to dash-case. An object supports serializable custom rules throughmode,preserve, andrename. Explicit JSX attributes are transformed during compilation, and spread attributes are transformed at runtime. (#3274)
0.10.1
Patch Changes
- Accept
@lynx-js/template-webpack-plugin^0.14.0as a peer dependency. (#2993)
0.10.0
Minor Changes
-
Stop injecting
webpackChunkNameinto dynamic imports so lazy bundle intermediate files stay inside the output directory. (#2961)The ReactLynx transform injected
webpackChunkName: "<request>-react__<layer>", so a dynamic import resolving above the compiler context (e.g.import('../../Foo.js')) leaked../into[name]/[id]and the intermediate js/css/hmr files escaped the output directory. Async chunks now keep rspack's own ids,__webpack_require__.lynx_acimaps them by chunk id, and each lazy bundle's intermediate JS and CSS are emitted under.rspeedy/async/<bundle-name>/<layer>.jsand<layer>.cssnext to its other intermediate outputs (tasm.json,debug-metadata.json, CSS hot-update files). ExplicitwebpackChunkNamecomments written by users are still honored and keep the user-controlled[name]placement. Main-thread chunks no longer emit CSS hot-update files — CSS only exists on the background thread, and the main-thread HMR runtime receives updates from it.These packages release together and must be upgraded together:
@lynx-js/react-webpack-pluginand@lynx-js/css-extract-webpack-pluginrequire@lynx-js/template-webpack-plugin^0.13.0, and@lynx-js/react-rsbuild-pluginrequires@lynx-js/react^0.123.0. -
Route
processEvalResultto the host that requested the lazy bundle, so multiple (#2584) hosts on one page each get their own eval result instead of sharing a single one. -
Add
firstScreenSyncTiming: 'manual'and a newmarkFirstScreenSyncReady()API exported by@lynx-js/react. (#2826)In
'manual'mode, the main thread holds the UI control after the first screen until the business callsmarkFirstScreenSyncReady(), so the handover timing to the background thread (for hydration) is fully controlled by the user. The API can be called from both threads (a background-thread call is forwarded to the main thread) and takes effect once the first-screen tree has finished rendering.
Patch Changes
-
Add
compat.legacySlottopluginReactLynx. When enabled, dynamic children are compiled to the pre-SlotV2 form (JSXchildren+wrapperelements +__DynamicPartChildren/__DynamicPartSlotsymbols instead of$0/$1slot props +SlotV2), so the compiled output stays compatible with legacy runtimes withoutSlotV2support (< 0.120.0, which shipped the SlotV2 refactor in #1764) — e.g. a standalone lazy bundle consumed by a host App that ships an older runtime. (#2947)The default (SlotV2) codegen is unchanged, and the runtime keeps supporting both forms.
-
Fix
globDynamicComponentEntry is not definedwhen an external bundle's main-thread section is evaluated. An external bundle is not a dynamic component, soglobDynamicComponentEntry(only in scope for the main card and dynamic components) is undeclared there. The snapshot / element-template transform now bakes the__Card__entry name into an external bundle's snapshots instead of referencing the bare identifier, via a new internalisExternalBundleloader option. (#2934) -
Updated dependencies [
fec4237]:- @lynx-js/webpack-runtime-globals@0.0.7
0.9.5
Patch Changes
-
Support enabling preact devtools in production via the
REACT_DEVTOOLenvironment variable. (#2880)By default
@lynx-js/preact-devtoolsis aliased away in production builds. Setting theREACT_DEVTOOLenvironment variable now:- keeps a user-imported
@lynx-js/preact-devtoolsfrom being stripped; - defines
__REACT_DEVTOOL__, which gates the dev-only runtime hooks devtools depends on (such asinjectLepusMethods) so they also run in production; - keeps function/class names during minification (
keep_fnames/keep_classnames), which devtools needs to resolve component names (type.name) and to reconstruct the hook tree (it matches minified stack frames by function name).
@lynx-js/react/debugremains development-only. - keeps a user-imported
0.9.4
Patch Changes
-
Support the unified
debug-metadata.jsonformat and depend on@lynx-js/debug-metadata. (#2642) -
Prefix Lynx runtime module names with
webpack/runtime/(e.g.Lynx async chunks→webpack/runtime/lynx async chunks), matching the path-structured naming of the bundler's built-in runtime modules. The previous bare names had no path segment, so when they appear as a source-mapsourcesentry under afile://module-filename template they collapsed into an invalid URL authority (the space-containing name became the host) and brokeSourceMapConsumerparsing. (#2642) -
Widen peer ranges to admit the new minor versions of
@lynx-js/template-webpack-plugin(^0.12.0) and@lynx-js/rspeedy(^0.15.0) shipping with the unifieddebug-metadata.jsonfeature. (#2642) -
Updated dependencies [
a839d59,d3201df,409594b,353363e]:- @lynx-js/debug-metadata@0.1.0
0.9.3
Patch Changes
- Inject the
lynxProcessEvalResultruntime module only into main-thread chunks. The previous guard checked the chunk name for:background, which never matched the actual chunk names (main__background,foo.js-react__background), so the runtime was duplicated into background and async background chunks. (#2692)
0.9.2
Patch Changes
- Support
@lynx-js/template-webpack-pluginv0.11.0. (#2483)
0.9.1
Patch Changes
-
Support rstest for testing library using a dedicated testing loader. (#2328)
-
fix(rstest): normalize partial
compatoptions in the testing loader (#2464)The testing loader forwards
compatdirectly totransformReactLynxSyncwithout normalization. Whencompatis supplied as a partial object, the requiredtargetfield is absent and the WASM transform throwsError: Missing field 'target'. Added the same normalization already present ingetCommonOptionsfor the background/main-thread loaders: fills intarget: 'MIXED'and all other required fields with sensible defaults. -
Add
enableUiSourceMapoption to enable UI source map generation and debug-metadata asset emission. (#2402)
0.9.0
Minor Changes
-
Add
removeCallfor shake function calls. Its initial default value matches the hooks that were previously inremoveCallParams, andremoveCallParamsnow defaults to empty. (#2423)removeCallremoves matched runtime hook calls entirely, replacing them withundefinedin expression positions and dropping them in statement positions.removeCallParamskeeps the existing behavior of preserving the call while stripping its arguments.
0.8.0
Minor Changes
-
feat: add
globalPropsModeoption toPluginReactLynxOptions(#2346)- When configured to
"event",updateGlobalPropswill only trigger a global event and skip therunWithForceflow. - Defaults to
"reactive", which meansupdateGlobalPropswill trigger re-render automatically.
- When configured to
Patch Changes
-
Fix sourcemap misalignment when wrapping lazy bundle main-thread chunks. (#2361)
The lazy bundle IIFE wrapper is now injected in
processAssetsatPROCESS_ASSETS_STAGE_OPTIMIZE_SIZE + 1by walking chunk groups instead of patching assets inbeforeEncode.- With
experimental_isLazyBundle: true, the wrapper is applied to lazy-bundle chunk groups. - Without lazy bundle mode, the wrapper is applied to async main-thread chunk groups generated by dynamic import.
Injecting the wrapper in this stage keeps the emitted JS stable after optimization while still running before
DEV_TOOLINGsourcemap finalization, so the generated.jsand.js.mapstay aligned. - With
-
Set
__DEV__and__PROFILE__totrueonNODE_ENV === 'development'. (#2324)
0.7.4
Patch Changes
- Remove element api calls alog by default, and only enable it when
__ALOG_ELEMENT_API__is defined totrueor environment variableREACT_ALOG_ELEMENT_APIis set totrue. (#2192)
0.7.3
Patch Changes
- Support
@lynx-js/template-webpack-pluginv0.10.0. (#1992)
0.7.2
Patch Changes
-
Pass sourcemap generated by rspack to swc transformer. (#1910)
-
When engineVersion is greater than or equal to 3.1, use
__SetAttributeto set text attribute for text node instead of creating a raw text node. (#1880)
0.7.1
Patch Changes
- Supports
@lynx-js/template-webpack-plugin0.9.0. (#1705)
0.7.0
Minor Changes
-
Remove
@lynx-js/reactfrom peerDependencies. (#1711) -
Add a new required option
workletRuntimePath. (#1711)
0.6.20
Patch Changes
- Updated dependencies [
aaca8f9]:- @lynx-js/webpack-runtime-globals@0.0.6
0.6.19
Patch Changes
0.6.18
Patch Changes
- Be compat with
@lynx-js/reactv0.111.0 (#204)
0.6.17
Patch Changes
-
Enable fine-grained control for
output.inlineScripts(#883)
0.6.16
Patch Changes
-
Supports
@lynx-js/template-webpack-plugin0.8.0. (#1033) -
Support
@lynx-js/reactv0.110.0. (#770) -
Keep snapshot id unchanged on Windows. (#1050)
-
Fix lazy bundle name on Windows. (#1060)
0.6.15
Patch Changes
- Fix lazy bundle build failed on Rspeedy v0.9.8 (with
output.iife: true). (#972)
0.6.14
Patch Changes
0.6.13
Patch Changes
-
feat: add
experimental_isLazyBundleoption, it will disable snapshot HMR for standalone lazy bundle (#653) -
Add the
profileoption to control whether__PROFILE__is enabled. (#722) -
Support
@lynx-js/reactv0.108.0. (#649)
0.6.12
Patch Changes
- Support @lynx-js/react v0.107.0 (#438)
0.6.11
Patch Changes
-
feat: fully support MTS (#569)
Now use support the following usage
- mainthread event
- mainthread ref
- runOnMainThread/runOnBackground
- ref.current.xx
0.6.10
Patch Changes
-
feat: add extractStr option to pluginReactLynx (#391)
-
Fix issue with lazy loading of bundles when source maps are enabled. (#380)
-
Fix issue where loading a lazy bundle fails if it does not return a webpack chunk. (#365)
0.6.9
Patch Changes
- Support
@lynx-js/reactv0.106.0. (#239)
0.6.8
Patch Changes
-
Shake
useImperativeHandleon the main-thread by default. (#153) -
Avoid wrapping standalone lazy bundles with
var globDynamicComponentEntry. (#177)
0.6.7
Patch Changes
-
Support NPM provenance. (#30)
-
Updated dependencies [
c617453]:- @lynx-js/webpack-runtime-globals@0.0.5
0.6.6
Patch Changes
- 1abf8f0: Be compat with
@lynx-js/reactv0.105.0 - 1abf8f0: Improve compilation performance by avoid using
compilation.updateAsset.
0.6.5
Patch Changes
- 94419fb: Support
@lynx-js/reactv0.104.0 - 1bf9271: fix(react): default
compatin transform tofalse
0.6.4
Patch Changes
- 0d3b44c: Support
@lynx-js/template-webpack-pluginv0.6.0. - 74e0ea3: Supports new
__MAIN_THREAD__and__BACKGROUND__macro as an alternative to__LEPUS__and__JS__.
0.6.3
Patch Changes
- 65ecd41: Fix
moduleis not defined when using lazy bundle.
0.6.2
Patch Changes
- 3bf5830: Add
lynxProcessEvalResult. - Updated dependencies [3bf5830]
- @lynx-js/webpack-runtime-globals@0.0.4
0.6.1
Patch Changes
-
e8039f2: Add
defineDCEin plugin options. Often used to define custom macros.Different from
defineprovided by bundlers like webpack,defineDCEworks at transform time and a extra DCE (Dead Code Elimination) pass will be performed.For example,
importinitialized by dead code will be removed:will be transformed to:
0.6.0
Minor Changes
-
a30c83d: Add
compat.removeComponentAttrRegex.NOTE: This feature is deprecated and will be removed in the future. Use codemod instead.
-
5f8d492: BREAKING CHANGE: Require
@lynx-js/reactv0.103.0. -
5f8d492: Deprecate
compat.simplifyCtorLikeReactLynx2
0.5.2
Patch Changes
- e3be842: Support
@lynx-js/reactv0.102.0 - 21dba89: Add
options.shaketo allow custom package names to be shaken.
0.5.1
Patch Changes
-
6730c58: Support
@lynx-js/reactv0.101.0 -
63f40cc: Inject
globDynamicComponentEntryfor all main thread script.
0.5.0
Minor Changes
- 587a782: BRAKING CHANGE: Require
@lynx-js/reactv0.100.0
Patch Changes
- 1938bb1: Add
transformPathto loader option - 1938bb1: Make peerDependencies of
@lynx-js/reactoptional.

