Lynx 3.8: WebAssembly on Android, Adaptive Layout, and More
← All PostsLynx 3.8 is now officially released!
As outlined in our 2026 roadmap, Lynx 3.8 kicks off our new monthly release cadence. Moving to monthly means each release will be smaller and more focused. For 3.8, that's WebAssembly on Android, <frame> auto-sizing, line-aware text fitting, HarmonyOS SessionStorage, LynxEngine reuse, and DevTool protocol updates.
Before diving into 3.8, don't miss our recent lynx-ui announcement, where we introduced ready-to-use components for building cross-platform Lynx interfaces.
WebAssembly on Android
This release introduces initial WebAssembly support on Android via the PrimJS runtime. Lynx apps can now load and execute WebAssembly modules on the background thread, making it possible to move computation-heavy logic into WebAssembly when JavaScript isn't fast enough.
The current implementation focuses on common constructor-based flows:
The complete example below shows the same flow in a Lynx page:
The current implementation covers WebAssembly.Module and WebAssembly.Instance fully, plus common-case usage of WebAssembly.Memory, WebAssembly.Table, and WebAssembly.Global.
Adaptive Layout, Text, and Platform Behavior
This release improves how Lynx content adapts to its host container, fits text into constrained layouts, and closes platform-specific behavior gaps.
<frame> Auto-sizing and Load Metrics
<frame> can now size itself based on the embedded Lynx page's content with the new auto-width and auto-height attributes, reducing the need for host-side dimension calculation.
It also improves startup and observability with preset layouts, better data and global-props passing, intrinsic size reporting through layoutchange, and <frame> load metrics on Android and iOS.
Line-aware Auto Font Sizing
The new -x-auto-font-size-line-ranges CSS property lets developers define different font-size search ranges based on the actual number of rendered lines. Use it with -x-auto-font-size: true:
This is useful for titles, cards, and feed layouts where one-line, two-line, and multi-line text need different fitting behavior.
Desktop Exposure and HarmonyOS Animation
macOS and Windows now support enable-exposure-ui-clip, giving developers more control over exposure calculations in complex layouts.
HarmonyOS <view> also gains keyframe animation pipeline support.
Native Integration
Lynx Engine Reuse in LynxViewGroup
On Android, LynxViewGroup can now cache and reuse a LynxEngine across LynxView instances created from the same group. This is useful when an application repeatedly creates views from the same template bundle, such as in multi-page or embedded-view scenarios.
We've seen many apps where users leave and re-enter the same Lynx page. In these cases, caching the LynxEngine avoids the cost of repeatedly destroying and recreating it, and can reuse work the engine has already done, like the constructed UI tree, so re-entering the page renders faster.
Applications don't need to manage LynxEngine directly. Create a group with caching enabled, attach it to each LynxViewBuilder, and release it when no longer needed:
Resource Loading Callback
LynxViewClientV2 adds an onResourceLoaded callback so clients can observe resource loading from native code. This gives host applications a single hook for resource timing, success/failure status, and other diagnostics.
SessionStorage on HarmonyOS
HarmonyOS now supports the SessionStorage API for cross-page data sharing. Front-end code can use the existing lynx.setSessionStorageItem, lynx.getSessionStorageItem, lynx.subscribeSessionStorage, and lynx.unsubscribeSessionStorage APIs to share session-scoped state across pages.
DevTool Protocol and Debugging
DevTool protocol and debugging improvements include:
- MTS debugging now works with pre-executed and pre-decoded
MTSRuntimeinstances. - CDP support adds
DOM.describeNode. DOM.getDocumentnow supports thedepthparameter.- DevTool can query
PerformanceEntrydata through the CDP Performance domain.
Upgrade Guide
To upgrade to Lynx 3.8, follow the integration guide and update your Lynx dependency versions accordingly.
Thank You
Lynx 3.8 is the first step in our monthly release cadence: smaller releases, clearer upgrade paths, and faster feedback loops.
Thanks to everyone building with Lynx, trying new releases early, filing issues, and helping the project improve in the open. See you in the next monthly release.
