Skip to content

Releases: openwebf/webf

0.23.12

19 Dec 18:44
5fbbbdb

Choose a tag to compare

  • Performance
    • Rendering: comprehensive flex layout optimizations (caching invariants and per-item flex data, reduced allocations, and new fast paths).
    • Inline formatting: speed up paragraph layout and trailing extras shrink passes; refactor paragraph building for less work.
    • Style/layout: optimize parent render-style reads and avoid unnecessary element key updates.
  • Fixed
    • Android: fix build configuration issues.
    • Tooling/tests: resolve lint issues and update integration/unit tests.
  • Chore
    • Dependencies: bump vector_math to ^2.2.0.

0.23.11

16 Dec 10:12
630587a

Choose a tag to compare

  • Features
    • CSS Grid: enable grid layout by default and expand support for track sizing and placement, including
      repeat()/minmax()/fit-content(), named lines, template areas, and grid/grid-template/place-*
      shorthands.
    • DOM/Bridge: complete the IntersectionObserver API (including IntersectionObserverEntry) and add v2
      properties for richer visibility tracking.
    • Accessibility: improve semantics for overflow scrolling containers, add ListView a11y coverage, and support
      menubar/menuitem roles.
  • Fixed
    • Grid: fix auto-placement and sizing edge cases (reverse line ranges, justify-content: space-*, auto-fit
      track collapse, and placement alignment).
    • Platform/CI: fix iOS source builds and stabilize integration tests/snapshots.
    • Accessibility/DOM: improve focusability handling and skip non-semantic container tags during traversal.

0.16.3 ~ 0.23.10

08 Dec 22:38

Choose a tag to compare

🔐 Licensing

GPL-3.0

  • Updated all license headers
  • Clear GPL-3.0 indication in package metadata
  • Docs updated for licensing clarity

🎯 Major Feature Categories

  1. CSS & Layout Engine (0.23.x series)
  • CSS Grid Support (experimental in 0.23.9)
  • CSS Variables & Transitions - Complete overhaul with var-driven transitions
  • CSS Performance - 84.7% reduction in recalc time, 87.8% reduction in flush time
  • Modern CSS: aspect-ratio, clamp(), fit-content()
  • Backgrounds & Gradients: Layered backgrounds, radial/conic gradients, repeating patterns
  • Pseudo-elements: ::first-line, ::first-letter, ::before, ::after
  1. Canvas 2D API (0.23.10)
  • ImageData APIs (getImageData/putImageData)
  • Hit-testing (isPointInPath/isPointInStroke)
  • Line dashes with dash offset
  • Shadow offsets and global compositing
  • ImageBitmap support
  1. DevTools & Debugging (0.22.x - 0.23.x)
  • Chrome DevTools Protocol (CDP) integration
  • Network panel with request/response inspection
  • DOM manipulation tools
  • CSS debugging APIs (CSS.createStyleSheet, CSS.forcePseudoState, CSS.resolveValues)
  • Performance metrics display (FP/FCP/LCP)
  1. Performance Metrics (0.21.6 - 0.22.7)
  • LCP (Largest Contentful Paint) tracking
  • FCP (First Contentful Paint) support
  • FP (First Paint) metrics
  • Route-specific tracking
  • LoadingState API with comprehensive lifecycle monitoring
  1. Networking & HTTP (0.22.8)
  • Dio networking support with adapters
  • CupertinoHttp for iOS/macOS
  • Custom network options per controller
  • HTTP cache improvements with SHA-256 hashing
  1. Accessibility (0.23.9)
  • Semantics tree integration
  • ARIA attributes support (aria-pressed)
  • Multiple element types (, email inputs)
  • Heading levels and semantic flags
  1. Text & Typography (0.23.2)
  • RTL (right-to-left) support
  • Text transforms (capitalize/uppercase/lowercase)
  • Gradient text with background-clip: text
  • W3C-compliant whitespace processing
  • ex unit support
  1. Build System & Platforms
  • Android: x86_64 emulator support, 16KB page size compatibility
  • Windows: Full MSYS2 builds with CI/CD
  • iOS: Direct source compilation, prebuilt framework support
  • Platform Features: Android STL bundling options (static/dynamic)
  1. JavaScript Runtime (0.21.1)
  • QuickJS Upgrade to 2025-04-26
    • WeakRef & FinalizationRegistry
    • Top-level await in modules
    • Promise.withResolvers
    • Array.prototype methods (with, toReversed, toSpliced, toSorted)
  1. Router & Navigation (0.21.x - 0.23.x)
  • Hybrid router support with WebFSubView
  • hybridHistory.buildContextStack() API
  • Router lifecycle events (didPush/didPushNext)
  • go_router Flutter package integration

