chore: Release 2026-05-18 01:41:54 (#2535)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @lynx-js/autolink-codegen@0.1.0
### Minor Changes
- Add the Native Autolink codegen package.
([#2601](https://github.com/lynx-family/lynx-stack/pull/2601))
## create-lynx-extension@0.1.0
### Minor Changes
- Add the Native Autolink create-extension package.
([#2587](https://github.com/lynx-family/lynx-stack/pull/2587))
### Patch Changes
- Use published package versions for scaffolded autolink codegen
dependencies instead of workspace placeholders.
([#2628](https://github.com/lynx-family/lynx-stack/pull/2628))
- Fix npm bin symlink entrypoint detection for the create extension CLI.
([#2623](https://github.com/lynx-family/lynx-stack/pull/2623))
## @lynx-js/react@0.121.0
### Minor Changes
- Support `React.createElement(type, props, children)` API.
([#2360](https://github.com/lynx-family/lynx-stack/pull/2360))
```jsx
React.createElement("view", { style }, <text>hello</text>);
// equivalent to
<view style={style}>
<text>hello</text>
</view>;
React.createElement(MyComponent, { style }, <view />);
// equivalent to
<MyComponent style={style}>
<view />
</MyComponent>;
```
### Patch Changes
- Clear transient snapshot child props when removed snapshot subtrees
are detached, preventing compiled `$*` child references from retaining
deleted list holder or list item subtrees after removal.
([#2590](https://github.com/lynx-family/lynx-stack/pull/2590))
- Add `createPortal` for rendering a subtree into a different ReactLynx
element identified by a `NodesRef`.
([#2543](https://github.com/lynx-family/lynx-stack/pull/2543))
```tsx
function App() {
const [host, setHost] = useState(null);
return (
<view>
<view ref={setHost} />
{host && createPortal(<text>hi</text>, host)}
</view>
);
}
```
- Default `fireEvent` to `bubbles: true` for the TouchEvent family in
testing-library to match Lynx runtime semantics, and stop reassigning
the read-only `Event.prototype` accessors which threw `TypeError` in
strict mode.
([#2532](https://github.com/lynx-family/lynx-stack/pull/2532))
- Set `bundle-url` on lazy bundle border elements.
([#2537](https://github.com/lynx-family/lynx-stack/pull/2537))
- Stop warning when `runWorklet` receives an invalid or missing
main-thread function object. Invalid worklet contexts are still ignored,
but nullish handler values no longer produce noisy `MainThreadFunction:
Invalid function object` console output.
([#2586](https://github.com/lynx-family/lynx-stack/pull/2586))
- Retain main-thread worklet context references before offscreen
snapshot elements are materialized, so event, ref, gesture, and spread
callbacks stay alive until the DOM update path can attach them.
([#2592](https://github.com/lynx-family/lynx-stack/pull/2592))
- Update the @lynx-js/tasm dependency to 0.0.39 and align React template
attribute descriptors with it.
([#2643](https://github.com/lynx-family/lynx-stack/pull/2643))
- Avoid retaining transformed nested worklet contexts after worklet
transformation.
([#2591](https://github.com/lynx-family/lynx-stack/pull/2591))
Nested worklets transformed by the worklet runtime now keep their
context recovery metadata through a weak reference, preventing cached
transformed worklet functions from keeping list-item worklet contexts
alive.
## @lynx-js/docs-mcp-server@0.2.3
### Patch Changes
- fix(docs-mcp): recursively crawl and register nested llms.txt
resources ([#2317](https://github.com/lynx-family/lynx-stack/pull/2317))
## @lynx-js/rspeedy@0.14.4
### Patch Changes
- feat(qrcode): support get entry from api exposed from
rspeedy.env.entries
([#2551](https://github.com/lynx-family/lynx-stack/pull/2551))
- Updated dependencies
\[[`ad1f90f`](https://github.com/lynx-family/lynx-stack/commit/ad1f90fc05bc634b22a27b17528f8736c1aba425)]:
- @lynx-js/chunk-loading-webpack-plugin@0.3.4
- @lynx-js/web-rsbuild-server-middleware@0.20.4
- @lynx-js/cache-events-webpack-plugin@0.0.3
## @lynx-js/lynx-bundle-rslib-config@0.3.3
### Patch Changes
- Update the @lynx-js/tasm dependency to 0.0.39 and align React template
attribute descriptors with it.
([#2643](https://github.com/lynx-family/lynx-stack/pull/2643))
## @lynx-js/qrcode-rsbuild-plugin@0.4.7
### Patch Changes
- feat(qrcode): support get entry from api exposed from
rspeedy.env.entries
([#2551](https://github.com/lynx-family/lynx-stack/pull/2551))
## @lynx-js/react-rsbuild-plugin@0.16.2
### Patch Changes
- Updated dependencies
\[[`3e627b3`](https://github.com/lynx-family/lynx-stack/commit/3e627b337ca23d3cd8a41dbbf68568633f046e6d),
[`7b8d63c`](https://github.com/lynx-family/lynx-stack/commit/7b8d63c2f996421634095e0fbdd8b5f3251486f9),
[`13a0776`](https://github.com/lynx-family/lynx-stack/commit/13a0776fe2c8c7fc86c142f949436dffb78585ee),
[`a973c54`](https://github.com/lynx-family/lynx-stack/commit/a973c545cf4f0e907dbf55db83ddb4bca1f48c23),
[`353b1b7`](https://github.com/lynx-family/lynx-stack/commit/353b1b7dade99f9ca45ddaebb2e9644100e9e18c)]:
- @lynx-js/template-webpack-plugin@0.11.1
- @lynx-js/react-refresh-webpack-plugin@0.3.6
- @lynx-js/react-alias-rsbuild-plugin@0.16.2
- @lynx-js/use-sync-external-store@1.5.0
- @lynx-js/react-webpack-plugin@0.9.2
- @lynx-js/css-extract-webpack-plugin@0.7.1
## @lynx-js/web-core@0.20.4
### Patch Changes
- Always clone touch event lists when creating cross-thread events so
synthetic touch events only carry structured-clone-safe primitive
fields. ([#2636](https://github.com/lynx-family/lynx-stack/pull/2636))
- Conditionally pass Card and Component params based on cardType in
background thread.
([#2610](https://github.com/lynx-family/lynx-stack/pull/2610))
- Add bidirectional decode worker heartbreak liveness messages.
([#2599](https://github.com/lynx-family/lynx-stack/pull/2599))
- Add web support for the `<frame>` element by mapping it to
`<lynx-view>`.
([#2604](https://github.com/lynx-family/lynx-stack/pull/2604))
- Stop redeclaring `fetch` as a chunk-scope binding. Reusing the host
([#2562](https://github.com/lynx-family/lynx-stack/pull/2562))
`window.fetch` from BTS chunks (instead of capturing the no-op stub the
chunk wrapper used to install) lets the renderer issue real network
requests.
- Updated dependencies
\[[`c1db603`](https://github.com/lynx-family/lynx-stack/commit/c1db6034641954680c529e3a01a04077196cd94d)]:
- @lynx-js/web-elements@0.12.2
- @lynx-js/web-worker-rpc@0.20.4
## @lynx-js/web-elements@0.12.2
### Patch Changes
- fix: xmarkdown create img incorrectly
([#2540](https://github.com/lynx-family/lynx-stack/pull/2540))
## @lynx-js/chunk-loading-webpack-plugin@0.3.4
### Patch Changes
- Override `__webpack_require__.e` so a single sync-then chunk load (the
([#2597](https://github.com/lynx-family/lynx-stack/pull/2597))
typical lazy bundle case) bypasses `Promise.all`. It will make first
screen
in main thread can load lazy bundle synchronously when using dynamic
import.
## @lynx-js/react-refresh-webpack-plugin@0.3.6
### Patch Changes
- Widen `@lynx-js/react-webpack-plugin` peer range to include `^0.9.0`.
([#2626](https://github.com/lynx-family/lynx-stack/pull/2626))
## @lynx-js/template-webpack-plugin@0.11.1
### Patch Changes
- feat(web): enable web binary template by default
([#2545](https://github.com/lynx-family/lynx-stack/pull/2545))
The default encoding format for the web platform template has been
changed from JSON to Binary.
**Benefits for developers:**
- **Smaller output size:** Binary templates are more compact than JSON
strings, reducing the final bundle size.
- **Faster load performance:** Binary templates parse faster than JSON
in the runtime, improving the time-to-interactive for web applications.
**How to turn off this feature:**
If you encounter any issues with the new binary template format, you can
revert to the previous JSON format by setting the environment variable
`EXPERIMENTAL_USE_WEB_BINARY_TEMPLATE` to `'false'` or `'0'` before
running your build commands. For example:
`EXPERIMENTAL_USE_WEB_BINARY_TEMPLATE=false rspeedy build`
**Upgrade to `@lynx-js/web-core@0.20.2` could support the new output
format**
See [`@lynx-js/web-core`
Changelog](https://lynx-stack.dev/changelog/lynx-js--web-core)
- Run TASM template encoding in a shared `tinypool` worker pool so
multi-entry builds encode in parallel and watch-mode rebuilds reuse warm
workers. ([#2634](https://github.com/lynx-family/lynx-stack/pull/2634))
- Make `LynxTemplatePlugin.getLynxTemplatePluginHooks` a cross-module
singleton so duplicate copies of this package (e.g. from npm hoist
conflicts) share the same hooks per compilation.
([#2624](https://github.com/lynx-family/lynx-stack/pull/2624))
- Update the @lynx-js/tasm dependency to 0.0.39 and align React template
attribute descriptors with it.
([#2643](https://github.com/lynx-family/lynx-stack/pull/2643))
- Updated dependencies
\[[`ee79eff`](https://github.com/lynx-family/lynx-stack/commit/ee79effbd6e291e1eb9d03a1b89ec5c00304a389),
[`ded4de9`](https://github.com/lynx-family/lynx-stack/commit/ded4de90573f095ddae129f6d3e2c483e8da37ed),
[`cf01e94`](https://github.com/lynx-family/lynx-stack/commit/cf01e940b1c03c801ea7c5ba0e4d1788c3ca15c1),
[`b989c1c`](https://github.com/lynx-family/lynx-stack/commit/b989c1c0658177b054744fd92d76b5505cda2a23),
[`8417e68`](https://github.com/lynx-family/lynx-stack/commit/8417e686cba5ae8a0f8e8bda96d2f1e21dff15c3)]:
- @lynx-js/web-core@0.20.4
## @lynx-js/react-umd@0.121.0
## create-rspeedy@0.14.4
## @lynx-js/react-alias-rsbuild-plugin@0.16.2
## upgrade-rspeedy@0.14.4
## @lynx-js/web-rsbuild-server-middleware@0.20.4
## @lynx-js/web-worker-rpc@0.20.4
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> G
github-actions[bot] committed
676d1b34dfcd7658beec93af4b7f70b0e6fa46fb
Parent: 6f0042f
Committed by GitHub <noreply@github.com>
on 5/18/2026, 2:34:56 AM