3.5.2
Changelog
3.5.2
Related Dependencies
// Android:
org.lynxsdk.lynx:primjs:2.15.1
// iOS
pod 'PrimJS', '2.15.1', :subspecs => ['quickjs', 'napi']
// Harmony
@lynx/primjs: 2.15.1
✨ Features
-
[Feature][iOS] add global memory usage reporter and path formatting. (8c55613) @Tamerlx
add global memory usage reporter and path formatting.
- Introduce LynxMemoryUsageGlobalReporter to track and report memory usage across Lynx instances
- Add formatPath utility to normalize URLs in memory reports
- Include comprehensive unit tests for both new components
-
[Feature][Markdown][Part1] Support markdown on harmony. (316dde2) @Randycn
1.Modify markdown style initialization and settings in third_party/markdown to adapt to density. 2.Supports setting style in markdown shadow node and supports layout of inline view.
NoLanding:release/3.6,develop
-
[Feature][Part3] add threshold-based memory reporting. (cc70533) @Tamerlx
This MR is to add threshold-based memory reporting.
Add global memory report threshold configuration and trigger reports when memory usage crosses threshold values. The threshold can be configured via LynxEnv and defaults to 30MB. Reports now include trigger mode (timer/threshold) and threshold configuration details.
Also refactor report generation to be more flexible by accepting trigger mode parameter instead of timer-specific parameters. This change affects both iOS and Android implementations.
🐛 Bug Fixes
-
[BugFix][Element] Enable conditional deep conversion for Lepus value handling in Fiber config/attributes/dataset (2793abe) @usczz
Introduce conditional deep conversion when transforming Lepus values based on ElementManager’s parallel element flag. This ensures data passed to FiberElement methods is converted with the appropriate depth for parallel element scenarios.
Changes:
- Pass deep_convert to ToLepusValue for AddConfig, SetConfig, SetAttribute, AddDataset, and SetDataset.
- Preserve existing behavior when parallel elements are disabled.
-
[BugFix] fix extensionService thread-safety. (9eba04c) @nhsprite
fix extensionService thread-safety.
-
[BugFix][Android] Fix visibility issue when inserting child in UIShadowProxy (095e6aa) @zhongyr
Summary of change:
- Added visibility setting for the shadow view when inserting a child
- The shadow view now correctly inherits visibility from the child it wraps
- This fixes an issue where the shadow would remain visible even when the child was hidden
This change ensures that when a child is inserted into the UIShadowProxy, the shadow view's visibility is updated to match the child's visibility state, preventing incorrect rendering where hidden elements would still show their shadows.
-
[BugFix][Event] Make exposure-id to accept the number type. (a33b2ee) @rAY-ooo
🚜 Refactor
-
[Refactor][DevTool] Split JS engine related logic. (d0d5cb4) @Dango-2021
- Added
JSDebugProxyto create all objects dependent on the JS engine. - Added a singleton
JSDebugHelperto manage the pointer toJSDebugProxy.
(Android only) 3. Extracted
JSDebugProxyand JS engine related logic from lynxdevtool.so into a separate lynxdevtool_js_bridge.so, so that lynxdevtool.so no longer depends directly on the JS engines. 4. Load lynxdevtool_js_bridge.so only whenILynxDevToolService.getLoadJsBridge()returns true. - Added
🚀 Optimization
-
[Optimize][Frame] Add usage counter for FrameElement and spec entry (3bda9f3) @pilipala195
Add GlobalFeatureCounter hook when FrameElement src is set to track CPP_USE_FRAME_ELEMENT with instance ID. Update feature_count specification to include cpp.use_frame_element key for aggregation.
- Increment counter on successful frame bundle load path
- Wire in global_feature_counter header
- Extend specification.yaml with cpp.use_frame_element for reporting
-
[Optimize] Remove temporary string constructions (ccb8dba) @lybvinci
Remove tmp field create to avoid redudant string creation.
-
[Optimize][Harmony] Support delegate gesture (e017516) @ci_lynx
-
[Optimize][List] Report list batch render strategy (6b4173e) @DwwWxx
Report lynxsdk_list_batch_render_statistic event for the ListElement when first resolving batch render strategy.
-
[Optimize][Binding] Handle generic objects in remote binding (42d500a) @ci_lynx
We have only one occurence of generic object argument: video creation options, where users can pass any object to pass to their player service. Here I take only strings into account so the solution can be very much simplified: serialize everything into a 'k1:v1;k2:v2:...' string, assuming there are no ':' and ',' in keys/values.
🛠️ Infra
-
[Infra] Optimize CI gradle cache (feff032) @jianliang00
Gradle 8.7 is cached for android-integration-test, and gradle 6.7 is managed by habitat.
Cache ~/.gradle/caches/modules-2 to optimize the stability of pulling dependencies.
-
[Infra][Harmony] support multiple sdk version (afbd9f6) @GhostFlying
This patch supports using the differenet sdk version in differenet task or branch.
-
[Infra] Disable flaky e2e case temporarily (ea80783) @Kingatnuaa0528
Disable ListBase case in e2e, which is a flaky case.
-
[Infra] Move dev dependency from DEPS to DEPS.dev (faaa74b) @gongfeng98
Move android_sdk_manager dependency from file DEPS to DEPS.dev. Ensuring that publish release workflow will not throw errors due to redundant dependency.
-
[Infra] Batch synchronize code from the upstream branch. (dbfb4bc) @ci_lynx
-
[Infra] use macos-14 runner in ios publish job (8b2b5ae) @Kingatnuaa0528