Skip to content

Releases: lynx-family/lynx

3.4.0-rc.0

01 Aug 08:42
Compare
Choose a tag to compare
3.4.0-rc.0 Pre-release
Pre-release

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

25 Jul 03:51
Compare
Choose a tag to compare

Some bugfixes have been made for version 3.3.0.

💡 Features

  • [Feature] Support skip-redirection and MediaResourceFetcher for local image resource (59c6436) @liubb0516

    support skip-redirection and MediaResourceFetcher 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 looping url_to_lifecycle_option_map_, eg: calling queryComponent in callback of queryComponent.
    It's reasonable to use extract to accquire lifecycleOption list from url_to_lifecycle_option_map_ first, and then call OnLazyBundleLifecycleEnd for each option. QueryComponent called in OnLazyBundleLifecycleEnd 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 the css_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. Pass instance_id instead of this 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)

  • [BugFix][iOS] Fix Image's reportTime error ([3429b89](34...

Read more

3.3.0

02 Jul 03:10
Compare
Choose a tag to compare

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 the setTextSelection function, adding two bool type parameters, showStartHandle and showEndHandle, 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.
  • [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.
  • [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 and napi_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 from NapiRuntimeProxy.
    • Add a RestrictedNapiRuntimeProxyDecorator to wrap the NapiRuntimeProxy 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 in lynx_runtime.cc and call this function during runtime initialization to create a restricted NAPI environment.
    • Add a getModuleLoader interface in lynx.ts for users to obtain the restricted NAPI loader.
  • [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);
  • [Feature][iOS] Support lazy load lynx_core.js (5fa3dd7) @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);
  • [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.
  • [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 in lynx_template_render_android.
    • Updated LynxTemplateRender to handle the enabling/disabling of
      long task monitors through LynxBooleanOption.
    • 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.
  • [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:

      1. 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...
Read more

3.2.0

25 Apr 04:53
Compare
Choose a tag to compare

Changelog

[3.2.0] - 2025-04-25

🚀 Features

  • [Feature] [Android] JSIObject support to get primitive wrapper and List type (4647a37) @Awuiil

support primitive wrapper: Boolean, Integer, Long, Float, Double and List for LynxJSProperty.
Add a test case about primitive wrapper object

  • [Feature] Introduce per-instance sampling APIs for fluency metric. (515d0eb) @kazec

Introduce per LynxView APIs for fluency task metric configuration

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.

  • [Feature] [Android] JSIObject support SerializedName (8c412b8) @Awuiil

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

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

as title

  • [BugFix] Fix the issue where dependent parties inject the log function address through means other than LynxLogService. (c80f506) @yongjie
  1. Only allow LynxLogService to inject the log proxy function address, therefore mark the initALog() API as deprecated and remove its implementation.
  2. Remove the unused getALogPtr() API and alogNativePtr 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.

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 on LazyBundle. (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 in defaultGesture (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.

  • [BugFix][Android][Event] Avoid exposure task omissions. (e5a6059) @rAY-ooo

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.

try to fix the NPE exception of displayManager

  • [BugFix][Android][Event] Add null protection for exposure-id. (8178673) @rAY-ooo

description: When the fe sets an invalid value, getString may return null, which will cause npe for exposure-id.

When CSSLazyImport and predecode are used at the same time, it will cause the problem of unsafe multi-threaded reading and writing.

  • [BugFix] Fix the issue where fixed elements cannot be removed from the page node when multiple ancestor nodes are removed during a single rendering process. (2925fcc) @Shourui...
Read more

3.2.0-rc.1

21 Mar 08:24
Compare
Choose a tag to compare

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

🐛 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...
Read more