📊 Performance Improvements

CSS Performance (0.23.4)

  • recalcMs: 209ms → 32ms (~84.7% reduction)
  • flushMs: 203ms → ~25ms (87.8% reduction)
  • recalc calls: ~37% reduction (462 → 292)
  • Targeted invalidation via id/class/attr indices
  • Selector memoization and ancestry fast-path

Memory Management

  • Idle scheduling for batch freeing of native objects
  • HTTP cache SHA-256 hashing (replaced url.hashCode)
  • QuickJS bytecode caching
  • Global cache management API (WebF.clearAllCaches())

🔧 Architecture Changes

Widget Element System (0.21.0-beta.3)

  • New WebFWidgetElementState pattern
  • Custom Flutter widgets as HTML elements
  • Two-way data binding support
  • Method exposure to JavaScript

Controller Management (0.21.x)

  • WebFControllerManager for lifecycle management
  • Preload/prerender support with race condition handling
  • Auto-managed WebF widgets
  • Fallback mechanisms for concurrent requests

🐛 Major Bug Fixes Across Versions

Layout & Rendering

  • Flexbox sizing corrections (multiple releases)
  • Absolute positioning spec alignment
  • Text wrapping in flex containers
  • CJK font baseline alignment
  • getBoundingClientRect accuracy improvements

Memory Leaks Fixed

  • BoxFitImage controller references (0.21.4)
  • Event listener options (0.22.0)
  • Native binding objects (0.21.x)
  • Canvas context finalization (0.21.0-beta.5+2)
  • Script promise lifecycle (0.21.0-beta.5+2)

Cross-Platform Stability

  • Windows malloc/free mismatch fixes (0.23.1)
  • iOS compilation issues (multiple releases)
  • Android NDK compatibility (0.22.3+1)
  • Linux build dependencies (0.23.1)

🔄 Breaking Changes

0.21.5+1

  • Removed javaScriptChannel parameter from WebFController constructor
  • Removed navigationDelegate parameter (now set via setup() callback)
  • WebFJavaScriptChannel now auto-created via controller.javascriptChannel

0.23.0-beta.1

  • Minimum NDK version: r22 → r27
  • Migrated from QuickJS-based AtomicString to Blink string implementation
  • Removed legacy UI command implementations

📦 API Additions

WebFController APIs

  • controller.printDOMTree() - Debugging helper
  • controller.printRenderObjectTree() - Render tree inspection
  • controller.javascriptChannel - Auto-created channel
  • controller.loadingState - Comprehensive loading metrics
  • Performance callbacks: onFP, onFCP, onLCP

Document APIs

  • document.currentScript
  • queueMicrotask (global scope)
  • Element.insertAdjacentElement
  • HTMLLinkElement.relList

Web APIs

  • TextEncoder/TextDecoder (WHATWG Encoding Standard)
  • FormData/File API
  • Web Streams API (initial)
  • URL API enhancements (username/password)

🧪 Experimental Features

Rust/Native API (0.16.3)

  • Native plugin support with Rust bindings
  • Example: webf/example/rust_builder/rust

