Skip to content

Releases: webview-native-ui/engine

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 30 Oct 02:16

Fixes

  • Resolve the default projection origin from Capacitor configuration, including custom hostnames, schemes and development server URLs. Explicit allowedOrigins remain unchanged. (#25)
  • Wait for retiring projection surfaces during teardown and simplify internal handoff and cleanup paths. (#26)
  • Allow Java consumers to initialize NativeUIProjection using only the required arguments, with the same defaults as Kotlin. (#27)

This patch preserves existing integration APIs.

Packages

  • npm: @webview-native-ui/engine@1.0.1
  • SwiftPM: https://github.com/webview-native-ui/engine.git, version 1.0.1
  • Maven: io.github.webview-native-ui:engine:1.0.1

Maven Central publication has been accepted. Android artifact downloads may become available after Central completes distribution.

What's Changed

  • fix: wait for idle image release before native visibility recovery by @rdlabo in #23
  • build: prepare release-only runtime tags in GitHub Actions by @rdlabo in #24
  • fix: resolve projection origins from Capacitor configuration by @rdlabo in #25
  • fix: await retiring surfaces and simplify projection paths by @rdlabo in #26
  • fix(android): support minimal projection initialization from Java by @rdlabo in #27

Full Changelog: v0.0.7...v1.0.1

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 12:40

Beyond the WebView. Bring Native UI seamlessly into Web apps.

WebView Native UI Engine 1.0.0 provides shared infrastructure for Capacitor and Cordova plugins to combine native components with WebView content. It coordinates native placement, scrolling, Web projection and restoration so plugin authors can focus on the components they build.

What the Engine enables

  • Native controls and eligible SDK views alongside Web content in scrolling screens.
  • Web overlays above native surfaces through prepared visual projections, followed by restoration of the interactive native view.
  • Shared lifecycle and handoff infrastructure for iOS and Android, with configurable integration points for plugin authors.

A Web projection is a captured visual representation, not an interactive native view. Capture fidelity and supported surfaces depend on the platform; in particular, iOS Liquid Glass edge reflections may differ from the live view. See the platform limitations before integrating.

Install and integrate

  • npm: @webview-native-ui/engine@1.0.0
  • Swift Package Manager: https://github.com/webview-native-ui/engine.git, version 1.0.0
  • Maven: io.github.webview-native-ui:engine:1.0.0

Start with the documentation and watch the 23-second demo.

This release marks the 1.0 baseline. There are no runtime code changes or API changes from 0.0.8; the intervening changes add the demo and improve the comparison image layout.

Maven Central publication is accepted before npm publication. Android artifact availability can lag behind that acceptance while Central completes distribution.

Full changelog: v0.0.8...v1.0.0

v0.0.8

Choose a tag to compare

@github-actions github-actions released this 29 Oct 07:41

Fixes

  • Wait for pending image releases and final placement acknowledgement before restoring native visibility during a native-to-Web handoff. Hide and teardown cancel pending recovery so stale requests cannot reveal the view again. (#23)

Maintenance

  • Release preparation now runs in GitHub Actions. Generated native runtime resources are included in release tags and packages, while development commits remain source-only. Source checkouts need npm run build before building the Swift package; consumers of published versions do not need this step. (#24)

No public API changes. Use matching 0.0.8 versions for npm, SwiftPM and Maven.

At release time, Maven Central accepted the upload (PUBLISHING), but artifact downloads were still propagating. Android consumers should wait until the 0.0.8 POM and AAR are available before upgrading.

Existing platform capture limitations still apply; this release does not claim pixel-identical Liquid Glass capture or zero flicker across devices.

Full changelog: v0.0.7...v0.0.8

v0.0.7

Choose a tag to compare

@rdlabo rdlabo released this 29 Oct 05:35

This release improves projection recovery when DOM containers change or native updates arrive close together, and adds optional APIs for plugin maintainers to share more of their renderer lifecycle with the Engine.

Changes

  • Retire departed DOM projections before reconnecting, bound retries across sequential native updates, and preserve hidden views when teardown immediately follows a none transition.
  • Add renderer projection surfaces, shared image handoff requests, and serialized native state updates with recovery handling.
  • Add optional readValues and values bindings to reflect native component data into fallback DOM attributes or properties. Framework model updates continue to use the plugin's existing events and setters; value reflection does not synthesize form events.
  • Reorganize integration documentation around initialization, optional configuration, and advanced renderer APIs. Document iOS capture limitations with physical-device comparisons.
  • Add Swift and Kotlin formatting/lint checks and regression coverage for recovery and teardown.

Upgrading

Pin npm, SwiftPM/CocoaPods, and Maven dependencies to 0.0.7, then rebuild the consuming native app. Kotlin initialization has new optional parameters: use the documented named arguments or trailing view lambda; this release does not promise JVM binary compatibility with previously compiled consumers.

Validation and limits

Validated with Native UI on normal iPhone and Duo simulators, AdMob test ads on Android API 36, and Angular Signal Forms / React state connected to real UIKit controls through Capacitor. Browser tests, package verification, and publication tests passed.

The existing iOS Liquid Glass capture differences remain. The Android API 35 consumer check was blocked by an advertising SDK load error; API 36 completed successfully. These checks do not certify zero visual difference on every animation frame.

Android artifacts may take additional time to become downloadable after Maven Central accepts publication.

Full changelog: v0.0.6...v0.0.7

v0.0.6

Choose a tag to compare

@rdlabo rdlabo released this 28 Oct 15:16

This patch fixes image handoffs during repeated movement and iOS scroll ownership when native views are replaced. No public API changes are required for high-level NativeUIProjection users.

Fixes

  • Reuse prepared images when a transient surface only changes position, placing entry and return copies at the current coordinates. Rapid interactions no longer discard valid pixels while waiting for the next capture. Size and scope-relative layout changes still invalidate the cache. (#12)
  • Release iOS scroll masks from the views that Engine actually modified, including view replacement, document changes, and teardown. Preserve masks subsequently installed by the renderer. (#13)
  • Update the renderer callback when reusing an iOS scroll tracker, while keeping its observer and coordinate origin. (#13)

Maintainers

Custom low-level transports should forward supplied cover.parts and viewportWidth to native destination frames, as described in Projection. The high-level API handles this automatically; callers without destination frames retain the previous placement behavior.

Existing npm artifact tests and the Android API 23 fallback test now run before release. A duplicated runtime-build test was removed while preserving CI's generated-runtime consistency check.

Maven Central accepts publication before artifacts finish propagating. Android consumers should wait until io.github.webview-native-ui:engine:0.0.6 is downloadable; npm and SwiftPM use the same version.

Full changelog: v0.0.5...v0.0.6

v0.0.5

Choose a tag to compare

@rdlabo rdlabo released this 28 Oct 04:23

Retained Web projection images

Prepared native snapshots now use reusable, noninteractive images inside the existing fallback container or its open ShadowRoot. This leaves the application's ::before and ::after available while preserving the fallback's layout, event listeners and values. Capture and decoding remain outside the handoff path.

  • Suppress fallback content and pseudo-elements across open shadow trees during projection, then restore them when Native takes ownership again.
  • Preserve authored visibility queries and safely reuse images across repeated handoffs and delayed acknowledgements.
  • Add a container support reference, covering HTML containers and the complete Ionic 9 component inventory.

Integration notes

Renderers that inspect children or invalidate captures from DOM mutations must exclude Engine-owned image nodes and markers. See the integration requirements. The companion change for Ionic Native UI is ionic-theme-ios27#336; include that fix when upgrading the consumer.

This is preparation for future Canvas rendering, not a change to capture fidelity. It retains the existing PNG transport and image quality. Native Liquid Glass capture and color limitations remain tracked in #5 and #6.

Validation

Chromium and WebKit: 109 regression tests each. Temporary DOM probes additionally checked HTML layouts and all 95 Ionic elements, including configuration-only and internal elements. Native UI, AdMob and Capawesome integration checks exercised image handoff and restoration. Recorded frames do not prove that every physical display refresh was captured.

Packages

Use version 0.0.5 consistently for npm, SwiftPM and Maven. Maven Central publication acceptance precedes npm publication; Android artifacts may take additional time to become downloadable.

v0.0.4

Choose a tag to compare

@rdlabo rdlabo released this 27 Oct 15:36

Fixes

  • Android: Hand off prepared view projections before WebView consumes a scrolling drag, reducing the window in which native and Web copies can overlap. Native taps and gestures starting on native controls keep their existing input path. Image retirement and native restoration now reconcile placement when an early handoff races a Web update. #7
  • iOS: Preserve more wide-gamut color precision by capturing into Display P3 Float16 and preparing 16-bit Display P3 PNGs. Native entry/return copies use the same decoded PNG pixels as the Web projection. This reduces conversion loss without requiring Canvas, WebGPU, or new consumer configuration. #8

Compatibility

Existing plugin registrations remain valid. Higher-precision iOS images can use more memory and storage; native compositing differences, including Liquid Glass appearance, are not guaranteed to disappear. Android's image format remains unchanged.

Use @webview-native-ui/engine@0.0.4, SwiftPM tag v0.0.4, or Maven io.github.webview-native-ui:engine:0.0.4. Maven Central distribution may take additional time after publication is accepted; Android consumers should wait until the matching POM and AAR are downloadable.

Full changelog: v0.0.3...v0.0.4

v0.0.3

Choose a tag to compare

@rdlabo rdlabo released this 27 Oct 07:43

Fixes

Fix black native-to-Web projection images on physical iOS devices. The Engine now rasterizes the owning window directly instead of converting a screen snapshot view into a bitmap. Public APIs, preparation timing and handoff behavior are unchanged.

Validated on an iPhone 15 Pro Max running iOS 27.0.1, plus normal iPhone and Duo simulators, with repeated alerts, modals, sheet-drag dismissal and native interaction after restoration. A regression test checks the pixels of the prepared PNG.

Known limitation

UIKit image rendering can differ from live Liquid Glass rendering over patterned backgrounds. This release fixes black captures; it does not promise pixel-identical materials or flicker-free handoff under every condition. See projection guidance.

Installation

Use @webview-native-ui/engine@0.0.3, Swift package tag v0.0.3, or Maven io.github.webview-native-ui:engine:0.0.3. Android runtime code is unchanged. Maven distribution may lag behind publication acceptance; Android consumers must wait until the matching artifacts are downloadable.

v0.0.2

Choose a tag to compare

@rdlabo rdlabo released this 27 Oct 06:21

Configurable snapshot preparation

Plugin maintainers can now set captureDelayMs when creating a native projection in Swift or Kotlin. The default remains 50 ms. The same option is available through the TypeScript projection API.

This controls the existing debounce used to prepare cached images after updates. It does not delay an overlay opening: the Engine immediately uses an available cached image, or the existing Web fallback when no image is ready. A longer delay gives native animations more time to settle, but also keeps the previous cached appearance longer.

For UITabBar Liquid Glass selection animations, simulator measurements suggest 600 ms as a starting point. This is integration-specific guidance, not a universal animation duration. See the Capacitor guide, Cordova guide, and projection details.

Maintenance

  • Adopt the MIT license for this release. Previously published packages retain their original license.
  • Keep the shared native JavaScript runtime in runtime/, with the packaged iOS resource generated from it.
  • Simplify CI and release orchestration.

Upgrading

Use @webview-native-ui/engine@0.0.2, the Swift package tag v0.0.2, or Maven io.github.webview-native-ui:engine:0.0.2 as appropriate for your integration. Rebuild native consumers after upgrading. Existing documented named-argument and trailing-lambda Kotlin usage remains valid; callers passing every constructor argument positionally should name their view argument when adopting the new option.

Android artifact distribution may lag behind this release. Maven Central has accepted version 0.0.2 for publication; Android builds must wait until its POM and AAR are downloadable.

v0.0.1

Choose a tag to compare

@rdlabo rdlabo released this 27 Oct 01:54

Initial release of WebView Native UI Engine under its new package names.

This is infrastructure for Capacitor and Cordova plugin maintainers. Plugins own their native views and fallback DOM; the Engine manages prepared image projection, supported scroll tracking, and restoration between native and Web layers.

Packages

  • npm: @webview-native-ui/engine@0.0.1
  • Swift Package Manager / CocoaPods module: WebViewNativeUIEngine
  • Maven: io.github.webview-native-ui:engine:0.0.1

Included

  • Shared projection lifecycle for Capacitor and Cordova, with explicit native, Web, and hidden destinations.
  • Optional shared Ionic overlay support through @webview-native-ui/engine/ionic.
  • Origin-restricted native messaging and owner-aware cleanup during session replacement.
  • Recovery when Android's prepared image cache files are removed.
  • Browser, iOS, Android, and real Cordova consumer tests covering projection, restoration, and document reload.

The API is pre-1.0. Pin matching versions across npm and native dependencies. Existing consumers of the previous package names must update their imports, native dependencies, and repository URLs.

See the integration guide and Cordova setup. Licensed under Zlib, with upstream notices included.