Skip to content

Releases: openwebf/webf

0.24.2

07 Jan 13:04
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • CSS Grid (Level 2): add subgrid support for grid-template-columns / grid-template-rows (track/gap inheritance, alignment, placement, named lines, and intrinsic sizing).

Bug Fixes

  • CSS Grid/Subgrid: fix implicit-column width expansion, subgrid column widths, intrinsic sizing, and row sizing/layout.
  • Scrolling/Semantics: fix scroll controller null cases for scrollable elements and improve overflow scroll semantics compatibility.

Compatibility

  • Support Flutter SDK >=3.27.0.
  • Replace vendored easy_refresh (path dependency + submodule) with published webf_easy_refresh.

0.24.1

06 Jan 08:07
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • CSS Grid: expanded spec coverage + fixes (out-of-flow positioning, z-index/offset behavior, percent/calc track & gap resolution, scroll support), with more WPT-based tests & snapshots (Phases 6โ€“8).
  • CSSOM (Blink engine): CSSStyleSheet and CSSRuleList support.
  • Blink engine DOM: querySelector/querySelectorAll fallback when WebFController(enableBlink: true).
  • JS โ†” Dart bindings: shared binding objects and passing JS function values as parameters.
  • CSS Positioning: inset shorthand support.

Performance Improvements

  • Images: load and decode images during prerendering.

Bug Fixes

  • Bridge: avoid UAF in StyleEngine author sheet registry.
  • Layout/Rendering: fix duplicated-element constraints, initial-route layout errors, empty-text constraint errors, and a viewport null edge case.
  • Typography: fix font-weight: inherit to resolve to the parentโ€™s computed weight.
  • Tooling/Examples: fix example build and websocket showcase; improve Vue UI generator/templates.

0.24.0

29 Dec 11:19
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Set the minimal flutter version requirement to 3.29.x

Major Features

  • Blink CSS Engine Integration (#773, #779)

    • New experimental C++-based CSS engine as the future replacement for the Dart-based CSS engine
    • Architecture Benefits:
      • CSS processing moved to JS thread (C++) instead of UI thread (Dart)
      • Better thread separation: style computation doesn't block UI rendering
      • Sends computed styles to Dart as inline styles for final rendering
    • Lower Maintenance for Future CSS Support:
      • Leverages Chromium's Blink CSS implementation directly
      • New CSS features can be added by following Blink's proven approach
      • Reduced effort to maintain standards compliance
    • Performance Improvements (ongoing optimization):
      • Faster invalidation system: conservative yet efficient style recalculation
      • Property/value IDs and static strings reduce allocations
      • Optimized rule matching and diff-based style updates
    • Currently opt-in for testing: WebFController(enableBlink: true)
    • Feature parity with Dart engine maintained
  • CSS Grid Layout - Complete Implementation (#775, #778)

    Grid Container Properties

    • display: grid and display: inline-grid
    • grid-template-columns, grid-template-rows with fr, minmax(), fit-content(), repeat(), auto-fill, auto-fit
    • grid-template-areas for named grid regions
    • grid-auto-rows, grid-auto-columns for implicit track sizing
    • grid-auto-flow with row, column, dense values
    • row-gap, column-gap, gap (with percentage support)
    • align-content, justify-content, place-content
    • align-items, justify-items, place-items

    Grid Item Properties

    • grid-column-start, grid-column-end, grid-column
    • grid-row-start, grid-row-end, grid-row
    • grid-area for named area placement
    • align-self, justify-self, place-self
    • Support for line numbers (positive/negative), named lines, and span keyword

    Track Sizing Functions & Keywords

    • Intrinsic sizing: min-content, max-content, fit-content()
    • Fractional units: fr with proper space distribution
    • minmax(min, max) for flexible track sizing
    • repeat(count, tracks) and repeat(auto-fill/auto-fit, tracks)
    • Percentage, fixed lengths, and auto sizing

    Features

    • Named grid lines and implicit area line names (<area>-start, <area>-end)
    • Auto-placement algorithm with sparse and dense packing
    • Multi-track spanning
    • Baseline and last-baseline alignment
    • Safe and unsafe alignment keywords
    • Auto-margins for grid items
    • Writing-mode support
    • Aspect-ratio preservation
    • Nested grids
    • Hit testing with elementFromPoint()
    • Full getComputedStyle() support

    100+ integration tests based on Web Platform Tests

Performance Improvements

  • Style Calculation Optimization (#777, #779)
    • VSync-driven style recalculation: synchronized with display refresh rate

Bug Fixes

  • Layout & Rendering

    • Flexbox: Fixed relayout behavior when changing alignment properties
    • z-index: Paint negative z-index elements under background correctly
  • Router & Navigation

    • Fixed Hybrid Router maybePop API behavior
    • Prevent unexpected disposal of RouterView when mounting
    • Use go_router for more robust routing in the examples
    • Added dynamic router support in @openwebf/react-router
    • Fixed viewport resizing
  • Images & Assets

    • Fixed GIF and data URI SVG image loading
    • Fixed Tailwind CSS gradient with empty position values
    • Improved image codec disposal resilience

API Changes

  • New APIs
    • Element.scrollByIndex(): Scroll ListView to specific index
    • WebFController.enableBlink: Flag to enable Blink CSS engine (opt-in)

0.23.13

21 Dec 10:37
c8d0447

Choose a tag to compare

  • Compatibility
    • Set the minimal Flutter version requirement to 3.29.x.
  • Breaking
    • Remove the built-in FlutterForm/FlutterFormField elements (and their generated bindings) and stop exporting flutter_form.dart.

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