CSS Grid (0.23.9)

  • Explicit track parsing (px/%/fr)
  • Auto-placement scaffolding
  • grid-auto-flow support
  • MVP layout across columns

📝 Documentation & Tooling

WebF CLI (0.22.0)

  • Code generator for React/Vue bindings
  • Type-safe Flutter/Dart ↔ JavaScript bridges
  • NPM publishing with custom registries
  • Auto-metadata sync from pubspec.yaml

Testing Infrastructure

  • Integration test tools (0.23.0)
  • Snapshot testing with visual regression
  • Widget unit test utilities
  • CDPanel basic tests (0.23.3)

Version Timeline

0.16.3 (Community) → 0.20.0 (Enterprise) →
0.21.x (Architecture) → 0.22.x (DevTools/Network) →
0.23.x (CSS Modernization) → 0.23.10 (Current)

Quick Stats:

  • 14 beta releases in 0.21.x series
  • 19 releases in 0.22.x series
  • 11 releases in 0.23.x series (current)
  • 500+ commits between versions
  • Multiple Flutter version support: 3.13.x - 3.38.x

Recent Highlights (0.23.10)

The latest release focuses on Canvas 2D API completeness and licensing clarity:

  • Canvas 2D: ImageData, hit-testing, line dashes, shadows, compositing
  • ImageBitmap support in bridge
  • Animation/prerendering fixes
  • iOS logging improvements

0.16.3

30 Dec 14:04

Choose a tag to compare

This version supports Flutter 3.27.x, 3.24.x, 3.22.x, 3.19.x, 3.16.x, and 3.13.x.

Features

  • Optimize Dart/C++ FFI performance in multiple thread mode. #654
  • Change viewport css property value automatically when app metrics changed. #655
  • Optimize listview performance. #669
  • Full support of CanvasContext2D.Path2D. #684
  • Add WebFChildNodeSize widget. #690
  • Add console.inspect() API for inspecting JavaScript Objects. #691
  • Using std::atomic value types for disposed checks of NativeBindingObject. #699
  • Upgrade intl deps to 0.19.0. #701

Bug Fixed

  • Fix dart type error when attach flex layout underneath of Flutter ListView. #650
  • Fix crash when clear ui commands without commands. #651
  • Fix onClick events respond very slowly on React 18. #665
  • Fix negative percentage translate in positioned elements. #680
  • Fix ios simulator[arm64] build. #681
  • Fix globalToLocal coordinate conversion related to position fixed layout. #686
  • Rework inline cache handling. #688
  • Fix crash when add property maybe failed on build arguments. #689

Experimental Features

Rust/Native API

Have a Try

https://github.com/openwebf/webf/tree/main/webf/example/rust_builder/rust

Provides support for native plugin APIs and offers corresponding Rust bindings.

0.16.2

14 Aug 05:42
9a02698

Choose a tag to compare

This version supports Flutter 3.24.x, 3.22.x, 3.19.x, 3.16.x, and 3.13.x.

Features

  1. Add flutter 3.24.x support. #644

Bug Fixed

  1. Fix memory leaks in Flutter engineGroup mode. #629
  2. Fix rendering order when change css display:none to block. #639

0.16.1

13 Jul 06:28
ed138d4

Choose a tag to compare

0.16.1

This version supports Flutter 3.22.x, 3.19.x, 3.16.x, and 3.13.x.

Features

  1. Add support for AbortController JS API. #606
  2. Add flutter 3.22.x support. #624

Bug Fixed

  1. Fix iOS FontFamilyFallback on -apple-system style, display error on Vietnamese lang. #609
  2. Fix crash with unexpected format string on window.btoa API. #615; #616

0.16.0

01 May 16:33

Choose a tag to compare

This version supports Flutter 3.19.x, 3.16.x, and 3.13.x.

A version compatible with Flutter 3.10.x landed in 0.15.2.
A version compatible with Flutter 3.7.x landed in 0.14.4.

