3.5.0
Changelog
3.5.0
✨ Features
-
[Feature][Harmony] TemplateBundle support async decoding (28ed738) @pilipala195
On the Harmony platform, ets code runs on the main thread by default.
TemplateBundle.fromTemplatecan block the main thread and causing app_freeze. This MR introduces theTemplateBundle.fromTemplateAsyncinterface, which allows callers to wait asynchronously using aPromise, thus avoiding blocking other operations on the main thread. -
[Feature][Android] LynxModuleAndroid Authentication (2e32ba6) @OverWatch-Winder
Use LynxMethod verification interface to verify whether the LynxMethod is allowed to be called.
-
[Feature][DevTool] Support getBoxModel and getNodeForLocation for ios clay (c4cd7c1) @yuweizheng
Support getBoxModel and getNodeForLocation for ios clay
🐛 Bug Fixes
-
[BugFix] add
auto-sizefeature in embeddedMode. (b5c2832) @nhspriteadd
auto-sizefeature in embeddedMode.- create shadowNode for imageElement in case auto-size is true;
- triggering requestLayout in justShadowNodeSize method, and mark element layoutNode as dirty;
- invoke LynxUILayoutTick with closure, and take the closure as the trigger layout method in EmbeddedMode.
(cherry picked from commit 1abce1e0c5847f77a56494d6cefa80400c7c75e9)
-
[BugFix][Event] Fix the problem of catch interception failure. (da53e66) @rAY-ooo
description: When a catch-type event listener is set on the target node, the return result should be checked to prevent subsequent event propagation.
-
[BugFix] Report error when evaluateJavaScriptBytecode fails (5f0306b) @lybvinci
Currently, we only log it, but it should be reported.
(cherry picked from commit 04c4d4558340817eae6b6a54429e9a8d3bf8714e)
-
[BugFix] Add preload event reporting for iOS (6139638) @lybvinci
Used to assist in locating iOS JSC crash issues.
-
[BugFix][Event] Provides a client interface for tapSlop on Android. (cbc3c95) @rAY-ooo
🚀 Optimization
-
[Optimize][iOS][EmbeddedMode] refine LynxViewGroup (3f22ffc) @linxs0211
1.add onLynxEvent 2.refine LynxViewGroup
-
[Optimize][Android] Embed keyframe manager in ViewInfo for better animation handling (c1673fd) @zhongyr
- Move KeyframeManager ownership from LynxUI to ViewInfo
- Update animation handling in updateView() method
- Clean up keyframe manager reference during detach
(cherry picked from commit eae6f76f4262c44e6e69d33eedbae9229fa39a85)
-
[Optimize][iOS][EmbeddedMode][Part2] add ParseTemplateData for value_impl_darwin (ee66bcb) @linxs0211
1.add ParseTemplateData for value_impl_darwin 2.fix UT issue
-
[Optimize][Harmony] Support multi-ABI builds for Harmony (9549144) @rel-q
Updates the Harmony build script to generate binaries for both arm64-v8a and x86_64 architectures.
-
[Optimize] open js strip mode for eval (7904db4) @zys777
-
[Optimize][iOS][EmbeddedMode][Part3] introduce DefaultLogicExecutor () @linxs0211
🛠️ Infra
-
[Infra] Cache pnpm dependencies (03f498e) @coolkiid
Fix occasionally occurring network issue when installing pnpm dependencies.
other fix: set debugrouter deps attribute enable_lfs to false.
-
[Infra] Import some third party libraries and relative patch files. (80815e7) @zsy-jason
- Update the source of expat to flutter source, and add relative patch file;
- Import harfbuzz and gyp libraries, add relative patch files.
-
[Infra] Change the usage of the pip command (0d123bf) @deanjingshui
Change the usage of the pip command
[3.5.0-rc.0] - 2025-10-31
✨ Features
-
[Feature][iOS] Decoupling LynxService framework and Trail/Log service interface from Lynx framework (dfb1235) @ykai55
The frameworks like Lynx can now also use services without relying on the Lynx component after this refactoring.
(cherry picked from commit 81c91b151169609aee98f303c8ebb2afbf90c3d2)
-
[Feature] The LynxBase component uses ServiceAPI to manage Service implementations on the Android side. (f3ca22e) @yongjieTang
After the Service API was moved to a lower layer with independent dependency capabilities, in order to reduce maintenance costs and code redundancy, LynxBase now uses the Service API to manage Service injection and access.
(cherry picked from commit 5681e6fae467d95aba66d2e0e2894d418ecf9e42)
-
[Feature] LynxBase component uses ServiceAPI to manage Service implementations on the darwin side. (ab77a2c) @yongjieTang
After the Service API was moved to a lower layer with independent dependency capabilities, in order to reduce maintenance costs and code redundancy, LynxBase now uses the Service API to manage Service injection and access.
(cherry picked from commit ce7c94c5c996bbd747b2b0f8d72cf928a2835e55)
🐛 Bug Fixes
-
[BugFix][Event] Fix runWorklet not differ event and eventClosureListener (206fda5) @f0rdream
Currently, there're EventHandler and ClosureEventHandler to handle events, when they call
runWorklet, framework need to distingish these two, to wrap different object in it.(cherry picked from commit 45072d294f9d9bdd9ab7d3e249dab7df8f483d51)
-
[BugFix][Harmony] Refactor overflow clipping implementation in UIBase for Harmony platform (77ff43e) @rel-q
Updated
ApplyOverflowClipPathandApplyOverflowClipRectanglemethods to improve clip handling and overflow behavior(cherry picked from commit a1aa8a3e76ca3ede3cdb51a1328de2e6b0aef6c2)
-
[BugFix][Event] Modify the native-interaction-enabled validation logic. (2a9ee52) @rAY-ooo
description: Since HitTestMode.None only affects the node itself and cannot affect its child nodes, it is necessary to traverse the UI tree before touching so that native-interaction-enabled can affect its child nodes.
(cherry picked from commit 948823949dd849813e137e5b9c8cf04c63adf4e2)
-
[BugFix] fix embedded mode issues (1ab2c57) @nhsprite
Fix some embedded mode issues:
- in engine reuse cases, if data is not changed we need to make sure rebuildViewTree for each LynxView.
- in case lynxView is created without init, we need to protect the case that mKeyboardEvent is null.
🚀 Optimization
-
[Optimize][typings] Optimize list and list-item typings. (feb1704) @DwwWxx
-
[Optimize] Refactor gn for clay release (9faa5ff) @rel-q
Initialize clay build environment
(cherry picked from commit b493056c4d19db1ce1f6e9d7f45011b811f4a8e1)
-
[Optimize][Event] Add enableExposureWhenReload to support exposure during reload. (a84492f) @rAY-ooo
description: In the reload scenario, lynxview is reused, the element tree is updated after diff, and if the exposure node does not change, the exposure event will not be triggered. However, for the business, exposure may be required in this case, so we add the enableExposureWhenReload switch to control whether exposure is triggered in this scenario.
-
[Optimize][Clay] devtool use real dpi (3d0f4a5) @ci_lynx
1.devtool use real dpi
-
[Optimize][Android][Input]Ensure text inputs are focusable in touch mode (7484159) @MoonfaceX
Set isFocusableInTouchMode to true for both LynxUITextArea and LynxUIInput to handle cases where the default style may set it to false in application context
🛠️ Infra
-
[Infra] Export lynx base symbols on the Windows side. (fbcb7c0) @yongjieTang
When building Windows artifacts, it is also necessary to export the relevant public APIs to solve the issue of symbol not found during compilation.
(cherry picked from commit 3d0eb8b5663360711d2e846f31e0af558215aeac)
-
[Infra] Upgrade habitat version to 0.3.143 (5e24f17) @coolkiid
Improve habitat's Windows compatibility, and fix some known issues.
-
[Infra] Update habitat version to avoid network error when fetch external repositories (b4be5f7) @jianliang00
-
[Infra] Disable ios e2e task in ci pipeline (bbcfd85) @Kingatnuaa0528
Disable ios e2e task because the network success rate for Python dependency installation is too low.