3.4.2

lynx-family/lynx3.4.2Oct 9, 2025by Kingatnuaa0528

AI Summary

Bug-fix release focused on stability improvements with Android 16KB alignment support, Harmony template security verification during lazy loading, and numerous fixes for text processing, memory management, and rendering issues across platforms.

Key Highlights

  • Android SDK released with 16KB alignment support
  • Harmony lazy bundle loading with template security signature verification
  • Background layer drawing fix for proper border radius rendering using clip_path
  • Fix for text truncation splitting surrogate pairs (UTF-8 handling)
  • Use global font collection with configuration option
  • Prevention of use-after-free in ResponseHandlerProxy listener callbacks
  • Fix for UIFlush on LynxView detached
  • Global bind event handling when target is detached
  • LynxEngine setThreadStrategy parameter fix and engine reuse improvements
  • Timestamp acquisition accuracy fix for Android Timing

New Features

  • Harmony template lazy loading with security verification (security signature on template buffer)

Full Release Notes

# Changelog

## Summary
- Android SDK is released with support for 16KB alignment.
- Some bugfix have been made based on version 3.4.1.
---

### ✨ Features- [Feature][Harmony] Verify template when lazy bundle loading ([8983e00](https://github.com/lynx-family/lynx/commit/8983e0040154b5b8ce279e9ce4982cea691f5e0c))  @ci_lynx

	
	During the lazy bundle loading process on the Harmony platform, perform a security signature verification on the template buffer.
	
	(cherry picked from commit 67906a8b1e09b506b9579475671377224e5d625e)### 🐛 Bug Fixes- [BugFix][Harmony] Fix background layer drawing logic to properly handle border radius rendering ([569e2d4](https://github.com/lynx-family/lynx/commit/569e2d40535b6ec8c78554a8498ff3b0bb267a94))  @rel-q

	
	We use clip_path for clipping when border radius is present.- [BugFix][Android][EembeddedMode] Try fix index out of bounds exception. ([922f5b6](https://github.com/lynx-family/lynx/commit/922f5b6f65ad3df829ddcb38718337fb4c5cd5f4))  @Randycn

	
	Add reading for letter-spacing style on platform.
	Add decode error log.
	
	
	(cherry picked from commit c30be5361a041dce5343b2bc87bcf8984b9b8960)

- [BugFix] fix globalProps error with updateMetaData. ([349aea7](https://github.com/lynx-family/lynx/commit/349aea7e5d798995bbc0e3a6ad13ec157b874dcb))  @nhsprite

	
	In fiber now, we need to make sure to call kUpdateGlobalProps to trigger mts pipeline. It may be optimized later
	
	
	(cherry picked from commit ecfb9ba5f063b244ddcef723aaedcb43feddfd28)

- [BugFix][Harmony] Fix background layer drawing logic to properly handle border radius rendering ([9914374](https://github.com/lynx-family/lynx/commit/99143749c7f16b2d5cd2a00f1aa9cf659f1438c1))  @rel-q

	
	We use clip_path for clipping when border radius is present.
	
	

- [BugFix][Harmony] fix crash when text process truncation ([499df33](https://github.com/lynx-family/lynx/commit/499df33f9598798fcd6eb164f163379ce0f4cb78))  @ci_lynx

	
	text truncation may split surrogate pair. fix it by remove leading surrogate at the end of text.
	
	
	(cherry picked from commit 70e5ca5e12eecfacec094dbfb7cf9969e92d3a97)

- [BugFix] Using Copy-Constructor for Dump ElementBundle ([5a235c7](https://github.com/lynx-family/lynx/commit/5a235c7b1c1b98f30f1271482fa5ad2d4a612944))  @nhsprite

	
	When dumping ElementBundle, it's needed to using copy-constructor to avoid
	effect on current loading templateEntry instance. As the destructor of TemplateEntry
	will visit the member of current loading TemplateBundle
	
	
	(cherry picked from commit c809c05f3138a00e2a052f781eb3d2d8c82e734d)

- [BugFix][Android][Timing] Fix the issue of inaccurate timestamp acquisition. ([9196ebd](https://github.com/lynx-family/lynx/commit/9196ebdfa1cd7b2dd90a04b3541febf45c112a9c))  @ci_lynx

	
	This MR is to fix the issue of inaccurate timestamp acquisition.
	
	
	(cherry picked from commit 134188c06d529d0ea4dff399c8f3c6cf6b6ddba0)

- [BugFix][Android] Fix null exception when ILynxEventReporterService is missing. ([d506849](https://github.com/lynx-family/lynx/commit/d5068495733794168099c4b1a38261064b6fcb19))  @ci_lynx

	
	This MR is to fix null exception when ILynxEventReporterService is missing.
	
	
	(cherry picked from commit 712abc8443612dc0391799ab085a8f1c1bdc257b)

- [BugFix][Frame] Call UIOp flush after SetFrameAppBundle ([372f462](https://github.com/lynx-family/lynx/commit/372f4626c1d1b4ff2d81fe47d864a01568e09b09))  @ci_lynx

	
	After the frame's bundle is fetched and `SetFrameAppBundle` is called, it only enqueues a UI operation. `painting_context()->Flush()` must be called to trigger the queue flush; otherwise, the frame will fail to load and display.
	
	(cherry picked from commit 4d2b96e7ca05565cf3e5b6d8975af96eba8adeb2)

- [BugFix] use global font collection ([a451594](https://github.com/lynx-family/lynx/commit/a4515946b7e5da451a7b8e8483a7e7ee804277e9))  @linxs0211

	
	1.use global font collection
	2.add a settings to config
	
	
	
	
	
	(cherry picked from commit 62eeefbaeef664d84ee024f2dd16c7aaa6ee1aa0)

- [BugFix] Prevent use-after-free in ResponseHandlerProxy listener callbacks ([a6542aa](https://github.com/lynx-family/lynx/commit/a6542aa46022d4b4fc6a7746de532f68422f6402))  @nhsprite

	
	Fix race condition where ResponseHandlerProxy listener callbacks could be
	invoked after the proxy object has been released. This was causing crashes
	in corner cases where the callback outlived the proxy.
	
	Changes:
	- Make ResponseHandlerProxy inherit from std::enable_shared_from_this
	- Use weak_ptr in AddResourceListener callback to safely check if proxy
	  still exists before invoking delegate callbacks
	- Prevent callback execution if proxy has been destroyed
	
	
	
	
	(cherry picked from commit ca1c690070cda196807c4ebbc6a878220af14f08)

- [BugFix] Fix the UIFlush on lynxView detached. ([ebdf942](https://github.com/lynx-family/lynx/commit/ebdf942586a2f73d15f934d53d05ff09fc001f6d))  @Yellow5A5

	
	It is unexpected to insert UIOp when LynxView is created, which will cause the ContextFree scenario to throw a Flush task to the main thread. This issue is fixed by using a flag for judgment.
	
	
	(cherry picked from commit 72d923d4e15290759ebbd7eeb300ba4ffd75d05c)

- [BugFix][Event] Fix send global bind event when current target is detached ([2c6bb23](https://github.com/lynx-family/lynx/commit/2c6bb231e104c6792d3625569eae1af555942086))  @AdrianLCA

	
	Fix send global bind event when current target is detached
	
	
	
	

- [BugFix] Fix dump element not set in PipelineOption ([7d377fa](https://github.com/lynx-family/lynx/commit/7d377fa359d329d52aac242cc56a6a17a75400dd))  @usczz

	
	In the previous merge request, the update of PipelineOption using load options was refactored into ProcessLoadTemplateTimingOption. However, the dump element option was not set, resulting in the template bundle with a reusable element tree not being generated.
	
	This merge request fixes the issue by properly setting the enable_dump_element_tree option.
	
	
	
	(cherry picked from commit 0bb94e09fe322aadd27cee91a8e0d30dc6ee5a06)

- [BugFix][Android] LynxEngine setThreadStrategy is ineffective as the input parameter is not used. ([4bd11a4](https://github.com/lynx-family/lynx/commit/4bd11a4a84e6efb6d076710f9eaf40607182164e))  @Yellow5A5

	
	1. Fix the trivial bug where LynxEngine setThreadStrategy is ineffective due to not using the input parameter.
	2. When the FallbackNewEngine behavior occurs during Engine reuse, mTemplateData should be loaded instead of incremental data.
	3. Add Trace information for the LynxViewConfigProcessor.
	
	

- [BugFix] fix prepainting issue with volatile mBodyView ([1117ec4](https://github.com/lynx-family/lynx/commit/1117ec4d9cdb370e374f6257bf5fda539546d60c))  @nhsprite

	
	In prepainting mode, we need to mark bodyView with ShouleInterceptRequestLayout on,
	we access uiBodyView by lynxContext before, it's dangerouse as uiBodyView in lynxContext
	may change while engine reuse, we should access uiBodyView directly by templateRender.
	
	
	
	
	(cherry picked from commit f1283cfadfa19096442ee9f2cce65413e5e04815)

- [BugFix][List] Fix not found hittest target in sticky item ([07094de](https://github.com/lynx-family/lynx/commit/07094de2e49c89dbc8296c82dc83f6c0a740f655))  @DwwWxx

	
	If set updateStickyForDiff to true, we should enumerate stickyTopListItemDict and stickyBottomListItemDict to find hit test target.
	
	
	
	(cherry picked from commit d67bd4c8a4bc078054d639b2dca14aed10cebc7b)

- [BugFix] fix reuse engien with onPageStart ([45d2765](https://github.com/lynx-family/lynx/commit/45d2765935827539e21e36c69ef9e5d1a7c123f2))  @nhsprite

	
	In engineReuse case, onPageStart is missed. we need to call `dispatchOnPageStart` when tryRenderByReuseLynxRender
	
	NoLanding: release/3.4
	
	(cherry picked from commit 670a98d1c781dbaa04d29f1cd7397f69a3fb1832)

- [BugFix] Use appropriate response handlers for image src vs placeholder loading ([16e02a7](https://github.com/lynx-family/lynx/commit/16e02a7d8f1ccb8cf2d2c00ecaa06798516c8c16))  @rel-q

	
	Fix the image loading logic in UIFlattenImage and UIImage classes
	to use different response handlers based on whether loading the main image source
	or a placeholder image
	
	
	(cherry picked from commit af5cf2638978e4cb09a43be9f4e0b4d0500b610a)

- [BugFix] correct state validation in loadTemplate and hydrate calls ([f0c39fe](https://github.com/lynx-family/lynx/commit/f0c39fe87aaf4fb1804fe8af36f7422a2c373012))  @lidadating

	
	- Fix state validation when users call loadTemplate to prevent improper states.
	- Prevent missing reset calls on repeated hydrate interface invocations, ensuring consistent state handling.
	
	
	(cherry picked from commit 91c688b2d161ed1b3605d94f95d36bdfefe2d978)

- [BugFix] RequestFlushUIOperation in ElementManager::RequestLayout when embedded mdoe on ([08dbeba](https://github.com/lynx-family/lynx/commit/08dbeba3294f7b1e18ceac22ca28a1eaf0be4093))  @ci_lynx

	
	In embedded mode, `ElementManager::RequestLayout` directly calls `TemplateAssembler::OnLayoutAfter`. Inside `OnLayoutAfter`, the current context is cleared, which causes a null pointer exception when `GetCurrentPipelineContext()->RequestFlushUIOperation` is executed after `ElementManager::RequestLayout` finishes.
	
	As a solution, we moved `RequestFlushUIOperation` into `ElementManager::RequestLayout` to fix the issue where it was being called after the current context was cleared.
	
	[internal]
	[end-internal]
	
	(cherry picked from commit 93f7e8300a7cbc4798c5f213ae305129270930bf)

- [BugFix][DevTool] Fix missing devtool resources in HarmonyOS lynx_devtool HAR ([6889154](https://github.com/lynx-family/lynx/commit/68891546ba50179cd94c288dea90b0a7abb0bada))  @yuweizheng

	
	Fix the issue where the HarmonyOS devtool HAR package lacks devtool resources, causing redbox white screen problems in the host.
	
	
	(cherry picked from commit 21286f0013ff5c1375fbda427a6f3eb1795f0778)

- [BugFix][Event] Fix the abnormal parameter issue of multi-finger event. ([3878936](https://github.com/lynx-family/lynx/commit/38789366ae7374e4f1b3ea3ddec4e5ec81d43672))  @rAY-ooo

	
	description: The parameter touches of the multi-finger event touchend will have an extra empty array element.
	
	
	
	(cherry picked from commit 8c54b5bf71e56ab3fecebdcc135bd5f0bd2f561e)

- [BugFix][Harmony] Handle numeric values directly in UpdateCapInsetScale ([97f1dcf](https://github.com/lynx-family/lynx/commit/97f1dcf7f2390b2e4b9b04f4cdcdbdef8e3e5a0c))  @rel-q

	
	Ensure that `cap-insets-scale` can accept both numeric and string input types safely.
	
	
	(cherry picked from commit 984bb7c29270efc87b017e261d49add9a718d1e1)

- [BugFix] Improve logging format and add NaN validation in TemplateAssembler ([6e1adc2](https://github.com/lynx-family/lynx/commit/6e1adc2ad9698139bbe292f4669d8aacc7b8dcae))  @rel-q

	
	Add NaN validation for width and height values in `OnScreenMetricsSet` method
	
	
	(cherry picked from commit 919e8075a736c8d6db62bf6bba5fdbf4fcc967a5)

- [BugFix] reset current pipeline context while runPixelPipeline ends in async layout ([8f4edec](https://github.com/lynx-family/lynx/commit/8f4edec597eb05a0dff244460aeb5a332e63fc9d))  @nhsprite

	
	In sync layout, requestLayout will eventually trigger onLayoutAfter to reset current_pipeline_context to nullptr.
	In async layout cases, onLayoutAfter will be triggered asynchronous so we need to reset current_pipeline_context here.
	
	
	(cherry picked from commit 5575eb789126f667a871c1b764959a2c15884ff3)

- [BugFix] fix  memory leak ([8edec98](https://github.com/lynx-family/lynx/commit/8edec98452dc363170b1537eed50a96a789b9f36))  @ci_lynx
- [BugFix] set is_runtime_destroyed_ true when JSVMRuntime destruct ([b69ede8](https://github.com/lynx-family/lynx/commit/b69ede80502fcc4323d865d66716b341e95699a2))  @ci_lynx

	
	Set `is_runtime_destroyed_` true when JSVMRuntime destruct.
	
	(cherry picked from commit b8e1e539b01cd27c5ebc854c0cc62628964b4566)

- [BugFix][TextMeasure] process fontScale for textElement ([1ac5139](https://github.com/lynx-family/lynx/commit/1ac51397e6498f9bb6d2d1f57a4150ed2da45a46))  @linxs0211

	
	 we should process fontScale
	
	
	
	

- [BugFix][Event] Fix the issue of abnormal parameters when multiple nodes listen to touchend events. ([fd02625](https://github.com/lynx-family/lynx/commit/fd02625339dc845b84b63bb1ec3a6c358b04f786))  @rAY-ooo

	
	description: In multi-finger mode, when multiple nodes listen to the touchend event, the elements in touches will be deleted multiple times, causing the touches parameter of the touchend event of other nodes to be empty. Therefore, we use a flag bit need_erase_touches_ to ensure that the elements in touches are deleted correctly.
	
	
	NoLanding: develop
	
	(cherry picked from commit f8ee4e035b30be5992edb5dd9676a43115b607f3)

- [BugFix][Harmony] Lazy bundle should use template fetcher ([a981a9b](https://github.com/lynx-family/lynx/commit/a981a9b1ecb439429824f61fdd2c44e8fd01cff0))  @ci_lynx

	
	When load lazy bundle in HarmonyOS, it should use template fetcher to fetch the template js file, not generic fetcher.
	
	(cherry picked from commit ace536afa9234d936c734fd17b11195e98b75e6f)

- [BugFix] Only report info when layout_triggered is true in unified pipeline ([46679e0](https://github.com/lynx-family/lynx/commit/46679e0890395ba0a5a77abba8e9bad4f3757c1a))  @ci_lynx

	
	1. RunPixelPipeline can be executed in many scenarios, and multiple modules will collect and report information before it finishes. In reality, we only need to report cases from RunPixelPipeline where a layout change has actually occurred.
	
	(cherry picked from commit 2f8aaeb0037abc2c5472eb629dfe2173b840c3fc)

- [BugFix][Crash] fix the crash when stacking_context state changed ([bb8bbc3](https://github.com/lynx-family/lynx/commit/bb8bbc37ed9cae083dd74bbd7f2177cf5bf175f2))  @linxs0211

	
	If a node has animation-delay or transition, its computed_css_style updates immediately, which affects the IsStackingContextNode() check. However, was_stacking_context_ is set only when the node is created. Later node deletions can cause DirtyContext to remain undeleted.
	
	
	
	

- [BugFix][List] c++ list view force uses LTR layout direction. ([b8b61cc](https://github.com/lynx-family/lynx/commit/b8b61cc1651f7a3d6d1f0c21ea52b39b468014db))  @DwwWxx

	
	In the scrollview nested list case, scrollview will be set the layout direction to RTL, so the ListContainerView will inheriting the RTL layout from its parent view. But the RTL layout of the list is implemented on the C++ side, so the ListContainerView view needs to enforce an LTR layout.
	
	
	

- [BugFix] fix mViewTreeObserver is not alive ([86ecd5d](https://github.com/lynx-family/lynx/commit/86ecd5d2251d348dc0940d3578bf446332fb1179))  @ci_lynx

	
	(cherry picked from commit 527693d88e8f640dce9c8f5a82cd83ba43e7f6f3)

- [BugFix][List][Harmony] Clamp offset to scroll range when calculating item snap's position. ([5cb1425](https://github.com/lynx-family/lynx/commit/5cb1425c6869cbc0011f473c0489466603f30444))  @DwwWxx

	
	In this commit, we will use list's size and content's size to calcuate scroll range convert it from pixel to vp, which is consitent with Harmony scroll component, and clamp scroll offset to scroll range to make sure that we never paas a litte bit larger value to Harmony scroll component to prevent receiving the ON_SCROLL event.
	
	
	NoLanding: develop,release/3.4
	
	
	(cherry picked from commit 52d46d7fde8b67438680b3655a1f03c5a5c2de0b)

- [BugFix][Android][Svg] fix the load of res:/// type ([2a476d9](https://github.com/lynx-family/lynx/commit/2a476d97535e3026a618eb6034942f118565ea76))  @linxs0211

	
	fix the loading error for res:/// type svg
	
	
	
	
	(cherry picked from commit 402f857b06b285074e893ddfde20383a2a529dd3)

- [BugFix][Event] Fix the issue where NewGesture failed. ([ff23b56](https://github.com/lynx-family/lynx/commit/ff23b5607b9bde3a607bd9575f9616e466843de0))  @rAY-ooo

	
	description: The default value of enableMultiTouch of harmony is also unified to false, so NewGesture needs to be adapted accordingly.
	
	
	(cherry picked from commit f5db0de907d47783e3774ce5b93279fc9bb259d4)

- [BugFix][Harmony] Refactor global event handling and add runtime proxy null checks ([a6165a2](https://github.com/lynx-family/lynx/commit/a6165a24acf2328b22b42d8a9a4988f463d106fd))  @rel-q

	
	Move sendGlobalEvent implementation to LynxView and add null pointer checks for runtime proxy in template renderer callbacks
	
	
	(cherry picked from commit d1b300955a0e6e624465df148d757fb60b92d5b7)

- [BugFix] Copy while iterating over NSArray and NSDictionary to avoid multi-threaded crash ([4e6166f](https://github.com/lynx-family/lynx/commit/4e6166f746c60c0922f21714e3bd83728f6e7c99))  @FrendyChen

	
	In scenarios where users are using Modules, after passing parameters, users might still modify these parameters. Once these parameters are passed to LynxSDK, they will be consumed in the JS thread. If the thread modifying the parameters is not the JS thread, a crash may occur.
	
	
	(cherry picked from commit 56fe5d800ccb9135dee5974fabd9d1b1fd329a41)

- [BugFix][Radon-Fiber] Force open FIX_FIBER_REMOVE_TWICE_BUG logic for radon-fiber arch. ([44a671f](https://github.com/lynx-family/lynx/commit/44a671fbf1b9074a81462d67cd081e6ebf36e6b7))  @DragonDragonDDD

	
	Force open FIX_FIBER_REMOVE_TWICE_BUG logic for radon-fiber arch.
	
	
	
	
	(cherry picked from commit 00077e15a42068b3512ac672065ec07383456689)

- [BugFix][Test] Fix android unit test with a11y ([55f817a](https://github.com/lynx-family/lynx/commit/55f817ab849eb923efe6d60d3df44bc7c155d00a))  @DwwWxx

	
	Let LynxAccessibilityWrapper#isSystemAccessibilityEnable() return true in unit test env because we enable lazy init a11y by default.
	
	
	
	(cherry picked from commit 1276d341d634852415c7c46ac4cf022ed9b4a138)

- [BugFix][Harmony] Fix velocity gesture intercept when enable new gesture ([abac0e3](https://github.com/lynx-family/lynx/commit/abac0e371e5c5c474b1364378ed4b45536102695))  @AdrianLCA

	
	Fix velocity gesture intercept when enable new gesture
	
	
	
	
	(cherry picked from commit 5f942237d0780e1ed726a3ffeda00d7fb66b2086)

- [BugFix][Animator] fix the animation flush bug ([c70263d](https://github.com/lynx-family/lynx/commit/c70263d90f06e98821e0548a052131f10bf314a4))  @linxs0211

	
	fix the animator not flush issue, sometimes the animator only has render
	style, and element has prop_bundle_.
	
	
	
	

- [BugFix] fix the issue of buildtools path incorrect in prepare_android_build.py ([0a7f59f](https://github.com/lynx-family/lynx/commit/0a7f59f1298fa9706b5c369175693bc6dceeabb2))  @yongjieTang

	
	An incorrect buildtools path prevented subsequent SDK installation. This patch corrects the path, resolving the build failure.
	
	

- [BugFix][Event] Fix the issue of :active failing in Fiber architecture. ([66623b0](https://github.com/lynx-family/lynx/commit/66623b01d70fbb15bc8a64920992f0f7b2856ff9))  @rAY-ooo

	
	description: If enableCSSInvalidation is not enabled, you should also need to handle :active.
	
	
	
	(cherry picked from commit 25b8bda936ca6af758badd12210e76ca3600ef69)

- [BugFix] Fix incorrect Trace location in MessageLoop::FlushVSyncAlignedTasks ([280c3cd](https://github.com/lynx-family/lynx/commit/280c3cd06fa42355a1cee7d7acaaa6c1ad66f03e))  @KingAlen

	
	MessageLoop::FlushVSyncAlignedTasks is only executed when Vsync is enabled, and it is mutually exclusive with MessageLoop::FlushTasks.
	However, in the FlushTasksWithRestrictionDuration method, both FlushVSyncAlignedTasks and FlushTasks are executed.
	
	

- [BugFix][LynxRecorder] Fix potential data race issues ([0339c90](https://github.com/lynx-family/lynx/commit/0339c9079ab05a3c1e19f44aabf8233dcab5285d))  @ZhaoSongGOO

	
	In rapidjson, data on the same document must come from the same memory allocator.
	During the recording phase in LynxRecorder, the allocator for replay_config_map_
	comes from another thread, and it is not reallocated during the final merge, which
	may lead to exceptions. Fixing this issue here.

- [BugFix][Harmony] clear pending exception after JSVM call failed ([56582a1](https://github.com/lynx-family/lynx/commit/56582a1a4e45ccfe26d16f7a3007e5bd2ca63a9a))  @ci_lynx

	
	When a pending exception exists in HarmonyOS JSVM, subsequent calls will fail. We need to manually clear the exception and print relevant error logs whenever a JSVM call fails.
	
	(cherry picked from commit 0349af26dd1f1a67905b8a524c73d34cfdd83502)### 🚀 Optimization

- [Optimize] Add main thread VSync interface ([136ea99](https://github.com/lynx-family/lynx/commit/136ea99c6edcbc290c75f8ce1259b6afb7dcd7b9))  @ci_lynx

	
	Need `RequestVSyncOnUIThread` without any parameters.
	
	
	(cherry picked from commit 4a8cb0d2fbd0b59efcae31859709fa79fa9f8799)

- [Optimize] remove redundant TrigMemInfoEvent ([37cee3e](https://github.com/lynx-family/lynx/commit/37cee3e3e6a6ffe7ecc04c7e9c3f47e520e4b195))  @zys777

	
	
	(cherry picked from commit 6504420f750113d6405b2a07b7df135d54169aed)

- [Optimize][Trace] Use flowId to link update data calls with corresponding paintEnd trace events ([29b8db6](https://github.com/lynx-family/lynx/commit/29b8db63d0247c36487f1b9966daecca342ba1c2))  @KingAlen

	
	Currently, identifying the update data associated with each paintEnd event is not straightforward. Introducing flowId to establish this link simplifies tracking and improves event correlation.
	
	

- [Optimize][Harmony] Improve display info management ([d047ada](https://github.com/lynx-family/lynx/commit/d047ada712ab0fbc0088537f06349c0ce5a49dd7))  @rel-q

	
	1.Update LynxTemplateRenderer to use local DisplayInfo copy and track screen metric changes more efficiently
	2.Optimize updateScreenMetrics to only update when dimensions actually change
	
	

- [Optimize][Harmony] Support enable jsvm from LynxView ([c961e3b](https://github.com/lynx-family/lynx/commit/c961e3b3abe10134af87e2c6cd92603eeae03cda))  @ci_lynx

	
	1. Support enableHarmonyJSVM from LynxView.
	2. Refactor the minimum Harmony version check for JSVM.
	
	(cherry picked from commit df62cc91cf44de3df0fcf5db2e333d10ad33a41a)

- [Optimize][iOS][Input]Set line break mode for input paragraph style in init ([da96d3d](https://github.com/lynx-family/lynx/commit/da96d3df3f1becdbaa6aad20f5fd2053515554b6))  @ci_lynx

	
	Initialize inputParagraphStyle with proper line break mode to prevent unexpected text truncation
	
	
	(cherry picked from commit 5e557938f9dd441be3c2fe42c6242b622c511ab7)

- [Optimize][Harmony] Support image decoding of Harmony loacl image resources ([19f23b7](https://github.com/lynx-family/lynx/commit/19f23b7b4fdfd470b0c2b77e5feca8b097f14c03))  @liubb0516

	
	Support decoding of image resources under the rawfile and base path in Harmony
	
	m-6743561349
	
	(cherry picked from commit 2b395ba4c0933aa17b5ec6811d9c1cebc9851b30)

- [Optimize][Binding] Refine handling of optional arguments ([a6e2bc3](https://github.com/lynx-family/lynx/commit/a6e2bc375a32ce6e74c270aa44b25f279edb285e))  @ci_lynx

	
	Previously:
	
	- Argument length includes `undefined`, which does not conform to standard.
	- Default values handling relies on impl side, which not only adds burden to
	  implementers, but the overload resolving can be simply wrong.
	
	This CL:
	- Calculates argument length according to [spec](https://webidl.spec.whatwg.org/\#js-overloads),
	  i.e. excluding tailing `undefined`s
	- Handles IDL default values in the binding layer, BEFORE resolution to impls.
	
	
	(cherry picked from commit e885b3374752faebf4fc635b6abd074c7b0ab060)

- [Optimize] Use flowId to link `FiberFlushElementTree` with corresponding `paintEnd` trace events ([bab4e19](https://github.com/lynx-family/lynx/commit/bab4e1913e9c743ee17b4e3a14a802bb16e95d40))  @KingAlen

	
	Currently, identifying the update data associated with each paintEnd event is not straightforward. Introducing flowId to establish this link simplifies tracking and improves event correlation.
	
	
	(cherry picked from commit 2cf1dd75c98d8675eb26aa4384b88850bf28bf59)

- [Optimize] [List]  the 'list-container' adapts to custom list ([54194d9](https://github.com/lynx-family/lynx/commit/54194d9c5e84c64a19a78878aa4039b5ddf64ad1))  @keweibing

	
	1. expose the scroll event interface
	2. expose the insertListItem interface
	3. fix the issue of inaccurate snap offset units
	4. fix the unexpected scrolling behavior when clicking on the last item
	
	

- [Optimize][Trace] Optimize tracing for NativeModule invocations ([1e0cd1b](https://github.com/lynx-family/lynx/commit/1e0cd1baec1102544fd231186d3eb686ee65d47c))  @KingAlen

	
	Summary of the change:
	- Remove the Trace events related to NativeModule timing
	- Rename traces for clarity:
	  * 'InvokeNativeModule' → 'NativeModule::Invoke'
	  * 'JSBTiming::jsb_callback_thread_switch_start' → 'NativeModule::PlatformCallbackStart'
	  * 'fire' → 'CallPlatformImplementation'
	- Add flowId to link the invocation chain of:
	  NativeModule::Invoke → NativeModule::PlatformCallbackStart → NativeModule::Callback
	- Modify the e2e script logic to include a check for the trace execution thread.
	
	

- [Optimize][A11y] Default lazy initialize accessibility for lynx view. ([f09f130](https://github.com/lynx-family/lynx/commit/f09f130d6aa3906042f749d3f78b2995f4219bed))  @DwwWxx

	
	By default, we only construct a11y state helper to monitor system a11y state and create a11y delegate for lynx view when system a11y is enabled.
	
	In this commit, we also add settings to control this behaivor.
	
	
	NoLanding: develop
	
	AutoLanding: develop

- [Optimize] Fix deadlock when reading settings during service initialization ([3c0f652](https://github.com/lynx-family/lynx/commit/3c0f652d46f5d7b4894fdce30fc0dd96500c39b1))  @ci_lynx

	
	Make the lock granularity smaller when reading and writing to the map.
	
	
	(cherry picked from commit 812bfad623b215a3d9af46a001d91300ff47a91c)

- [Optimize] skip memory stats for base64 images to reduce overhead. ([bc96a9b](https://github.com/lynx-family/lynx/commit/bc96a9bfa3a9afbff89890834644f0cf8421eb2e))  @ci_lynx

	
	This MR is to skip memory stats for base64 images to reduce overhead.
	
	Avoid detailed memory statistics for base64-encoded images to prevent excessive memory and CPU usage caused by processing large URLs. This change applies to both iOS and Android implementations.
	
	
	(cherry picked from commit c5389de2bd5502a4ca4d2ad6cb38aea17a38b1df)

- [Optimize] Avoid multiple acquisitions of LynxUI memory within the delay window. ([d3ba942](https://github.com/lynx-family/lynx/commit/d3ba94264399af30c1a810788836c797a29d19c3))  @ci_lynx

	
	This MR is to avoid multiple acquisitions of LynxUI memory within the delay window..
	
	

- [Optimize] Prevent nested Element memory collection triggers. ([0f9bacb](https://github.com/lynx-family/lynx/commit/0f9bacb891fb31ba9555067ccf7a88462fd0918f))  @ci_lynx

	
	This MR is to prevent nested Element memory collection triggers.
	
	Add is_memory_collecting_ flag to avoid duplicate memory reporting when OnPatchFinish is called nestedly. This ensures memory collection only happens once at the outermost call.
	
	
	(cherry picked from commit 369341a900f723617f6d2582519c6a2776c2c913)

- [Optimize] support loadTemplate with bytebuffer ([907c113](https://github.com/lynx-family/lynx/commit/907c113f875705433163926d73fb04afe9604a7b))  @nhsprite

	
	As described, we wants to support loadTemplate with directByteBuffer directly, we that it's easy to optimize the `Load & Parse` period of Lynx Pipeline.
	Using native buffer is known to be faster and better compatibility with non-blocking IO.
	
	
	
	
	(cherry picked from commit dfa73811d79334cfcb805564fb1b0cd944605911)

- [Optimize] Add `pipeline_ids` for Android platform onMeasure, onLayout, and onDraw ([49a51f6](https://github.com/lynx-family/lynx/commit/49a51f6a722cbdf401acf142442ae904aed4a034))  @KingAlen

	
	The `onMeasure`, `onLayout`, and `onDraw` methods on Android are key steps in the rendering pipeline. After introducing `pipeline_ids` for `LynxView.onMeasure`, we can link these steps using the same `flowId`. This enables easier tracking and correlation of events on the trace web page.
	
	### 🛠️ Infra

- [Infra] Support 16KB page size configuration. ([ae2f27e](https://github.com/lynx-family/lynx/commit/ae2f27eb1701be5ba0c6dc6b604756ac5be5e525))  @zsy-jason

	
	Add 16kb_page config to support 16KB page size configuration.
	
	
	
	(cherry picked from commit e9840d557f8b6f64ae2c568eebc4a4ea40bc8c70)