Architecture Upgrade

The JavaScript Runtime has now migrated to a dedicated thread and is enabled by default in this version.

For users who want to keep the single-threading mode the same as in the previous version, use the following configuration:

WebFController(
  context,
  runningThread: FlutterUIThread(),
);

Big News

  1. Added PreRendering and Preload loading modes, which can save up to 90% of loading time.
    Click here for more details.

Features

  1. Support preloadedBundles in WebF. #500
  2. Add pre-rendering and persistent rendering modes. #501
  3. Optimize the evaluate times at the first time. #503
  4. Add MutationObserver API support. #508
  5. Add Dedicated Threading support. #512
  6. Optimize raster performance on Animated images. #513
  7. Turn off quickjs GC at page loading phase. #515
  8. Optimization matrix algorithm. #516
  9. Support override default contentType for WebFBundle. #534
  10. Support dns-prefetch. #535
  11. Add more SVG tags. #543
  12. Optimize MutationObserver performance. #545
  13. QuickJS add property inline cache. #546
  14. Optimize paint and add profile records. #547
  15. Pause the activity of webf when app visibility changed. #549
  16. Optimize bytecode cache load speed and fix http cache. #552
  17. Add Element.parentElement support. #555
  18. Add repaintBoundary for animated images when using css background-images #557
  19. Add support for hash router #572
  20. Add support for object event listener. #575
  21. Optimize performance for recalculate styles #579

Bug Fixed

  1. Fix class selector not match on html element. #490
  2. Fix concurrent modification during iteration. #491
  3. Fix JavaScript stack overflow error when print Proxy object. #493
  4. Fix borderXxxRadius transition. #495
  5. Avoid Hive.init cause conflicts with box paths. #504
  6. Fix assertion error when change display in input element. #505
  7. Fix lenght variable issue. #510
  8. Fix transform value not updated in percentage when box size changed. #514
  9. Fix crashed due to trigger touch events to inaccessible dom elements. #517
  10. Fix crash due to init touchEvent from JS. #518
  11. Fix event.target still can be pointed by event after finalized by JavaScript GC. #519
  12. Fix flex-grow not work. #524
  13. Fix bg_image_update not update error. #526
  14. Fix text calculate constraints error. #527
  15. Fix min precision case some error and waste cpu. #528
  16. Fix sliver layout child boundingClientRect offset error. #530
  17. Fix build on ArchLinux. #536
  18. Fix devtool select img element. #538
  19. Fix ui command exec order in dedicated thread mode. #540
  20. Fix img gif work error. #541
  21. Fix request flutter to update frame when sync commands to dart. #548
  22. Fix textarea elements in ios/android can not auto unfocus. #551
  23. Fix crash when binding object had been released by GC. #553
  24. Fix windows platform crash with 0.16.0. #558
  25. Fix page load failed when using async attributes in <script /> elements. #561
  26. Fix dart element memory leaks when js gc collected. #563
  27. Fix crash on flutter engine dispose. #566
  28. Fix background-image disappear with multiple image links. #574
  29. Fix js log does not show in terrminal and devtools. #584
  30. Fix mem leaks caused by event dispatch. #585
  31. Fix input when resume apps #589
  32. Fix memory leak caused by img element #590
  33. Fix input elements or widget elements when preload or prerendering complete. #595
  34. Fix animation time resume. #597
  35. Fix invalid xcframework for ios release. #600

0.15.1

25 Sep 11:37

Choose a tag to compare

This version will support Flutter 3.10.x

Features

  1. Optimize location API for better performance results. #420
  2. Optimize the webf_bridge and quickjs binary size. #414
  3. Support CSS initial length value. #421
  4. Optimize Element.children() and Document.all() performance. #424
  5. Support element for svg. #475
  6. Add WebFController.onTitleChanged API. #479

