Releases: lynx-family/lynx
3.4.0-rc.0
This is an RC version, built based on the develop branch. It can be used to experience the latest features in advance.
3.3.1
Some bugfixes have been made for version 3.3.0.
💡 Features
-
[Feature] Support
skip-redirection
andMediaResourceFetcher
for local image resource (59c6436) @liubb0516support
skip-redirection
andMediaResourceFetcher
for local image resource(cherry picked from commit 87e5cc2f677e874bb34ec65bdc21ca5d26960912)
🐛 Bug Fixes
-
[BugFix][DevTool] add safeguard checks in RunDevToolFunction to prevent false error logs (36c7039) @yuweizheng
add safeguard checks in RunDevToolFunction to prevent false error logs
(cherry picked from commit 3ff8064f87f39b20832d45bc14cf45e1f5299dfb)
-
[BugFix] make reloadTemplate with safety globalProps (59bafd7) @nhsprite
reloadTemplate with globalProps now passing raw globalProps, it's unsafe to pass globalProps to tasm thread, we need to make a deepClone to lepusValue to make thread safe.
(cherry picked from commit 35d69990d39c2d9e7fa65bb5673613cebc538931)
-
[BugFix] Fix OOM caused by too many CallbackImpl instances (00300da) @OverWatch-Winder
When calling JSB with callback frequently, if the callback is not called back, the Java CallbackImpl instance cached in the Native layer will not be destroyed, resulting in OOM
(cherry picked from commit 32b327cbe06c9d0adaa56c55b0910496bc4cb171)
-
[BugFix] fix nested query component. (a0036d4) @nhsprite
Nested calling query component may cause crash now, it's caused by modifing
url_to_lifecycle_option_map_
while loopingurl_to_lifecycle_option_map_
, eg: callingqueryComponent
in callback ofqueryComponent
.
It's reasonable to useextract
to accquire lifecycleOption list fromurl_to_lifecycle_option_map_
first, and then callOnLazyBundleLifecycleEnd
for each option.QueryComponent
called inOnLazyBundleLifecycleEnd
will just return because templateEntry is cached now.TODO: adding test cases for nested query component cases.
(cherry picked from commit 87e82d787a788314025c98835944662e4f58055f)
-
[BugFix] enable FIX_FIBER_REMOVE_TWICE_BUG only in RadonArch. (0f08a2c) @DragonDragonDDD
As title described.
(cherry picked from commit f331e642f704a003bff529f4d48c0bc282878ba6)
-
[BugFix][Fiber] Fix the issue that CSSVariable changes on parent nodes did not affect child nodes in RadonToFiber (a5ab4d8) @ci_lynx
When RadonDiff, RadonNode only copies the
css_variable_
part of the CSSVariableBundle and does not copy thecss_variable_related_
part, So when css-var parent node changed, related css in child node won't be affected. -
[BugFix][Android][Event] Fixed the issue that the keyboard cannot be retracted when touching other areas when input becomes the first focusedUI through uimethod. (be15d06) @rAY-ooo
description: In the lazy loading scenario of TouchEventDispatcher, the input will setFocusedUI when the focus changes, but the TouchEventDispatcher may not have been created at this time, which makes the setting invalid, and then the input focus cannot be transferred and the keyboard cannot be retracted.
(cherry picked from commit abbff3d3390266d78cee8131a63c4254cb56b58b)
-
[BugFix][Element] Fix page element not record when AttachToElementManager causing white screen (e2cf9a7) @usczz
In the current implementation, the reused element bundle is deeply cloned and attached to the target ElementManager by TreeResolver. TreeResolver first sets the root element as its current page, which removes the old page from the internal NodeManager. Then, FiberElement's AttachToElementManager is called recursively for each element in the tree. PageElement overrides this behavior by first calling the base class's AttachToElementManager, which records its element ID in the NodeManager. After that, it calls SetFiberPageElement to set itself as the root and removes its element ID from the internal NodeManager, causing the PageElement entry to be deleted. This removal can lead to incorrect layout results when using UNSPECIFIED or AT_MOST measure specs, as these require looking up the corresponding element in the NodeManager during layout propagation.
In this merge request, SetFiberPageElement will be called only in PageElement’s overridden AttachToElementManager method and will be invoked before the base class’s AttachToElementManager to ensure that the page element's entry remains in the NodeManager. Additionally, a DCHECK is added in layout_mediator's OnLayoutUpdate to verify that no element entries are missing from the NodeManager during layout result propagation.
(cherry picked from commit 02c0b7163958e412a7d1481e392b702a17eb2129)
-
[BugFix][DevTool] Eliminate unnecessary inspector initialization in Non-LepusNG context. (d59de54) @Dango-2021
(cherry picked from commit a64614521d567f30557e6b036127d7ee4456502d)
-
[BugFix] Remove JSVM deps for openssl symbol error (64d4066) @ci_lynx
Remove JSVM deps for openssl symbol error.
-
[BugFix] Add NPE protection for DisplayMetricsHolder (daa29fb) @ChrisChan0668
In some special ROMs, WindowManager.getDefaultDisplay() may return a null object, so we need to check before use.
(cherry picked from commit 2c429e81e3dd74e655957df9b181b4da3db126e4)
-
[BugFix] Fix the JS error when Callback is undefine in JSB (90c62f5) @OverWatch-Winder
Callback in JSB can be undefined, and JS errors should not be reported
(cherry picked from commit 5fa9bde167f4fa61d1a95c08fc941434dd9f3e01)
-
[BugFix][ZIndex] fix the negative zIndex insertion issue (d44db20) @linxs0211
The element container has a should_skip_index_calculation logic that skips index calculation if there are no zIndex children and insertion is at the end (ref=null). However, it doesn't account for negative_z_children_, causing incorrect index calculation. It's updated so that if any zIndex exists, index calculation is forced.
-
[BugFix][Element] Fix shorthand CSS Property with CSS Variable value is reset in threaded element resolution (83a599b) @usczz
In the current implementation, during threaded element resolution, CSS Variable resolution is postponed as an engine thread task. However, when handling shorthand CSS properties, the actual values are not resolved, leaving only their keys in the parsed_style_map. Later, in the engine thread task that refreshes the CSS styles, the shorthand properties are expanded into longhand properties. During the diffing process between the previous and current style maps, shorthand properties are mistakenly included in the list of properties that require resetting.
In this merge request, shorthand properties are excluded from the construction of reset_style_ids when comparing the previous parsed style with the new parsed style, preventing them from being reset unintentionally.
(cherry picked from commit 3802d45420e6a90d13b4cbd62947d5247552c2ee)
-
[BugFix][DevTool][iOS] Fix the issue where DevToolViewControllerLifeListener was added to the incorrect VC when destroying LynxView. (520ea43) @Dango-2021
Add DevToolViewControllerLifeListener to the top VC while skipping UITabBarController and UINavigationController.
(cherry picked from commit 443003ed738a8a3c87a23a79578aa94812bb6dd4)
-
[BugFix][Trace] Fix crashes that occurred during element tree dumping in multithreaded environments. (c127272) @ci_lynx
1.Deep clone
lepus::Value
objects when transferring data between threads to prevent JavaScript garbage collection issues.
2. Passinstance_id
instead ofthis
to avoid crashes when the catalyzer instance is destroyed. -
[BugFix][List] Fix list-item rtl layout error on Android platform. (bfc2247) @DwwWxx
Because on the Android platform, we has one LinearLayout between ListContainerView and ListItemView and the layout position of ListItemView is relative to ListContainerView but ListItemView is added to LinearLayout, so in this commit, we ensure that the height of the LinearLayout is at least the size of the ListContainerView itself.
(cherry picked from commit aa226d9aaf27642576b386f793e407b8ac26cba6)
3.3.0
Changelog
🚀 Features
-
[Feature] [Frame] add new Element API: __createFrame (8201f97) @Awuiil
add new Element API to create FrameElement
TODO: createFrameUI -
[Feature] Add CSS properties for linear layouts. (3372f6f) @BenjaminCatalfo
Summary of changes:
Consider the following code<view style={{ display: "linear", linearDirection: "row", linearWeight: 1, }} > </view>
Before my change Typescript would complain that linearDirection and linearWeight aren't CSSProperties. Now not only Typescript does not complain but we get full IntelliSense support providing a superior developer experience!
-
[Feature] [iOS] [Frame] add LynxUIFrame and LynxFrameView (c9ba416) @Awuiil
To render frame
-
[Feature][Refactor][Android] Refactor LynxModuleAndroid implementation (4e69ea2) @OverWatch-Winder
- Make LynxModuleAndroid inherit LynxNativeModule and use PubValue as the transfer type.
- Reimplement MethodInvoker, which only acts as a C++ proxy for interacting with Android Module Method.Remove Callback & Promise processing logic in Method Invoker.
- Reimplement LynxModuleAndroid, which will only hold MethodInvoker and interact with Android Module as a C++ proxy. At the same time, replace MethodInvoker as the Callback and Promise processing class.
-
[Feature][DevTool] add invokeCdp method to LynxDevToolSetModule (d278c8f) @yuweizheng
add invokeCdp method to LynxDevToolSetModule.
-
[Feature][Refactor][Android] Refactor LynxModuleAndroid implementation (6050913) @OverWatch-Winder
- Make LynxModuleAndroid inherit LynxNativeModule and use PubValue as the transfer type.
- Reimplement MethodInvoker, which only acts as a C++ proxy for interacting with Android Module Method.Remove Callback & Promise processing logic in Method Invoker.
- Reimplement LynxModuleAndroid, which will only hold MethodInvoker and interact with Android Module as a C++ proxy. At the same time, replace MethodInvoker as the Callback and Promise processing class.
-
[Feature][Text] Support cross-text element selection. (ea8ca61) @Randycn
Currently, only copying text within the text element is supported. In more complex scenarios such as long article pages, each text element is a paragraph. In this case, cross-text element text copying capability is required for the copying experience to approach the web.
During text copying, the handles at both ends are drawn inside the text element. In the parameters of thesetTextSelection
function, adding two bool type parameters,showStartHandle
andshowEndHandle
, can control whether to draw handles. -
[Feature] Support background-clip text (891a7da) @JinsongVan
Support background-clip text, draw out text into a mask that can then be used to clip background drawing.
-
[Feature] [Frame] add ElementManagerDelegate and handle the 'src' prop of frame (4526e21) @Awuiil
Summary of this commit:
Frame bundle must be loaded for rendering frame, to implement this ability:- Add a class of
ElementManagerDelegate
to handle frame elements and bundles. - A bundle request will be sent by frame element when the 'src' prop is set.
- Bundle will be posted to UI node after being loaded, which leaves a TODO for next commit.
TODO: set BundleLoader to FrameManager.
- Add a class of
-
[Feature] support base::flex_optional (f89ce77) @huzhanbo1996
When value type size > 32, use heap allocated storage, otherwise, use
std::optional
. -
[Feature][DevTool] Support MTS debugging for lazy components. (484daf6) @Dango-2021
- Support MTS debugging for lazy components.
- Change MTS url from lepus.js to main-thread.js.
-
[Feature][Styling] Add style objects for simple styling apis (52115a4) @zhongyr
- StyleObject is an C++ object that contains parsed style properties and value. And has the ability binding to elements and
updates elements binding to it when updating styles in the StyleObject. - In this commit, we add a base StyleObject class. More functionalities will in next few commits.
- StyleObject is an C++ object that contains parsed style properties and value. And has the ability binding to elements and
-
[Feature][NativeModule] Support Using NAPI Modules in BTS within Restricted NAPI Environment (27b91ae) @RobinWuu
In this MR, we use NAPI as the cross-platform module API for Lynx. Users can load and use their custom NAPI modules in the background-thread script. It's important to note that users cannot use
napi_run_script
andnapi_get_global
in NAPI modules, as we provide a restricted NAPI environment to ensure the stability of the script runtime. For detailed usage, please refer to the documentation.
The main changes in this MR are as follows:- Abstract an interface class
NapiRuntimeProxyInterface
fromNapiRuntimeProxy
. - Add a
RestrictedNapiRuntimeProxyDecorator
to wrap theNapiRuntimeProxy
object. This decorator will provide a restricted NAPI environment with some hooked APIs externally, and it will inject a restricted NAPI loader into JS at specific times. - Add
PrepareRestrictedNapiEnvironment
inlynx_runtime.cc
and call this function during runtime initialization to create a restricted NAPI environment. - Add a
getModuleLoader
interface inlynx.ts
for users to obtain the restricted NAPI loader.
- Abstract an interface class
-
[Feature] Support lazy load lynx_core.js (b8c78cc) @lybvinci
- Add mPendingCoreJsLoad for LynxBackgroundRuntimeOptions, let
lynx_runtime
don't load lynx_core.js
when init; - Add TransitionToFullRuntime to make runtime ready(load
lynx_core.js
and so on);
- Add mPendingCoreJsLoad for LynxBackgroundRuntimeOptions, let
-
[Feature][iOS] Support lazy load lynx_core.js (5fa3dd7) @lybvinci
- Add mPendingCoreJsLoad for LynxBackgroundRuntimeOptions, let
lynx_runtime
don't loadlynx_core.js
when init; - Add TransitionToFullRuntime to make runtime ready(load
lynx_core.js
and so on);
- Add mPendingCoreJsLoad for LynxBackgroundRuntimeOptions, let
-
[Feature] Introduce per-instance sampling APIs for long task metric. (ff30ce8) @kazec
- This MR Introduced a new common struct InstanceOptions to encapsulate common
params used by components within a lynx template assembler instance. - Additionally this MR introduced per LynxView APIs for long task metric configuration,
and refactored long task monitoring to use information from InstanceOptions to determine
whether the monitoring should be enabled for a long task. - Major changes includes:
- Add LynxView.setLongTaskMonitorEnabled APIs in the iOS/Android code.
- Introduce new InstanceOptions in C++ code to encapsulate common params used by components within a lynx template assembler instance.
- Passing longTaskMonitorEnabled flag down to various C++ components using InstanceOptions: shell, engine, runtime, jsi, radon, etc.
- Update call-sites of LongTaskMonitor to accept InstanceOptions.
- Update the interface and implementation of LongTaskMonitor to accept InstanceOptions.
- This MR Introduced a new common struct InstanceOptions to encapsulate common
-
[Feature] (android): Add Long Task Monitor Configuration (ee4aa1f) @kazec
This patch is a follow-up for !49107 to introduce new api for the android platform.
Highlights:
- Introduced a new parameter
longTaskMonitorDisabled
to manage
long task monitoring inlynx_template_render_android
. - Updated
LynxTemplateRender
to handle the enabling/disabling of
long task monitors throughLynxBooleanOption
. - Enhanced
ILynxUIRenderer
interface to include long task monitor
configuration, allowing better task monitoring control. - Modified
LynxLongTaskMonitor
methods to return a boolean, indicating
if the task processing should proceed based on the monitoring setting. - Tests in
LynxLongTaskMonitorTest
adjusted to incorporate
LynxBooleanOption
for task monitoring checks.
- Introduced a new parameter
-
[Feature][C++] Add memory monitoring infrastructure with comprehensive tests. (f9637f3) @Tamerlx
-
[Feature][C++] Add memory monitoring infrastructure with comprehensive tests.
This commit introduces three core classes for memory monitoring:
-
MemoryRecord
- Tracks memory usage by category with size and optional details
- Supports memory operations through += and -= operators
- Implements proper move semantics and copy prevention
-
MemoryMonitor
- Manages memory records and reports changes- Provides allocation/dea...
-
3.2.0
Changelog
[3.2.0] - 2025-04-25
🚀 Features
support primitive wrapper: Boolean, Integer, Long, Float, Double and List for LynxJSProperty.
Add a test case about primitive wrapper object
Introduce per LynxView APIs for fluency task metric configuration
- [Feature] Support the global switch for multi-JSThread. (f0018ae) @Yellow5A5
Global switching of multiple JS threads is supported to evaluate its impact on overall application performance. This feature is exploratory in nature, and further measures will be considered based on experimental results.
support annotation for @SerializedName
to resign field name
And with bugfix: global ref for jclass of JSIObject
Currently, only copying text within the text element is supported. In more complex scenarios such as long article pages, each text element is a paragraph. In this case, cross-text element text copying capability is required for the copying experience to approach the web.
During text copying, the handles at both ends are drawn inside the text element. In the parameters of the setTextSelection
function, adding two bool type parameters, showStartHandle
and showEndHandle
, can control whether to draw handles.
🐛 Bug Fixes
- [BugFix] Fix Asynchronous Layout Full-Scale issue (dcf7699) @cddcoding
After enabling asynchronous layout, the layout runner will be bound to loop of UI thread for synchronous layout during the LynxView's onMeasure. Currently, the layout runner is directly obtained from the thread's loop, so LynxViews sharing the same loop will share the same layout runner instance too. This causes different LynxViews to interfere with each other when re-binding the loop of the layout runner.
This MR creates a separate layout runner instance for each LynxView.
- [BugFix][Element] fix the issue that font-size not reset to default value (3d854a4) @linxs0211
font-size is special, we should reset font-size to default value in
element side.
- [BugFix][iOS] supress the kCTFontManagerErrorAlreadyRegistered error (b1782d4) @linxs0211
kCTFontManagerErrorAlreadyRegistered is not a fatal error.
It only requires a warning message
- [BugFix] Correct the error code for Element API fatal error (3ae57de) @PineconeSquirrel
as title
- [BugFix] Fix the issue where dependent parties inject the log function address through means other than LynxLogService. (c80f506) @yongjie
- Only allow LynxLogService to inject the log proxy function address, therefore mark the
initALog()
API as deprecated and remove its implementation. - Remove the unused
getALogPtr()
API andalogNativePtr
variable.
Add lynx.onError for lynx.d.ts
- [BugFix][List] Add variable from_layout to mark whether list scroll offset updating is triggered by layout or scroll. (6a94ee7) @DwwWxx
Add variable from_layout in UpdateContentOffsetForListContainer function to mark whether list scroll offset updating is triggered by layout or scroll.
- [BugFix][iOS] Fixed iOS LynxJSCore copy path error (e2f0f54) @Windrunner
Fixed iOS LynxJSCore copy path error,Since the build is executed in the lynx directory, delete the first lynx in the copy path.
When opening genericFetcher, we need to turn on the image optimization switch by default, otherwise some optimization logic will not take effect
- [BugFix][Android][Font] add api to clear font cache registered from lazy provider (1f35184) @linxs0211
we need to add API for remove the font cache that registered through
lazy provider for Client.
- [BugFix] Fix the issue that
__ElementFromBinary
cannot create Elements based onLazyBundle
. (1ce1786) @ShouruiSong
Currently, __ElementFromBinary
defaults to get information from the default bundle to create Elements. The framework may need to obtain some information from the LazyBundle
to create Elements, but __ElementFromBinary
currently lacks this capability. Therefore, a third parameter will be added to indicate whether it is necessary to obtain the corresponding information from the LazyBundle
, and which LazyBundle
to retrieve it from.
- [BugFix] createViewAsync was incorrectly executed before attachLynxView (2ec9895) @Yellow5A5
Before you create PaintingContext, LynxUIOwner needs to be configured correctly. Therefore, when LynxUIOwner is initialized, the ContextFree flag is set immediately.
- [BugFix] Disable some LynxService API registrations in the experimental shared context (e44be4e) @Windrunner
Since napi_env is not shared in the experimental shared context, this may result in accessing a destroyed napi_env in the global. Therefore, turn off this feature in the shared context.
- [BugFix] ensure WhiteBoard safety with uniqueLock (0009f21) @nihao.royal
unsubscribeSessionStorage
is a write operation that should be guaranteed by uniquelock.
To prevent local reference overflow
- [BugFix] Fix the issue where
bindtap
does not work on some devices indefaultGesture
(0a6e95c) @AdrianLCA
On some devices, touchmove
event is still triggered with a very small offset when tap. These minor move events need to be ignored. Changes smaller than 1px should be considered as a click rather than a scroll.(cherry picked from commit 6439cbfee4c6797e95acf7ce058e72719064bb9b)
(cherry picked from commit 58b3a9f358ac27f92417049f9a20a99f75fc5037)
- [BugFix] Fix LynxModule TestBench crash when InvokeMethod returns an error (b85defd) @Windrunner
Since calling the value method when base::excepted is unexcepted is undefined behavior, it will cause TestBench to crash.
description: Exposure tasks are throttled according to timestamps, and exposure tasks within a fixed time interval will be discarded, which may cause delayed triggering of exposure events in some scenarios. Therefore, we delay the first task within a fixed time interval to execute after the fixed time interval, and other tasks within the time interval will be discarded.
- [BugFix] rename FrameworkPipelineTiming to FrameworkRenderingTiming (54e436b) @partholon
In the official website spec, the standard name of framework rendering is defined as 'Framework Rendering'. Therefore, we modify the definition of PipelineEntry at the same time.
- [BugFix][Android][VSync] fix the NPE of displayManager issue (427dfe2) @linxs0211
try to fix the NPE exception of displayManager
description: When the fe sets an invalid value, getString may return null, which will cause npe for exposure-id.
- [BugFix] fix CSSLazyImport and predecode crash (863c079) @YellowFishWyfCPP
When CSSLazyImport and predecode are used at the same time, it will cause the problem of unsafe multi-threaded reading and writing.
3.2.0-rc.1
Lynx 3.2.0-rc.1 (March 21, 2025)
🚀 Features
- [Feature] Add push css defines file to workflow (34dd381) by (zhongyr)
- [Feature] Add the definition of lynx_value and related interfaces (65e40a7) by (FrendyChen)
- [Feature] Add a switch for the background layout experiment (58c1b03) by (cddcoding)
- [Feature][Refactor][Android] Complete the missing Array and Map operation methods in Android Pub::Value (e7aa834) by (WindRunner)
- [Feature][Refactor][Android] Added logic for converting basic types to Java types in C++ JavaValue (15b0e9d) by (WindRunner)
- [Feature] Add lynx_value_api implementation with PrimJS Value. (4069a3e) by (FrendyChen)
- [Feature] support console series api (4bd9ce5) by (lybvinci)
- [Feature][Refactor][Android] Support parsing piperData in pubValue and JavaValue (5905760) by (WindRunner)
🚜 Refactor
- [Refactor][Gn2Podspec Part2] Add subspec for double-conversion (c231268) by (yulitaotao)
- [Refactor] update app.ts (7dfd2a3) by (Ikko Ashimine)
- [Refactor] Use MessageEvent refactor OnComponentDataSetChanged (4b8cf57) by (lybvinci)
- [Refactor] Adjust the directories under the repository (35e760b) by (zsy-jason)
🐛 Bug Fixes
- [BugFix][Element] Fix the issue where element-binary does not support piper events. (0fc2a5b) by (lidadating)
- [BugFix][Layout] Enable Line-Based Placement Properties for Absolutely-Positioned Boxes in Grid Layout (84897d0) by (givemefive9)
- [BugFix][iOS] Fix image animation problem (0700a70) by (cjnhust)
- [BugFix] Fix the issue where prepare_android_build.sh doesn't support ANDROID_HOME paths starting with ~ (4baf23a) by (yongjieTang)
- [BugFix][Android] Fix the incorrect ellipsis count in the overwritten text shadow node. (1d4ed1a) by (Randycn)
- [BugFix] file typo for css_generator package.json (256f0b9) by (zhongyr)
- [BugFix] When executing FiberUpdateListCallbacks, call the set_tasm of List Element to avoid null pointer access that could lead to a crash. (f7286f5) by (ShouruiSong)
- [BugFix] Fix share context napi API is mounted to globalThis unexpected (85f9ec1) by (lybvinci)
- [BugFix][Input] Fix the problem that pseudo-elements do not support font-style (8fa9ec4) by (MoonfaceX)
- [BugFix][Timing] Some Pipelines do not have the correct PipelineOrigin marked (2f5346c) by (partholon)
- [BugFix] Fix the issue where the internal vsync message loop global switch is being covered by the user (cf133eb) by (cddcoding)
- [BugFix]Fix the issue where MessageHandler could not obtain right message due to parameter passing errors (0f2f084) by (RovicnowYoyi)
- [BugFix][Android][Event] Fix the leak of listener in ViewTreeObserver. (3209573) by (rAY-ooo)
- [BugFix][DevTool] fix JNI DETECTED ERROR when GetLynxScreenShot (9bbb47d) by (yuweizheng)
- [BugFix] Correct the prefix for mts error message (ebfafd6) by (PineconeSquirrel)
- [BugFix][Android] When prop is null or empty, do not exectue update related methods of LynxUI (1d09161) by (ShouruiSong)
- [BugFix] Update css-defines-publish.yml (54badb6) by (Zhongyue)
- [BugFix] Fix share context napi API is mounted to globalThis unexpected (b5405d8) by (lybvinci)
- [BugFix][iOS] mask layer should apply transform (cb7feed) by (zhongyr)
- [BugFix] Nil Checker For ValueConverter (c942aa7) by (nihao.royal)
- [BugFix][iOS] filters effect not work on background image (e32a8d9) by (zhongyr)
- [BugFix][TestBench] Use thread_local to avoid multi-threading race conditions (9b3a3bc) by (ZhaoSongGOO)
- [BugFix][Homepage] Resolve the issue of input content and cursor misalignment on the homepage. (3f27b42) by (Moonface)
- [BugFix] Set VSyncMonitor to base namespace. (e573f27) by (Yellow5A5)
- [BugFix] Fix share context napi API is mounted to globalThis unexpected (cd91cbf) by (lybvinci)
- [BugFix][iOS][Event] Add iOSEnableAnimationProps for boundingClientRect. (4eed41a) by (rAY-ooo)
- [BugFix][Android] Make translateZ reorder stable (6129518) by (zhongyr)
- [BugFix] Flush layout task queue in LayoutImmediatelyWithUpdatedViewport to prevent crash (f3dc181) by (klaxxi)
- [BugFix][iOS] try to fix TextStorage Dealloc crash issue (4b31561) by (linxs0211)
- [BugFix] fix the issue of LynxEngine reload process. (1a6862b) by (nihao.royal)
- [BugFix][iOS][Event] Add handleFocus for LynxEventHandler. (972c9a1) by (rAY-ooo)
- [BugFix][Event] Change enableMultiTouch and enableNewIntersectionObserver. (30852e7) by (rAY-ooo)
- [BugFix][iOS][Gesture] Use a fixed step to drive the Fling of Gesture. (44187cc) by (MoonfaceX)
- [BugFix] Fix crash in SplitStringByCharsOrderly when input string contains '\0' ([76db90c](https://github...