Releases: openwebf/webf
0.24.2
Major Features
- CSS Grid (Level 2): add
subgridsupport forgrid-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 publishedwebf_easy_refresh.
0.24.1
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):
CSSStyleSheetandCSSRuleListsupport. - Blink engine DOM:
querySelector/querySelectorAllfallback whenWebFController(enableBlink: true). - JS โ Dart bindings: shared binding objects and passing JS function values as parameters.
- CSS Positioning:
insetshorthand 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: inheritto resolve to the parentโs computed weight. - Tooling/Examples: fix example build and websocket showcase; improve Vue UI generator/templates.
0.24.0
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: gridanddisplay: inline-gridgrid-template-columns,grid-template-rowswithfr,minmax(),fit-content(),repeat(),auto-fill,auto-fitgrid-template-areasfor named grid regionsgrid-auto-rows,grid-auto-columnsfor implicit track sizinggrid-auto-flowwithrow,column,densevaluesrow-gap,column-gap,gap(with percentage support)align-content,justify-content,place-contentalign-items,justify-items,place-items
Grid Item Properties
grid-column-start,grid-column-end,grid-columngrid-row-start,grid-row-end,grid-rowgrid-areafor named area placementalign-self,justify-self,place-self- Support for line numbers (positive/negative), named lines, and
spankeyword
Track Sizing Functions & Keywords
- Intrinsic sizing:
min-content,max-content,fit-content() - Fractional units:
frwith proper space distribution minmax(min, max)for flexible track sizingrepeat(count, tracks)andrepeat(auto-fill/auto-fit, tracks)- Percentage, fixed lengths, and
autosizing
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
maybePopAPI behavior - Prevent unexpected disposal of RouterView when mounting
- Use
go_routerfor more robust routing in the examples - Added dynamic router support in
@openwebf/react-router - Fixed viewport resizing
- Fixed Hybrid Router
-
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 indexWebFController.enableBlink: Flag to enable Blink CSS engine (opt-in)
0.23.13
0.23.12
- 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_mathto^2.2.0.
- Dependencies: bump
0.23.11
- 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, andgrid/grid-template/place-*
shorthands. - DOM/Bridge: complete the
IntersectionObserverAPI (includingIntersectionObserverEntry) and add v2
properties for richer visibility tracking. - Accessibility: improve semantics for overflow scrolling containers, add ListView a11y coverage, and support
menubar/menuitemroles.
- CSS Grid: enable grid layout by default and expand support for track sizing and placement, including
- 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.
- Grid: fix auto-placement and sizing edge cases (reverse line ranges,
0.16.3 ~ 0.23.10
๐ Licensing
GPL-3.0
- Updated all license headers
- Clear GPL-3.0 indication in package metadata
- Docs updated for licensing clarity
๐ฏ Major Feature Categories
- 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
- 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
- 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)
- 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
- 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
- Accessibility (0.23.9)
- Semantics tree integration
- ARIA attributes support (aria-pressed)
- Multiple element types (, email inputs)
- Heading levels and semantic flags
- 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
- 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)
- 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)
- 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
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
0.16.1
0.16.1
This version supports Flutter 3.22.x, 3.19.x, 3.16.x, and 3.13.x.
Features
Bug Fixed