Bug Fixed

  1. Fix percentage width and height not working under inline block box. #430
  2. Fix Node.insertBefore with SVGElement error. #431
  3. Fix cookie delete file error when it's not available. #429
  4. Fix use css vars with initial. 1da2e58
    0.15.0-beta.3
  5. Fix toggle position: fixed on bodyElement with other fixed elements. #416
  6. Fix css nth-child not work. #417
  7. Fix Node.childNodes didn't update when nodes changed. #419
  8. Fix loading fonts cause assertion when remove or attach RenderObjects. #425
  9. fix crash when reload pages. #476
  10. Fix memory leaks. #487

0.14.3

25 Sep 11:24
3f7a50a

Choose a tag to compare

0.14.3

This version will support Flutter 3.3.x ~ 3.7.x.

Features

  1. Optimize location API for better performance results. #420
  2. Optimize the webf_bridge and quickjs binary size. #414
  3. Support CSS initial length value. #421
  4. Optimize Element.children() and Document.all() performance. #424
  5. Support element for svg. #475
  6. Add WebFController.onTitleChanged API. #479

Bug Fixed

  1. Fix percentage width and height not working under inline block box. #430
  2. Fix Node.insertBefore with SVGElement error. #431
  3. Fix cookie delete file error when it's not available. #429
  4. Fix use css vars with initial. 1da2e58
    0.15.0-beta.3
  5. Fix toggle position: fixed on bodyElement with other fixed elements. #416
  6. Fix css nth-child not work. #417
  7. Fix Node.childNodes didn't update when nodes changed. #419
  8. Fix loading fonts cause assertion when remove or attach RenderObjects. #425
  9. fix crash when reload pages. #476
  10. Fix memory leaks. #487

0.15.0

06 Sep 14:04
99cef2b

Choose a tag to compare

This version will support Flutter 3.10.x

Break Changes

  1. Remove navigator.connection API. #411

Features

  1. Upgrade Flutter support to 3.10.x. #345
  2. Optimize location API for better performance results. #420
  3. Optimize the size of webf_bridge.xcframework and quickjs.xcframework. #414
  4. Support CSS initial length value. #421
  5. Optimize Element.children() and Document.all() performance. #424
  6. Support base64 format font data in @font-face src. #399
  7. Support Element.dir API. #418
  8. Add <circle /> and <ellipse> tags for SVG. #423
  9. Support share customized JS properties in event object. #427
  10. Support window.pageXOffset and window.pageYOffset API. https://github.com/openwebf/webf/pull/428/files
  11. Optimize layout/paint performance when block box size is fixed. #450
  12. Optimize performance when update Element.className. #452
  13. Support CanvasRenderingContext2D.createPattern() API. #464

Bug Fixed

  1. Fix use css vars with initial. #421
  2. Fix toggle position: fixed on bodyElement with other fixed elements. #416
  3. Fss nth-child not work. #417
  4. Fix Node.childNodes didn't update when nodes changed. #419
  5. Fix loading fonts cause assertion when remove or attach RenderObjects. #425
  6. Fix percentage width and height not working under inline block box. #430
  7. Fix Node.insertBefore with SVGElement error. #431
  8. Fix cookie delete file error when it's not available. #429
  9. Fix read ANDROID_SDK_HOME before implying to platform defaults. #422
  10. Fix cookie delete file error. #429
  11. Fix percentage width and height not working under inline block box. #430
  12. Fix Node.insertBefore with SVGElement error. #431
  13. Fix DevTool's network panel not working. #435
  14. Losen intl dependency constraint. #439
  15. Fix built-in methods in the event object cannot be overridden. #443
  16. Fix crash when touching pseduo elements. #445
  17. Fix event not responding when multiple flutter engine created. #451
  18. Fix Element.style.cssText API not works. #455
  19. Fix use-of-free crash of shared string property in event object. #458
  20. Fix dynamic build items in WidgetElement. #461
  21. Fix CSS content property have sequences of unicode chars. #463
  22. Fix crash when create unsupported svg element with style. #465