webf 0.23.12 copy "webf: ^0.23.12" to clipboard
webf: ^0.23.12 copied to clipboard

W3C standards-compliant web rendering engine based on Flutter, allowing web applications to run natively on Flutter.

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_math to ^2.2.0.

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, 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.23.10 #

  • Features
    • Canvas 2D: add ImageData APIs (getImageData/putImageData), hit‑testing helpers ( isPointInPath/isPointInStroke), line dashes (with dash offset), shadow offsets, and global compositing/alpha support to bring the 2D context closer to modern browser behavior.
    • Bridge/runtime: add ImageBitmap support and improve union type handling in the C++ bridge so more web APIs and image flows can be wired through efficiently.
  • Fixed
    • Canvas: honor Path2D line dash offset, clip CanvasPattern stroke styles correctly to the stroked region, and optimize 2D context command batching for smoother rendering under heavy draw workloads.
    • Animation/prerendering: fix an issue where animations could remain incorrectly paused when pages were prerendered.
    • Filters: improve CSS filter effects and back them with additional tests for better visual fidelity.
    • Platform: fix iOS logging header configuration and clean up minor spec/test mismatches.
  • Docs & Chore
    • Licensing: update the package metadata and docs to clearly indicate GPL‑3.0 licensing.

0.23.9 #

  • Features

    • Runtime/Platform: add forceLoad options to force-loading named controllers and introduce a semantic debug flag for targeted troubleshooting.
  • Fixed

    • Layout/Rendering: stabilize CSS grid sizing and baselines, keep grid height stable when rows span, clamp widget list view height to the viewport, fix flexbox sizing regressions, and prevent popup modal crashes from renderViewport access.
    • CSS/Animations: smooth single-keyframe opacity animations, support box-shadow transitions, avoid mutating cached transform arguments, preserve inherited values when properties are removed, fix var-driven background-color transitions, and resolve absolutely positioned percentage heights against the padding box.
    • Accessibility semantics: correct semantics labels and positions, align default styles and snapshots for inputs/buttons, and clean up flaky timing in accessibility tests.
  • Chore

    • Upgrade dependencies for Flutter 3.38.x compatibility
  • Experiment

    • CSS Grid: add initial grid layout support with explicit track parsing (px/%/fr), MVP layout across explicit columns, auto-placement scaffolding, and grid-auto-flow/gridAutoFlow configuration exposed to JavaScript.
    • Accessibility: wire more elements into the semantics tree (including <nav> and email inputs), add aria-pressed, headingLevel, explicitChildNodes, and new diagnostics flags to debug semantics behavior.

0.23.8+2 #

fix: resync impls from main

0.23.8+1 #

fix: fix mismatched root viewport box when switch pages.

0.23.8 #

  • Features

    • Add hybridHistory.buildContextStack() API to expose the navigation context stack from the bridge to Dart/Flutter.
  • Fixed

    • CSS positioning: align absolute-positioned element sizing under flex containers for more predictable widget and flex layout behavior.
    • Widgets/layout: clamp WebFWidgetElementChild width under flex to respect container constraints and avoid overflow.
    • Routing/layout: fix layout errors that could occur when replacing the root route.
    • Custom elements/bindings: ensure certain widget element binding properties are correctly wired between bridge and Dart.

0.23.7 #

  • Highlights

    • Improved absolute positioning correctness, widget layout integration, and inline formatting performance for self-owned elements.
    • Simplified inline formatting context with new profiling hooks and reduced noisy layout logs.
  • Fixed

    • CSS positioning: align absolute-positioned element sizing and auto-height resolution with spec; fix sizing in flex overlay scenarios.
    • Widgets/layout: respect widget child constraints for flex popups; honor CSS width for widgets; fix maxHeight constraints for custom elements.
  • Performance

    • Optimize the performance of self-owned elements and inline formatting context.

0.23.6+1 #

  • Fixed

    • webf/rendering: align RenderTextBox painting to its size; add guarded layout/paint logs.
  • Chore

    • Add annotations for WebFSubView.
    • Remove macOS prebuilt dynamic libs from repo.

0.23.6 #

Highlights

  • Backgrounds and gradients fidelity and layering: robust layered background parsing with per-layer size/position, calc() support, correct paint order, and viewport-fixed/background-origin/clip behavior; improved radial/conic prelude parsing and repeating-linear/-radial normalization.
  • Var-driven transitions and transforms: browser-aligned triggering and coalescing, deep var chain expansion, color interpolation in premultiplied linear sRGB, and correct transform var() resolution with snapshot-based interpolation.
  • New CSS APIs: aspect-ratio property and clamp() functional notation.
  • Rendering/layout: per-side solid borders with non-uniform border-radius; vertical-align super/sub and /; flexbox positive free space suppression for indefinite main-size.
  • Stability and platform: multiple bridge threading guards; iOS bundle packaging fix.

Features

  • CSS: support aspect-ratio property.
  • CSS Values: implement clamp() functional notation for lengths.
  • Rendering: paint per-side solid borders with non-uniform border-radius.

Fixed

  • Backgrounds/Gradients

    • Parse radial-gradient prelude and position (including ellipse, at <position>), and include the first color stop when it starts with a color or var(...).
    • Parse conic-gradient at position keywords.
    • Normalize repeating-linear/-radial stops to a single cycle and derive pixel period for shader tiling.
    • Respect background-attachment: fixed (anchor to viewport) and per-layer attachment; maintain layer paint order for images and gradients.
    • Position via background-origin and clip by background-clip (e.g., content-box).
    • Support 3–4 token background-position, accept calc() tokens per axis, and stabilize computed pixel serialization.
    • Preserve background-size: auto intrinsic size and resolve per-layer size for px-stop normalization.
    • Resolve layered shorthand without crashing; robust multi-image handling with per-layer position/size.
  • Transitions/Vars/Transforms

    • Defer var-driven style updates to end-of-frame; treat as transitioning only when duration > 0.
    • Prefer concrete previous values when coalescing; restrict fallback previous to colors only.
    • Interpolate colors in premultiplied linear sRGB for browser-like midpoints.
    • Deep var() chain expansion with overrides for correct previous resolution.
    • Trim transform() args before var() parsing; resolve transform var() correctly.
    • Freeze begin/end transform matrices at transition start and interpolate snapshots; only freeze when no percentage or var() is present so % transforms still track layout.
  • Rendering/Layout/Text

    • Correct background layering order; animate background-position/size during transitions.
    • Support <sub>/<sup> and vertical-align: super|sub; avoid baseline placeholder crash.
    • Flexbox: do not synthesize positive free space from automatic min main-size when container main size is indefinite.
    • Borders: dashed/rounded combinations fixed; remove stale inner reference in non-uniform border logs.
  • Selectors

    • Exclude pseudo-only selectors from matching base elements in grouped selectors; keep *,::before,::after working by matching * explicitly.
  • CSS Values/Size

    • Support width: fit-content(<length-percentage>) via width:auto + max-width mapping.
  • Bridge/Platform

    • Make forbidden-scope counters thread_local to prevent cross-thread imbalance.
    • Guard PostToDartSync from double invocation and harden pending task tracking.
    • Prevent concurrent mutation crash in Dispatcher::Dispose.

0.23.5 #

Highlights

  • Robust var-driven CSS transitions and transform behavior: canonicalized shorthand handling, alias var() previous-value tracking, coalesced transform transitions, and consistent same-frame scheduling for multiple properties.
  • CSS animations and timeline stability: parse combined keyframe selectors, resume view animation timeline on attach, and improved debugging/trace logs.
  • Feature: add Flutter intrinsic size support for custom elements.
  • Stability and correctness fixes for percent-based transitions, background layering, gradients, and color-scheme driven CSS variable updates.
  • Build and release hygiene: fix CMake build and add compressed debug symbols for previous release.

Features

  • Add intrinsic size support for custom elements

Fixed

  • Transitions/Animations (webf/css)
    • Reset style on cancel and clear transform cache when transition config changes; cancel running transitions instead of finishing.
    • Schedule all property transitions in the same frame (not first-only) for consistency.
    • Canonicalize var-driven transition config and honor shorthand mappings (background-position, border-*, border-radius, padding, margin).
    • Correct percent-based transition resolution and background layering.
    • Coalesce transform transitions and parse scale decimals correctly.
    • Resolve var() inside transform() arguments using raw custom property value.
    • Parse combined keyframe selectors and ensure offset-sorted segments.
  • CSS Variables
    • Capture alias previous values for var() to enable correct var-driven transitions.
    • Improve robustness of var() expansion and border var() handling.
    • Correct CSS variable updates for hsl() on color-scheme changes.
  • Rendering/Painting
    • Refresh box decoration on size changes so percentage border-radius updates with width/height transitions.

0.23.4 #

CSS performance overhaul, diagnostics, and reliability fixes

  • Measured impact: recalcMs ↓ 209ms → 32ms (~84.7% reduction), flushMs ↓ ~203ms → ~25ms (~87.8% reduction); recalc calls ↓ ~37% (462 → 292); dirtyTotal ↓ 45 → 26; rootCount ↓ 5 → 2.

Performance #

  • Enable CSS batching by default (batch recalc, stylesheet batching, 32ms debounce) with counters for deferred/flush events.
  • Targeted invalidation via id/class/attr indices; suppress root-wide dirties from head/html churn; flattened @import handling.
  • Index selectors by rightmost compound; reuse SelectorEvaluator; enable memoization and ancestry fast-path by default.

Fixes #

  • Parsing/layout: tolerate whitespace in calc(); guard null parentRenderStyle in flex-basis computation; sync image sizing and viewport background.

0.23.3 #

DevTools/CDP coverage, CSS APIs, SVG refactor, stability fixes

Highlights #

  • DevTools: significantly expanded Chrome DevTools Protocol coverage across DOM, CSS, Overlay, Page, Network, and Log modules with robust node events and editing flows.
  • CSS APIs: new CSS.createStyleSheet, CSS.forcePseudoState, and CSS.resolveValues to resolve property values in a node context.
  • Runtime: upgrade QuickJS to the latest release and add queueMicrotask on the global scope.
  • Layout/Rendering: correctness fixes in flexbox (single-line cross-size), absolute positioning width resolution, and background-position animations; improved selector correctness and calc() parsing.
  • SVG: remove legacy in-engine SVG implementation and integrate flutter_svg for the <svg> element.

Features #

  • DevTools (CDP)
    • DOM: describeNode, requestNode, querySelector, querySelectorAll, moveTo, setNodeName, removeNode, removeAttribute, setAttributeValue (bridge emits attributeModified), setChildNodes seeding; node highlight helpers highlightNode, hideHighlight, highlightRect.
    • Events: DOM.attributeModified/DOM.attributeRemoved, DOM.characterDataModified, DOM.childNodeCountUpdated.
    • CSS: addRule for inline <style> sheets and collectClassNames.
    • CSS tracking: trackComputedStyleUpdates/takeComputedStyleUpdates to unblock Styles panel.
  • Runtime/Bridge
    • Add queueMicrotask to the global scope.
    • Upgrade QuickJS engine to latest release.
  • DOM/HTML
    • HTMLLinkElement.relList property support.

Fixes #

  • CSS
    • Correctly parse nested calc() sums by stopping at the closing parenthesis.
    • Selector correctness: compound descendant matching, :root of-type pseudos, pseudo-function text, and invalid attribute name handling.
    • Vendor-prefixed transform keys on Element.style now return undefined (spec compliance).
  • Layout/Rendering (webf)
    • Flexbox: for single-line flex containers with a definite cross-size, use container inner cross-size (fixes header height/alignment issues); subtract margins in cross-axis sizing.
    • Absolute positioning: resolve width with left+right from containing block constraints to avoid feedback loops and ensure coverage.
    • Backgrounds: preserve animated background-position in computed style and add X/Y animation handlers; honor layered gradient size/position and clip to border-radius.
    • Text/Inline: implement word-break: break-all wrapping; anchors are inline by default.
    • Crash: prevent RenderBox cast crash in getBoundingClientRect.
  • DOM/Parser
    • Fragment parsing preserves whitespace and comment nodes; fix missing <!> anchor that broke dynamic insertion.
    • document.createElementNS third-parameter compatibility.
  • Runtime/Modules
    • Fix ES Module leaks and ensure requestAnimationFrame/cancelAnimationFrame are own properties on the global object.
  • DevTools (CDP)
    • Improve Styles panel responsiveness via computed style tracking.
    • Ensure text nodes appear correctly; avoid duplicate insertions; correct inline stylesheet IDs (now String) and support inline:<nodeId> in CSS.setStyleTexts.

0.23.2 #

Next‑gen text layout/rendering and CSS feature upgrades

Highlights #

  • New pseudo‑elements: ::first-line and ::first-letter with correct range computation and per‑range overrides.
  • Text transforms: none/capitalize/uppercase/lowercase applied during text collection with proper word boundary handling (incl. NBSP and ampersand cases).
  • Gradient text: background-clip:text for inline content with per‑line glyph masking; robust gradient color-stop parsing (incl. hsl()/hsla()).
  • Units and metrics: support for ex unit and improvements to % for text-indent; avoid recursion for ex‑based font-size and resolve against parent.
  • Line height behavior: inherit percentage line-height as used px to stabilize nested spacing while preserving unitless multipliers.
  • Text decoration: multiple line values supported and correct propagation to descendants; default color resolves to currentColor.
  • Layout correctness: fixes for block‑in‑inline line breaking/merging, CJK shrink in inline‑flex, align-items:center using margin-box on cross‑axis.
  • Stacking context: implement z-index ordering and paint phases across positioned/stacking elements; covered by new integration specs.
  • URL resolution: @import handling with correct URL resolution for CSS.

Features #

  • Full support of inline box model
  • Add RTL (right-to-left) text direction support
  • Implement W3C-compliant whitespace processing with language-aware segment breaks
  • Add place-items shorthand and flex-safe semantics
  • Support @import with correct URL resolution
  • Add text-transform (none/capitalize/uppercase/lowercase) with collection-time application and tests
  • Support ex unit; apply to text-indent; add tests for ex and %
  • Add ::first-line pseudo-element support
  • Add ::first-letter pseudo-element support
  • Add support for element
  • Support inline background-clip:text with per-line glyph masking
  • Add list-style-type support for LI (decimal/alpha/roman)
  • Support displaying SVG via [] and CSS background-image
  • tooling: enhance snapshot comparator and Chrome runner
  • Add stacking contexts and z-index ordering support
  • Optimize font-face loading

Fixes #

  • Fix: make document.currentScript null in microtasks and modules
  • Fix: align pre tabs with tab-size; adjust flex-basis tests
  • Fix: freeze inherited percentage line-height to px to prevent nested spacing
  • Fix: handle hsl/hsla stops in gradients for background-clip:text
  • Fix: honor dir attribute and keep gradient text visible

0.23.1 #

Features #

  • Build System:

    • Support for building Android x86_64 target for emulator support
    • Add Windows builds using MSYS2 with full CI/CD pipeline
  • DevTools:

    • Major improvements to Chrome DevTools Protocol integration
    • Add debugging context for better state management
    • Enhanced network, DOM, and CSS debugging capabilities
    • Improved log and overlay module functionality
  • Platform Support:

    • Full Windows/WSL platform support

Fixes #

  • Memory Management:

    • Fix malloc/free mismatch in Windows release builds
    • Fix double free issues with NativeBindingObject om Windows Platform
    • Fix null pointer dereference in Element::SetInlineStyleFromString
    • Improve memory handling for touch events in Windows Platform
    • Fix pre-defined atomic strings being optimized by compiler
  • Build System:

    • Fix Android build with proper library dependencies
    • Fix Windows executable path resolution
    • Fix Linux build dependencies and integration tests
    • Fix release stripping on Windows builds
    • Make webf unit tests always compile correctly
  • Rendering:

    • Fix router link element intrinsic height behavior
    • Support dynamic viewport size changes
    • Fix image dispose exceptions
  • Input & Forms:

    • Fix click input immediately unfocusing issue
    • Fix FormData missing chunks when sending with stream
    • Restore original FormData implementation from v0.22.7+2
  • Module System:

    • Fix custom module retrieval from invokeModule
    • Fix WebF.defineModule cannot override built-in modules
  • Testing:

    • Make integration tests support Linux and WSL environments
    • Fix unit test execution on Windows
    • Fix blob constructor specs
    • Fix touch event crashes in tests
    • Pass all snapshot comparisons on Windows
  • Platform Specific:

    • Fix Windows toNativeString issues
    • Enable HTTP cache on Windows platform
    • Fix screen API not responding to WebF viewport size
    • Fix Flutter viewport display size detection

0.23.0+1 #

Fix android build from source.

0.23.0 #

Features #

  • Android Support: Add support for Android 16KB page size compatibility.
  • Input Elements: Enhanced input field functionality:
    • Set default border and height for input fields
    • Add minimum width for input elements
    • Support normal input dimensions with proper sizing
  • Form Controls: Enhance radio and checkbox functionality with programmatic state changes.
  • Testing Infrastructure:
    • Add comprehensive integration test tools
    • Add integration test comparison tools with Chrome
    • Add multiple new integration tests for overlay, inline-block, and input sizing
  • Open Source: Move npm packages and modules to open source repository.
  • String Performance: Replace std::string with WebF String for better performance.
  • Gesture: Add Flutter gesture detector component support.

Fixes #

  • Rendering: Fix export images issue when renderObject is not painted.
  • Routing:
    • Revert timeout for resolve entrypoint
    • Fix onBuildSuccess with route entry
    • Increase wait times for hybrid route loaded
  • Networking: Filter extra WebF headers from HTTP requests.
  • Memory Management:
    • Improve memory handling for JSValue in ScriptValue and event arguments
    • Correct memory allocation size and pointer casting in interface template
    • Handle duplicate atom entries in value cache
    • Ensure proper memory cleanup in devtools object properties
  • ListView: Fix ListView footer reset issue.
  • Input Elements:
    • Fix input element size with line-height and font size
    • Preserve text selection when updating input value
    • Update input dimensions and optimize type setting logic
    • Fix input dimension issues
  • Checkbox/Radio: Fix set checked functionality in checkbox and radio elements.
  • Textarea: Enable textarea and fix all related specs.
  • Layout:
    • Fix images with width: auto and max-width constraints to use natural size correctly
    • Fix absolute child offset calculations
    • Fix flex item auto size with min-width value
    • Fix inline-block layout issues
    • Honor explicit CSS height in RenderWidget for flex contexts
    • Constraints: Safe way to read constraint values to prevent exceptions.
  • Cache: **Fix cache invalidation and clear functionality.
  • Timer: Fix timer API not firing when detached from Flutter.
  • UI Sync: Sync UI changes from detached stage to the DOM tree.
  • URL Processing: Correct variable types in URL processing to resolve compiler warnings.
  • String Handling: Fix buffer overflow in KURL::Init and infinite recursion in String::FromUTF8.
  • Tests:**
    • Fix Flutter unit test failures
    • Fix integration test failures
    • Fix DOM test specs
    • Update input and textarea snapshots
  • Performance: Fix LCP visible area reporting and renderCheck validations.

Refactoring #

  • Code Cleanup:
    • Remove deprecated registerWith method from WebFPlugin
    • Cleanup logs throughout the codebase
    • Cleanup WebF String API
    • Fix broken symbol links
  • Gesture System: Refactor Flutter gesture detector and update bindings.
  • Input Handling: Improve input field padding and dimension handling.

Infrastructure #

  • Build: Set architecture to arm64 only for macOS builds.
  • CLI: Avoid overriding index.ts from packages when it exists.
  • Examples: Fix example build issues and add checkbox example page.

0.23.0-beta.3 #

Features #

  • DevTools: improve Chrome DevTools Protocol (CDP) service stability.

Fixes #

  • Layout: fix flexbox layout issue where flex items with percentage max-width were incorrectly expanding.
  • DOM: fix checked not work in checkbox/radio.
  • DOM: fix HTMLCollection/children staleness after insertAdjacentElement('beforeend').
  • Bridge/C++: replace deprecated char_traits<unsigned char> usage with internal char_trait.
  • Bridge/C++: fix use-after-free in script_value_ref.cc.
  • Strings: correct SpaceSplitString::Data::CreateVector for Latin1 codec.
  • Build: resolve compilation breakages in recent changes.

0.23.0-beta.2 #

Features #

  • Flutter WidgetAdapter: optimized set-property performance of widget elements.
  • Scheduling: trigger requestAnimationFrame via UICommands for more predictable scheduling.
  • Runtime: show error page when route entrypoint is not found.
  • Bridge/Core: add CharacterVisitor utility for efficient string character handling.
  • Infra: remove legacy UI command implementations.
  • Infra: remove forced rebuild/layout for all view‑model property APIs.
  • WebF DevTools
    • Preview image contents in DevTools.
    • Replay past network requests when DevTools connects.
    • Report exception network status to CDP DevTools.

Fixes #

  • Network: removed waitsForConnectivity option on the Dio client to prevent hangs.
  • iOS: re‑generated symbol links to fix linking issues.
  • Bridge/Bindings: fixed ConvertPropertyNameToAttributeName encoding error.

Refactoring #

  • Text/Unicode: replaced UChar32 with UCharCodePoint for clarity; updated related methods and tests.

Breaking Changes #

  • Removed legacy UI command implementations.
  • Removed forced rebuild/layout paths for view‑model property APIs.

0.23.0-beta.1 #

Updated QuickJS to commit b3caa5634ec95beb5f49a912774b26d7c2474ced

Features #

  • Add core foundation implementations from Blink Source.

    • Migrated string implementations from a QuickJS-based AtomicString to a Blink-implemented string.
    • Temporarily disabled the unfinished CSS implementation feature. The current Dart CSS implementation remains functional.
    • Upgraded the minimum NDK version requirement from r22 to r27 (27.3.13750724).
  • Added document.currentScript support.

  • Added Element.insertAdjacentElement support.

  • Added support for the TextEncoder API.

  • WebF DevTools

    • Support multiple WebFController instances from a single Chrome DevTools service.
    • Support hybrid router in application preview.
  • Added support for the go_router Flutter package.

Fixed #

  • Fixed inline-flex container sizing so that gaps are only included in size calculations for display.
  • Corrected gap calculations in justify-content space distribution algorithms.
  • Fixed height calculation errors involving flex gaps and overflow.

0.22.8 #

Features #

  • Dio networking support with pluggable adapter and interceptors; backward‑compatible with existing HTTP interceptors
  • Use CupertinoHttp as the default http adapter for iOS/macOS platform.
  • Custom network options on WebFController (adapter selection, cache controls, logger options)
  • LoadingState records Fetch API request lifecycle for better diagnostics
  • Add hybrid router support in Chrome DevTools.

Fixes #

  • Removed global HTTP overrides to avoid unintended side effects
  • Corrected Dio request tracking and metrics collection
  • Android: ensured Cronet cache directory is created when needed in example
  • iOS: build fixes for recent changes
  • Fix the screen cast from chrome devtools.

0.22.7+2 #

Bug Fixed

reset LoadingState on controller detachFromFlutter

  • Call loadingState.reset() when WebFController detaches from Flutter
  • Ensures a clean slate per attachment and re-arms per-load once listeners

0.22.7+1 #

Features

  • LoadingState: once-only error listeners
  • Added onLoadingErrorOnce(types, callback, {debounce, perLoad})
  • Added onAnyLoadingErrorOnce(callback, {debounce, perLoad, types, grep, caseSensitive, invert})
  • Defaults to types {entrypoint, script, css, fetch}
  • Supports debounce coalescing and per-load rearming
  • Optional grep filter on URL/error to reduce noise
  • LoadingStateDump: greppable output
  • Added toStringFiltered({grep, caseSensitive, invert}) to filter dump lines

Example updates

• Use onAnyLoadingErrorOnce to dump once for entrypoint/script/css/fetch errors, debounced by 5s from first hit.

0.22.7 #

Features #

  • Added comprehensive loading error callbacks with typed error events (Bundle, Script, Network, Parse, Runtime)
  • Introduced LoadingStateDumpOptions for granular display control
  • Enhanced network request grouping by content type
  • Added preload mode support with Part I/Part II phase separation

Fixes #

  • Fixed LCP auto-finalization when marked as final
  • Resolved loading_state_dumper_test failures
  • Corrected network request timing calculations
  • Fixed networkDetailed option to only control timing display

Refactoring #

  • Renamed LoadingStateDumper to LoadingState for clarity

0.22.6 #

Overview #

This patch release brings Dart 3.0 compatibility and introduces a powerful event listener system for the LoadingStateDumper, enabling developers to monitor and react to WebF's loading lifecycle phases in real-time.

🚀 New Features #

Formatted String Output

The toString() method now provides a beautifully formatted table view with:

  • Summary Section: Total duration, phase count, errors, network requests, and script elements
  • Main Phases Table: Shows all loading phases with timing, elapsed time, and percentages
  • Network Requests Table: Detailed network activity with status, size, and timing
  • Script Elements Table: Script loading and execution details
  • Performance Metrics Section: Separate tables for paint metrics (FP, FCP, LCP)
  • Error Details: Clear error reporting with timestamps and stack traces

Example output:

╔══════════════════════════════════════════════════════════════════════════════╗
║                        WebFController Loading State Dump                      ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ Total Duration: 2.38s
║ Phases: 19
║ Network Requests: 5 (4 successful, 1 failed, 0 errors)
║ Total Network Time: 1.2s
║ Total Downloaded: 245.3KB
╚══════════════════════════════════════════════════════════════════════════════╝

JSON Export with toJson()

Enhanced toJson() method exports the complete loading state as structured data:

final dump = controller.dumpLoadingState();
final jsonData = dump.toJson();

// Access structured data
print(jsonData['summary']['totalDuration']); // 2380
print(jsonData['network']['successfulRequests']); // 4
print(jsonData['phases'][0]['name']); // "constructor"

JSON structure includes:

  • summary: High-level metrics and performance indicators
  • network: Network request statistics and totals
  • scripts: Script loading and execution statistics
  • phases: Detailed phase timeline with elapsed times
  • networkRequests: Complete network request details
  • scriptElements: Script element tracking data
  • errors: Error details with timestamps and stack traces

Event Listener System for LoadingStateDumper #

Added comprehensive event callbacks for all main loading phases, allowing developers to monitor the WebF loading process with precise timing information.

Available Event Listeners:

  • onConstructor() - WebF controller construction
  • onInit() - Initialization phase
  • onPreload() - Preloading resources
  • onResolveEntrypointStart/End() - Entry point resolution
  • onParseHTMLStart/End() - HTML parsing
  • onScriptQueue() - Script queuing
  • onScriptLoadStart/Complete() - Script loading
  • onScriptExecuteStart/Complete() - Script execution
  • onAttachToFlutter() - Flutter widget attachment
  • onDOMContentLoaded() - DOM ready state
  • onWindowLoad() - Window load complete
  • onBuildRootView() - Root view construction
  • onFirstPaint() - First paint (FP)
  • onFirstContentfulPaint() - First contentful paint (FCP)
  • onLargestContentfulPaint() - Largest contentful paint (LCP)

Usage Example:

controller.loadingStateDumper.onFirstPaint((event) {
  print('First Paint at ${event.elapsed.inMilliseconds}ms');
});

controller.loadingStateDumper.onLargestContentfulPaint((event) {
  final isFinal = event.parameters['isFinal'] ?? false;
  if (isFinal) {
    print('LCP finalized at ${event.elapsed.inMilliseconds}ms');
  }
});

Others #

  • Minimum SDK: Updated from Dart 2.18.0 to 3.0.0

0.22.5 #

Bug Fixes

  • Fixed exceptions when reporting LCP (Largest Contentful Paint) information on img elements. This ensures more reliable performance metric collection for image-heavy pages.
  • Removed the maxConnectionsPerHost limits for each HTTP client. This improvement allows for better concurrent connection handling and improved network performance, especially for applications making multiple simultaneous requests.

0.22.4 #

Bug Fixes

  • Fix event dispatcher to properly handle null event targets
  • Improve content verification with better error handling and logging
  • Update controller to handle verification exceptions gracefully

0.22.3+2 #

Fix compile error with Android NDK r22

0.22.3+1 #

Major Features Added

  1. 🔍 Loading State Dump API - A comprehensive debugging tool that tracks and visualizes the entire WebFController loading lifecycle:
    • Tracks 19+ lifecycle phases with detailed timing
    • Individual script element monitoring (load/execute times, errors)
    • Network request metrics
    • ASCII timeline visualization
    • Full API documentation and examples
  2. 📜 Enhanced Script Tracking - Individual script elements now report:
    • Loading phases (queue → load → execute)
    • Script types and loading modes
    • Execution duration and data sizes
    • Error states with context

Bug Fixes

  1. 🇨🇳 CJK Font Alignment - Fixed baseline alignment issues between CJK and Latin text:
    • Adjusted normalization ratio from 0.75/0.25 to 0.85/0.15
    • Added forced CJK ratio for consistent rendering
    • 10 new visual regression tests
  2. 🖼️ Image Loading Race Condition - Fixed images disappearing during widget mount/unmount:
    • Added pending update tracking
    • Deferred updates with next frame callback
    • Ensures reliable image display
  3. 🔄 Hybrid Router Events - Fixed multiple event triggers:
    • New addPostEventListenerOnce method
    • Auto-removes listeners after first execution
    • Prevents duplicate navigation events
  4. 📱 Android 16 Support - Temporarily disabled:
    • Commented out page size configuration
    • Downgraded NDK from 28.2 to 22.1

0.22.3 #

New Features #

Web Platform APIs #

  • TextEncoder/TextDecoder API - Full implementation of the WHATWG Encoding Standard

    • Support for UTF-8, ASCII, and Latin1 encodings
    • Fatal and non-fatal error modes
    • BOM (Byte Order Mark) handling
    • Comprehensive test coverage for edge cases
  • Web Streams API - Initial implementation for streaming data handling

  • URL API Enhancements

    • Added username and password properties with proper percent-encoding
    • Full compliance with WHATWG URL standard
  • Document API

    • Added document.currentScript property for accessing the currently executing script element
    • Shadow DOM polyfill with element.attachShadow() support

Framework Support #

  • Vite Vue Apps - Added support for Vue applications deployed on Vercel
  • Next.js - Fixed import issues and added example project

Platform Support #

  • Android 16 - Added support for Android 16 page size requirements

Bug Fixes #

Layout and Rendering #

  • Text Wrapping in Inline Elements

    • Fixed critical issue where inline elements (like <span>) inside parents with max-width were not wrapping text properly
    • Text now correctly respects parent width constraints
    • Special handling for flex items with flex: none
  • CJK Font Baseline Alignment

    • Normalized CJK (Chinese, Japanese, Korean) font metrics for proper baseline alignment with Latin text
    • Implemented interpolated normalization based on CJK content ratio
    • Ensures consistent vertical alignment in mixed-language content
  • getBoundingClientRect Improvements

    • Fixed offset values for elements in nested scroll views
    • Proper handling of elements in modal popups and separate render trees
    • Consistent viewport-relative coordinate calculation
  • Performance.measure() - Fixed timestamp parameter support

0.22.2+2 #

Bug Fixes #

  • Fix crash when elements in modal popups call getBoundingClientRect
  • Fix ScrollController.hasClients checks to prevent accessing position when not attached
  • Fix getBoundingClientRect to include scroll offset (excludeScrollOffset: false)
  • Add special handling for sticky positioned elements when calculating offsetTop/offsetLeft

0.22.2+1 #

Bug Fixes #

  • Router Event Ordering: Fixed an issue where router events could fire before onscreen events, ensuring proper event sequence for navigation handling
  • SVG Image Loading: Resolved SVG image loading failures that were preventing SVG assets from rendering correctly

0.22.2 #

Features #

CSS Flexbox Enhancements

  • Flex Gap Support: Implemented CSS flex gap property for better spacing control between flex items
  • Flex Order Support: Implemented CSS flex order property allowing flexible reordering of flex items

Navigation & UI Components

  • WebFSubView Widget: Added new widget for hybrid navigation support, enabling seamless integration of WebF views within Flutter navigation stacks
  • Enhanced Router Navigation: Ensure didPush/didPushNext events fire after widgets are onscreen
  • Showcase Screen: Added ShowcaseScreen and integrated it with WebFScreen for navigation in playground_app

Bug Fixes #

Critical Fixes

  • Text Layout: Fixed text constraints calculation in flex containers with percentage-based max-width values
  • Image Elements: Fixed dynamic style and DOM node updates for image elements, resolving loading and rendering issues

0.22.1 #

Bug Fixes #

Text and Layout #

  • CJK Text Alignment: Improved CJK text baseline alignment with Latin text for better international support
  • Text Wrapping: Fixed text wrapper behavior and max-width 50% text container height fitting
  • Flex Layout: Multiple fixes for flexbox layout including:
    • Fixed flex-basis and flex item layout size calculations
    • Resolved flex layout issues with text-only content
    • Fixed child constraints max height handling
    • Improved getConstraints to avoid unnecessary computeContentBoxLogic calculations
  • Fixed OnScreen/OffScreen Event Order: Corrected the dispatch order of visibility events to ensure consistent behavior

CSS and Positioning #

  • Fixed Positioning: CSS fixed positioning now returns correct getBoundingClientRect values
  • Border Rendering: Fixed dashed border detection logic in box decoration painter

Performance and Memory #

  • JS Thread Stack Size: Set JS thread max stack size to 8MB in debug mode for better debugging experience
  • Stack Size Adjustment: Adjusted max stack size for JSRuntime to prevent overflow issues
  • Event Ordering: Ensured consistent OnScreen/OffScreen event ordering during rapid switching

Platform-Specific #

  • iOS Compilation: Fixed iOS compilation issues
  • TypeScript: Resolved TypeScript compilation issues
  • Release Mode: Fixed content visible reporting in release mode

0.22.0 #

Features

WebF CLI Code Generator #

  • New powerful CLI tool for generating type-safe bindings between Flutter/Dart and JavaScript frameworks
  • Auto-creation of projects with interactive prompts
  • Support for React and Vue framework code generation
  • NPM publishing support with custom registry options
  • Automatic metadata synchronization from Flutter package's pubspec.yaml
  • TypeScript type alias support and improved union type handling

To use the new CLI code generator:

webf codegen [output-dir] --flutter-package-src=<path> [--framework=react|vue]

UI Command Ring Buffer System #

  • New ring buffer implementation for UI command system, improving performance
  • Configurable fallback to legacy UI command sync system
  • Enhanced memory management with reduced allocations
  • Better command batching and atomic operations

WebF DevTools Enhancements #

  • New Network panel with request/response inspection
  • JSON viewer for complex data structures
  • Routes tab for router state inspection
  • Enhanced object property inspection
  • Request body inspection and image preview support
  • Performance metrics display in DevTools
  • Improved error handling and memory leak fixes

Component Libraries #

  • New @openwebf/react-core-ui package for React components
  • New @openwebf/react-cupertino-ui package
  • Enhanced React Router integration with core UI components
  • Support for lazy rendering in core UI components

ES Module Support #

  • Added ES module support to WebF
  • Support for import.meta and import.meta.url
  • HTTP/HTTPS import support
  • Better module loading with error recovery

Others

  • Thread stack size increased to 8MB for JS workers

Bug Fixed

  • Fixed multiple memory leaks:
    • Date and RegExp objects in DevTools
    • Inline CSS style declaration native bindings
    • Event listener options
    • Widget element shapes
    • SharedNativeString in UI commands
  • Improved atomic_string memory safety
  • Fixed dashed border detection logic
  • Fixed flex layout issues with text-only content
  • Fixed loading display when init route link not ready
  • Support for table elements with configurable column sizes
  • Fixed table header scrolling in horizontal direction
  • Fixed ListView header/footer reset on refresh
  • Fixed event.target.value access from input elements
  • Fixed image object-fit position alignment
  • Fixed TypeScript compilation issues
  • Fixed OnScreen/OffScreen event ordering during rapid switching

0.21.8 #

Bug Fixes

Hybrid History Module #

  • Fixed null context handling - Prevents crashes when hybrid history methods are called before Flutter context is attached
    • Modified path() and state() methods in HybridHistoryDelegate to accept nullable BuildContext
    • Added null safety checks in HybridHistoryModule to handle cases where context is not yet available
    • Extracted getState() method for better code organization and null safety
    • Ensures path() and state() API methods can be safely called during initialization

0.21.7+2 #

Bug Fixes

Performance Metrics #

  • **Fixed isEvaluated parameter in performance callbacks
    • The isEvaluated parameter in onFP, onFCP, and onLCP callbacks now correctly reflects the controller's evaluated state when performance tracking started, rather than the current state when the callback fires
  • Performance Metrics: Fixed content visibility reporting in release mode, ensuring accurate performance metric callbacks (FCP/LCP) are triggered correctly in production builds

0.21.7+1 #

Bug Fixes

Content Verification Fix #

  • Fixed content verification to use the correct root render object (RenderViewportBox) instead of document.documentElement
  • This ensures that content detection works properly with WebF's rendering architecture
  • Affected methods:
    • ContentVerification.getContentInfoFromDocument()
    • ContentVerification.hasVisibleContentInDocument()
    • ContentVerification.getTotalVisibleContentArea()

0.21.7 #

New Features

Performance Metrics Enhancements

  • Added evaluate variable in performance metrics callbacks: Performance metric callbacks now include an evaluate parameter, providing more context for metric reporting in WebFController
  • Route-specific performance metrics tracking: Performance metrics (FP/FCP/LCP) are now tracked per route, allowing detailed performance analysis for multi-route applications
  • Contentful widget detection: Implemented intelligent detection system to ensure FCP/LCP are only reported for widgets with actual visual content, improving metric accuracy
  • First Contentful Paint (FCP) support: Added complete FCP implementation to track when the first contentful element is rendered
  • First Paint (FP) support: Added FP metric tracking for initial visual changes
  • Standalone content verification system: New system for verifying and validating content rendering

Improvements

HTTP Client Stability

  • Socket error handling: Added robust error handling for 'Bad file descriptor' socket errors with automatic recovery mechanism
  • Connection management: Configured HTTP client with optimized settings:
    • Idle timeout: 15 seconds to close stale connections
    • Connection timeout: 30 seconds
    • Max connections per host: 6
  • Stream error handling: Fixed 'Cannot add event after closing' errors in HTTP client
  • Cache reliability: Improved HTTP cache lock acquisition for better concurrency handling

DevTools Enhancements

  • Performance metrics display: Only attached controller's performance metrics are now shown in DevTools, reducing clutter
  • Unified metrics view: FP/FCP/LCP metrics are displayed in a unified, organized manner

Bug Fixes

  • Loading display: Fixed loading display issues when initial route link elements were not ready
  • Default initial route: Added proper default initial route handling
  • Text LCP calculation: Updated text LCP calculation to use actual text bounding box for more accurate measurements

Technical Details

  • Enhanced error recovery with detailed logging for debugging
  • Improved performance metric accuracy with content verification
  • Better multi-route application support with per-route metric tracking

0.21.6 #

New Features #

LCP (Largest Contentful Paint) Performance Metric #

WebF now supports tracking Largest Contentful Paint (LCP), one of Google's Core Web Vitals metrics. LCP measures the render time of the largest image or text block visible within the viewport, providing insights into perceived loading performance.

Features:

  • Progressive LCP tracking: Get real-time updates as larger content elements are rendered
  • Final LCP reporting: Receive the final LCP value when measurement is complete
  • Automatic finalization: LCP is finalized on user interaction, after 5 seconds, or on navigation
  • DevTools integration: View LCP metrics in the WebF DevTools performance panel

Usage:

// With WebFControllerManager (recommended)
await WebFControllerManager.instance.addWithPreload(
  name: 'my_page',
  createController: () => WebFController(
    onLCP: (time) => analytics.track('lcp', time),
    onLCPFinal: (time) => analytics.track('lcp_final', time),
  ),
  bundle: bundle,
);

0.21.5+4 #

Same as 0.21.5+3, but reverts some unintended changes introduced in 0.22.0

0.21.5+3 #

Global Cache Management API #

We've added a new static API WebF.clearAllCaches() that provides a unified way to clear all WebF caches, including both HTTP caches and QuickJS bytecode caches. This API is particularly useful for:

  • Freeing up disk space
  • Ensuring fresh content after updates
  • Debugging cache-related issues
  • Managing app storage in production

Usage Example

// Clear all caches (both HTTP and bytecode)
await WebF.clearAllCaches();

Features #

  • WebF.clearAllCaches() API: A new static method that clears all local caches
    • Clears HTTP disk caches in the HttpCaches directory
    • Clears QuickJS bytecode caches in the ByteCodeCaches_* directory
    • Clears all in-memory cache instances
    • Handles concurrent operations gracefully
    • Provides robust error recovery for platform-specific file system issues

Improvements #

  • Cross-Platform File System Support: Enhanced error handling for directory deletion operations across different platforms

    • macOS/iOS: Handles errno 66 (ENOTEMPTY)
    • Linux/Android: Handles errno 39 (ENOTEMPTY)
    • Implements fallback strategy to delete files individually when directory deletion fails
    • Gracefully handles concurrent cache operations
  • Memory Cache Management: Added methods to clear memory caches

    • HttpCacheController.clearAllMemoryCaches(): Clears all HTTP memory caches
    • QuickJSByteCodeCache.clearMemoryCache(): Clears bytecode memory caches

0.21.5+2 #

Overview #

This patch release focuses on improving stability and reliability by addressing critical issues in the HTTP cache implementation and enhancing error recovery for malformed content.

🐛 Bug Fixes #

HTTP Cache Implementation #

  • Fixed header parsing typo that was causing incorrect kvTuple.length check
  • Resolved race conditions by implementing file locking to prevent concurrent access
  • Fixed cache corruption issues with atomic write operations using temp file + rename pattern
  • Fixed hash collision issues by replacing url.hashCode with SHA-256 hash
  • Fixed memory leaks in error handling with proper cleanup
  • Fixed test timing issues by tracking async cache writes

Error Recovery for Malformed Content #

  • Improved HTML parser error handling with proper validation and logging
  • Enhanced JavaScript execution with input validation and size limits (100MB)
  • Added pre-validation in Dart layer before native parsing
  • Fixed partial DOM creation to continue even when some elements fail

✨ Improvements #

Cache System Enhancements #

  • Added content checksum validation for cache integrity
  • Added version identifier to cache format for future compatibility
  • Improved error recovery and resource cleanup
  • Added comprehensive validation for cached content

Content Processing Enhancements #

  • Added ExceptionState usage for better error propagation
  • Made traverseHTML return bool to track parsing success
  • Enhanced bytecode evaluation with better error messages
  • Added graceful degradation for parsing errors

0.21.5+1 #

🎯 Simplified JavaScript Channel Integration #

  • Automatic WebFJavaScriptChannel Creation: The WebFJavaScriptChannel is now automatically available through controller.javascriptChannel getter
  • Removed Manual Initialization: No longer need to manually create and pass WebFJavaScriptChannel instances to controllers
  • Seamless Integration: Works automatically with all WebFController instances, including those managed by WebFControllerManager

🔧 Enhanced Navigation Delegate Configuration #

  • Flexible Configuration: navigationDelegate is now a mutable property that can be set via the setup() callback
  • Consistent API Pattern: Aligns with other controller configuration patterns for better consistency
  • Removed Deprecated Methods: The deprecated setNavigationDelegate() method has been removed

Breaking Changes #

WebFController Constructor Changes #

  • Removed Parameters:
    • javaScriptChannel parameter removed from constructor
    • navigationDelegate parameter removed from constructor

Migration Guide #

Before (0.21.5):


final jsChannel = WebFJavaScriptChannel();
final controller = WebFController(
  viewportWidth: 360,
  viewportHeight: 640,
  javaScriptChannel: jsChannel,
  navigationDelegate: myNavigationDelegate,
);

After (0.21.5+1):


final controller = WebFController(
  viewportWidth: 360,
  viewportHeight: 640,
  setup: (controller) {
    controller.navigationDelegate = myNavigationDelegate;
  },
);

// JavaScript channel is now automatically available
controller.javascriptChannel.invokeMethod
('method
'
,
'Hello'
);

0.21.5 #

🐛 Bug Fixes

  • Fixed ListView header and footer state management (https://github.com/openwebf/webf/commit/19f144340)

    • Reset internal refresh/loading states when calling finishRefresh, finishLoad, resetHeader, and resetFooter APIs
    • Prevents state inconsistencies that could cause refresh/load indicators to get stuck
    • Ensures proper state synchronization between internal flags and refresh controller
  • Fixed dark mode not updating when controller was not evaluated (https://github.com/openwebf/webf/commit/d0013123c)

    • Dark mode changes now apply immediately regardless of controller evaluation state
    • Removed unnecessary check that prevented dark mode updates before content was loaded
    • Ensures consistent dark mode behavior throughout the controller lifecycle

🔧 Improvements

  • Enhanced error handling with error builder support (https://github.com/openwebf/webf/commit/0c18d2a14)

    • Show error builder widget when encountering unexpected errors during WebF build
    • Added debug print statements for better error diagnostics
    • Handles cases where route is not found, controller is disposed, or documentElement is null
    • Provides better developer experience with clear error messages
  • Made NetworkBundle's HTTP client public (https://github.com/openwebf/webf/commit/e053f1698)

    • Changed _sharedHttpClient to sharedHttpClient to allow external access
    • Enables developers to configure the shared HTTP client used by NetworkBundle
    • Useful for setting custom headers, timeouts, or other HTTP client configurations

0.21.4+2 #

🐛 Bug Fixes

  • Fixed race condition in EventTarget disposal (https://github.com/openwebf/webf/commit/4ece049c5)
    • Defers freeing of pointers with pending events until controller disposal
    • Prevents potential crashes when EventTarget objects are garbage collected while still dispatching events
    • Adds separate tracking for pointers with pending events using _pendingPointersWithEvents list
    • Increases batch threshold from 500 to 2000 for better performance

0.21.4+1 #

🐛 Bug Fixes

  • Fixed WebFTextElement not updating when React.js changes TextNode data (https://github.com/openwebf/webf/commit/70fd51128)
    • Added proper update mechanism for text elements when React.js modifies TextNode data directly
    • Resolved issue where React text updates weren't reflected in the UI
    • Implemented notifyRootTextElement() method to update ancestor WebFTextElement nodes
    • Added comprehensive test coverage for text element updates
  • Fixed preloaded bundle disposal issue for SVG images (https://github.com/openwebf/webf/commit/2b6e8a4da)
    • Prevented disposal of preloaded bundles after first use
    • Ensured preloaded SVG images can be efficiently reused across multiple img elements
    • Added proper bundle lifecycle management for preloaded resources
  • Fixed text span edge case (https://github.com/openwebf/webf/commit/77090f40e)
    • Added proper bounds checking in WebFTextSpan to prevent substring index out of bounds errors
    • Improved text content extraction safety

✨ Features

🔧 Chores

v0.21.4 #

🚀 New Features #

Developer Tools

  • WebF Inspector: Added a floating inspector panel for real-time WebF controller management and debugging
    • View active, detached, and disposed controller counts
    • Monitor controller states and configurations
    • Bulk disposal of controllers for testing
    • Visual debugging interface for development

Performance & Memory Management

  • Idle Scheduling for Memory Cleanup: Implemented batch freeing of native binding objects during idle time
    • Processes up to 100 pointers per idle frame to avoid UI blocking
    • Automatic batch cleanup when threshold (500 pointers) is reached
    • Improved memory management and reduced overhead

Build System

  • iOS Prebuilt Framework Support: Added scripts to use prebuilt frameworks instead of source compilation
    • npm run ios:use-prebuilt: Switch to xcframework usage
    • npm run ios:use-source: Revert to source compilation
    • Significantly reduces pod install time for iOS builds

Platform Features

  • Method Channel Timeout: Added configurable timeout limits for WebF method channel calls to prevent hanging

🐛 Bug Fixes #

CSS & Styling

  • CSS Variables with display:none: Fixed CSS variables not updating correctly for elements with display: none
  • Gradient Cache: Improved gradient cache invalidation with comprehensive test coverage
  • Flexbox Constraints: Fixed maxHeight constraints not being properly applied to flex items
  • Transition Animations: Fixed transitions not triggering when elements are mounted

Memory & Resource Management

  • Image Memory Leak: Fixed BoxFitImage holding controller instances causing memory leaks
  • Animation Parsing: Fixed CSS animation parsing issues when controller is detached or disposed

Platform-Specific

  • iOS Compilation: Fixed iOS compilation issues

0.21.3 #

🚀 New Features

Memory Management

  • Batch cleanup system for native binding objects - Implemented efficient memory cleanup with batchFreeNativeBindingObjects C++ function and IdleCleanupManager to schedule cleanup operations during idle time, reducing memory fragmentation and preventing main thread blocking

ListView Enhancements

  • resetHeader and resetFooter API - Added new APIs for ListView element to programmatically reset header and footer components

HTML & Preloading

  • HTML link preloading - Added support for with 'as' attribute for resource preloading
  • Programmatic preloading - Added addPreloadedBundle method to WebFController

Text & Layout

  • Text reflow in flex containers - Improved dynamic height adjustment of text and inline elements within flex containers with proper text reflow when container width changes
  • Text overflow and line clamp - Added support for setting text overflow and line clamp properties on text elements

🐛 Bug Fixes

Layout & Rendering

  • Flex content size calculation - Fixed incorrect maxHeight clamping in flex content size calculation and removed maxHeight constraint from content size calculation
  • Scrollable overflow - Fixed scrollable exception with overflow hidden
  • Route link activation - Fixed route link path activation to only occur after router link is connected

Runtime & Memory

  • Context validation - Added context valid checks for handleBindingCall from Dart
  • QuickJS garbage collection - Always turn on QuickJS GC for better memory management
  • iOS compilation - Fixed iOS compile options in release mode

🧹 Maintenance

  • Legacy API removal - Removed legacy profile AP

0.21.2+1 #

New Features

Added <text /> Layout Element #

  • New text component that provides more precise text layout control
  • Supports proper whitespace handling, including collapsing and trimming
  • Configurable with CSS properties like font-family, line-height, text-align

Enhanced ListView Pull-to-Refresh and Load More #

  • Added automatic event dispatch for pull-to-refresh and load-more actions
  • Fixed event firing order for router navigation events
  • Events now fire correctly after the onscreen event when navigating
  • Added dispatchEventByDeps method to ensure proper event sequencing
  • Enhanced event dependency tracking to handle timing-sensitive events

Android Build Improvements #

  • Added pre-compile scripts for Android to streamline the build process:
    • build_android_jnilibs.js: Copies JNI libraries from bridge/build to webf/android/jniLibs
    • build_android_package.js: Orchestrates the entire Android package build process
    • patch_android_build_gradle.js: Updates Android build.gradle for pre-compiled libraries

Bug Fixes #

  • Fixed iOS build issues
  • Revert the changes for resizeViewportRelatedElements.

0.21.2 #

New Features

FormData Support

  • Added FormData/File API support for web-compatible file uploads
  • Implemented native FormData interface with proper multipart handling
  • Extended fetch module to work with FormData objects

Pull-to-Refresh Improvements

  • Integrated easy_refresh package for better pull refresh and load more functionality
  • Simplified custom ListView implementation with native refresh capabilities

Bug Fixes

Layout Improvements

  • Fixed position layout handling for elements not connected to DOM
  • Made flushPendingProperties synchronous for more predictable layout behavior
  • Fixed viewport metrics changes by properly dispatching relayout for affected render objects
  • Disabled scrolling when overflow is set to hidden
  • Fixed line-height computation when inheriting from parent elements

Crash Fixes

  • Fixed issue where _hostSet was not properly initialized

Build System

  • Made bytecode generator into a standalone script for better maintainability
  • Fixed Android NDK limits for better cross-platform compatibility

Framework Improvements

  • Fixed forceUpdate on WebF controller when created by AutoManagedWebF widget

0.21.1 #

New Features

  • Upgraded to official QuickJS version 2025-04-26
  • Added visual error handling for layout errors showing on-screen exceptions
  • Generate polyfill bytecode in production mode for better performance

Bug Fixes

  • Fixed crash when passing parameters to new Blob constructor
  • Fixed scrollableViewportSize to correctly constrain box layout
  • Fixed renderStyle.isScrollingContainer implementation
  • Only show layout errors in debug/profile mode (hidden in release mode)
  • Fixed WebF.fromControllerName in concurrent conditions
  • Fixed passing parameter to new Blob constructor
  • Fixed gesture event hitTest functionality
  • Fixed inline text placeholder hitTest
  • Added lineAscentHeightOffset to text layout lineOffset
  • Fixed various Windows compilation issues

Infrastructure & Building

  • Added support for compiling with MSYS2
  • Removed legacy QuickJS engine and bytecode generator

QuickJS Release Logs between the previous used version:

2025-04-26:

  • removed the bignum extensions and qjscalc
  • new BigInt implementation optimized for small numbers
  • added WeakRef, FinalizationRegistry and symbols as weakrefs
  • added builtin float64 printing and parsing functions for more correctness
  • faster repeated string concatenation
  • qjs: promise unhandled rejections are fatal errors by default
  • added column number in debug information
  • removed the "use strip" extension
  • qjs: added -s and --strip-source options
  • qjsc: added -s and --keep-source options
  • added JS_GetAnyOpaque()
  • added more callbacks for exotic objects in JSClassExoticMethods
  • misc bug fixes

2024-01-13:

  • top-level-await support in modules
  • allow 'await' in the REPL
  • added Array.prototype.{with,toReversed,toSpliced,toSorted} and TypedArray.prototype.{with,toReversed,toSorted}
  • added String.prototype.isWellFormed and String.prototype.toWellFormed
  • added Object.groupBy and Map.groupBy
  • added Promise.withResolvers
  • class static block
  • 'in' operator support for private fields
  • optional chaining fixes
  • added RegExp 'd' flag
  • fixed RegExp zero length match logic
  • fixed RegExp case insensitive flag
  • added os.sleepAsync(), os.getpid() and os.now()
  • added cosmopolitan build
  • misc bug fixes

2023-12-09:

  • added Object.hasOwn, {String|Array|TypedArray}.prototype.at, {Array|TypedArray}.prototype.findLast{Index}
  • BigInt support is enabled even if CONFIG_BIGNUM disabled
  • updated to Unicode 15.0.0
  • misc bug fixes

0.21.0-beta.7 #

Bug Fixes

Dark Mode Improvements

  • Enhanced darkModeOverride: Improved dark mode handling in widget mode with a more robust implementation [d6908531c]
    • Added proper change detection to prevent unnecessary style recalculations
    • Ensured events and style updates occur only when actual changes happen
    • Simplified API by eliminating need for manual platform brightness change calls
    • Added clear documentation explaining conditional logic

QuickJS Runtime Fixes

  • JSClassID Overflow Fix: Fixed critical crash that occurred when total created controller instances exceeded 200. [89c1887ef]
  • Bundle Preprocessing: Added checks to ensure page is alive when preprocessing JavaScript bundles, preventing potential crashes. [2dd2b7d91]

CSS & Styling Fixes

  • CSS Variables: Fixed issues when overriding CSS variable properties with normal CSS values, improving CSS variable reliability. [936562108]
  • Head Element Style Reload: Fixed null exception that occurred when reloading styles in head elements. [907804f4d]

Layout Engine Improvements

  • Flexbox Container Sizing: Significantly improved flexbox margin handling with proper container dimension recalculation
    • Added container size recalculation after child sizing adjustments
    • Added cross-axis extent recalculation after child relayout
    • Enhanced flexbox margin behavior with comprehensive test cases [99b08a88c]

New Features

  • Controller Creation Callbacks: Added callbacks to notify when a controller is created by WebF widget, improving lifecycle management. [cc53ddf23]

Storage Enhancements

  • Shared Storage Cache: Implemented shared storage box cache for AsyncStorage and LocalStorage [30d2b6339]
    • Added Maps to cache box instances across the application
    • Maintained shared instances between modules
    • Improved cleanup in dispose methods

Other Changes

  • Test Coverage: Added extensive CSS variable test specifications, improving test coverage. [a4d2de1dd]
  • Documentation: Fixed changelog formatting. [cbe51803c]

0.21.0-beta.6 #

iOS Native Integration

  • Complete overhaul of iOS build system to use direct source compilation instead of pre-built frameworks
    • Integrated QuickJS source files directly in iOS build
    • Added Gumbo Parser and modp_b64 libraries to iOS project
    • Added Dart FFI support to iOS project
    • Updated dynamic library loading for iOS using DynamicLibrary.executable()

WebF Package Publishing

  • Added prepare_webf_package script for publishing
  • Added handling for dynamic libraries and C++ source files preparation
  • Added automated patching for CMakeLists.txt, app revision, and version

Router and Event Handling

  • Delayed push and pushNext router change events to ensure firing after screen events in webf router link element

Bug Fixes

  • Fixed scheduleFrame() in the image element to ensure frame updates
  • Fixed _markChildrenTextNeedsLayout to use DOM tree instead of renderObject tree
  • Added checks for module disposal before modifying collections in WebSocketModule to prevent ConcurrentModificationError
  • Fixed build scripts and integration test dependencies
  • Updated iOS code_gen include paths

0.21.0-beta.5+3 #

Image Loading Reliability

  • Added automatic fallback mechanism for failed image loads:
    • Images that fail to load now automatically retry once after invalidating cache
    • Prevents broken images due to corrupted cache files or temporary network issues
    • Improved user experience by reducing instances of broken images

Technical Improvements

  • Enhanced ImageElement with smart retry logic:
    • Added tracking to prevent unnecessary multiple reload attempts
    • Implemented forced cache eviction during reload attempts
    • Images are properly cleared from Flutter's image cache during reload
    • Built on top of existing HTTP cache invalidation mechanism

Bug Fixes

  • Fixed case with border rendering in inline elements
  • Improved logic flow in LogicLineBox for better handling of nested inline elements
  • Fixed HTTP cache invalidation mechanism for consistent behavior across image and script loading

0.21.0-beta.5+2 #

Features

Controller Management Improvements

  • Add timeout request limits for preload and prerendering to prevent hanging requests
  • Make addOrUpdateControllerWithLoading return null if the race condition fails, improving error handling

Performance Enhancements

  • Add timeline tracking for flex layout performance monitoring
  • Optimize concurrent request handling with race conditions
  • Upgrade web_socket_channel version to 3.0.1 for better WebSocket performance

React.js Integration

  • Make input events compatible with React.js event system, improving framework integration
  • Enhanced synthetic event handling for better cross-framework support

Bug Fixes

Memory Management

  • Fix memory leaks with pending script promises by properly tracking promise lifecycle
  • Fix context check during release of alive script wrappable objects
  • Fix crash when disposing script promises by checking context availability
  • Fix crash when finalizing JavaScript runtime with canvas context

Timeout and Request Handling

  • Fix parameters and annotations with timeout functionality
  • Improve error handling during concurrent controller operations
  • Add proper race condition resolution for multiple preload/prerendering requests

Stability Improvements

  • Fix canvas rendering context finalization crash
  • Fix sticky position holder null error that caused layout issues
  • Implement more robust controller lifecycle management

Other Changes

  • Move most of WebF pages to cold load in example app for better performance
  • Add test specifications for color change functionality
  • Improve code documentation and type annotations

0.21.0-beta.5+1 #

Features

Controller Lifecycle Management

  • Fallback Mechanism: Added support for fallback to previous controller when concurrent requests fail, ensuring uninterrupted user experience
  • Preload/Prerender Handling: Implemented race condition handling for multiple bundle operations, optimizing performance for parallel requests
  • Auto-managed WebF Widgets: Added controller manager for automatic widget lifecycle management
  • Dynamic Controller Replacement: Support replacing WebFController instances for existing WebF widgets

API Improvements

  • Exception Handling: Enhanced error handling by throwing exceptions for failed preloading requests
  • Streamlined API: Merged addWithPreload and updateWithPreload methods into a single implementation
  • TypeScript Support: Added auto-generated typings with improved documentation

Fixes

Stability Improvements

  • Position Fixes: Fixed sticky position holder null error and temporarily disabled problematic sticky position layouts
  • Navigation Fixes: Resolved hybrid router pop event issues when path is "/"
  • Preload API: Fixed addOrUpdateWithPreload API when applied to attached controllers

Other Improvements

  • Test Reliability: Fixed integration test setup and execution
  • Example App: Updated example application configuration and added build scripts
  • Documentation: Enhanced API annotations for WebFControllerManager

Chores

  • Package Renaming: Reorganized package structure for better clarity
  • Build Tools: Added example build scripts to streamline development workflow
  • Test Coverage: Added test specs for parallel request handling scenarios

0.21.0-beta.5 #

New Features

  • Added Inline Formatting Context support for improved text rendering and layout
    • Introduces more accurate text layout with proper inline element handling
    • Added line-join functionality for inline elements
    • Implemented WebFTextPainter for enhanced text rendering performance
    • Added TextSpan and LogicBox rendering support
  • Increased loadmore event frequency in WebFListView for smoother infinite scrolling experiences
    • Reduced the delay between loadmore events from 1000ms to 500ms
    • Improved user experience when scrolling through large lists

Performance Improvements

  • Optimized text CSS style handling to prevent unnecessary renders
  • Enhanced text layout and rendering performance

Bug Fixes

  • Removed unnecessary showcaseview dependency

0.21.0-beta.4+5 #

New Features

  • Added support for custom ListView components
    • Includes both Material and Cupertino implementations
    • Added to example application with demo page
  • Added support for ShowCaseView component
    • Integrated showcase examples in the demo application
  • Added WebFControllerManager.instance.cancelUpdateOrLoadingIfNecessary API
    • Allows canceling pending updates or loading operations

Bug Fixes

  • Fixed issue where loading didn't properly request an animation frame
  • Fixed override default widget element functionality
  • Enhanced element registry system

0.21.0-beta.4+4 #

Bug Fixes #

  • Fix onScreen event on RouterLinkElement
  • Fix router change events
  • Fix did change metrics not updating viewport CSS values
  • Fix forEach element attached flutter state

0.21.0-beta.4+3 #

Features #

  • Support dashed border for single side
  • New implementation for gesture handling
  • Display error when widget loading fails

Bug Fixes #

  • Fix min-height with parent fit-content
  • Fix offscreen event dispatch on hybrid router
  • Fix conversion of widget elements constraints to inner HTML Elements
  • Fix flex cross size affected by min-height
  • Fix min-height definition triggering flex item not to stretch
  • Fix painting order with multiple renderObject instances
  • Fix max constraint height inheritance in WebFWidgetElementChild
  • Fix Element.getBoundingClientRect in hybrid router mode

0.21.0-beta.4+2 #

Features #

  • Support fixed positioned layout both for overflow and

Bug Fixes #

  • Fix recalculate style for connected node.
  • Fix change position value to static.
  • Fix put positioned elements in route link element.
  • Fix scrolling with fixed elements.
  • Fix rust integration test.

Tests #

  • Temporarily disable test specs with stacking context.

  • Add position fixed tests with router link specs.

  • Add position fixed listview specs.

  • Add position-fixed-comprehensive test specs.

  • Add position fixed click tests.

  • Fix rust integration tests.

Other Changes #

  • Remove profile tracking.
  • Add flutter cupertino demo in react.js

0.21.0-beta.4 #

Features #

  • Add WebFTouchArea element to avoid SyntheticEvent side effects in React.js
  • Add NativeByteData for receiving bytes from JavaScript to Dart
  • Make webf.invokeModule accept multiple parameters
  • Use Completer for async returns for modules
  • Add helper functions in render style
  • Add controller.printDOMTree API for debugging
  • Make Cupertino slider code generator friendly
  • Optimize onscreen event priority for <webf-router-path /> element
  • Optimize page loading to avoid rebuilding the whole widget tree
  • Optimize loading screen for already loaded pages
  • Optimize canvas needsPaint UI commands

Bug Fixes #

  • Fix share demo and miracle plus share demo
  • Fix flex-item size with flex-basics
  • Fix mark parent needs relayout with RenderEventListener
  • Fix RenderEventListener stopping the mark needs layout
  • Fix minContentWidth and minContentHeight calculation in event listener
  • Fix localStorage.removeItem
  • Fix flex layout baseline computation affected by renderEventListener
  • Fix dump rendering snapshots on widget elements
  • Fix hit test for event listeners and box wrapper
  • Fix array buffer memory leaks when dispose the engine
  • Fix memory leaks due to ui command items
  • Fix widget element state disposed by add event listener on element
  • Fix event target gesture target mixed between main and hybrid route pages
  • Fix mark needs build for root WebFState
  • Fix WebF touch area default style
  • Fix height constraints from parent widget elements
  • Fix avoid repeat call needsPaint for canvas element

Other Changes #

  • Enhance type definitions and interfaces across polyfill modules
  • Remove the profile tracking in layout and paint
  • Add NativeBytedata test specs
  • Add array buffer demo for testing

0.21.0-beta.3+1 #

Features #

  • feat: add WebFWidgetElementChild widget for pass outer constraints to inner HTMLElement child. ( 3a71af271)
  • feat: add controller.printRenderObjectTree API. (c505040ea)
  • feat: add create component utils for react (3373d4481)

Bug Fixes #

  • fix: fix flush pending properties order. (1fa7d3673)
  • fix: fix change font size in html element with rem values. (80495dd1f)
  • fix: fix FontsAndImages specs. (7878474fc)
  • fix: fix module test specs. (b15a2bef4)
  • fix: fix null check with image onload. (fa2d8a935)
  • fix: fix race condition for check shared ui command is empty. (998bbd7a1)

0.21.0-beta.3 #

WebF Core #

Features #

  • Added support for dashed border style.
  • Added support for CSS logical properties in LTR mode.
  • Added support for custom listview element rendering behavior.
  • Added support for requestIdleCallback.
  • Added support for Event.preventDefault.

The CSS Logical properties supported in LTR mode

1. Margin Properties

- margin-inline-start → margin-left
- margin-inline-end → margin-right
- margin-block-start → margin-top
- margin-block-end → margin-bottom

2. Padding Properties

- padding-inline-start → padding-left
- padding-inline-end → padding-right
- padding-block-start → padding-top
- padding-block-end → padding-bottom

3. Border Shorthand Properties

- border-inline-start → border-left
- border-inline-end → border-right
- border-block-start → border-top
- border-block-end → border-bottom

4. Border Width Properties

- border-inline-start-width → border-left-width
- border-inline-end-width → border-right-width
- border-block-start-width → border-top-width
- border-block-end-width → border-bottom-width

5. Border Style Properties

- border-inline-start-style → border-left-style
- border-inline-end-style → border-right-style
- border-block-start-style → border-top-style
- border-block-end-style → border-bottom-style

6. Border Color Properties

- border-inline-start-color → border-left-color
- border-inline-end-color → border-right-color
- border-block-start-color → border-top-color
- border-block-end-color → border-bottom-color

7. Inset/Position Properties

- inset-inline-start → left
- inset-inline-end → right
- inset-block-start → top
- inset-block-end → bottom

Bug Fixes #

  • Fixed dispatch of didpush and didpushNext hybridRouterChange events.
  • Fixed type errors in bridge polyfill.
  • Fixed controller.currentBuildContext error with replaceState on the hybrid router.
  • Fixed error when Flutter was not attached in the hybrid history API.
  • Fixed Android build issues.
  • Fixed gesture handling event target in router link.
  • Fixed viewport rendering on layout.
  • Fixed delay in controller disposal.

Other Changes #

  • Refactored widget elements to use the new API pattern.
  • Using flutter_svg to render SVG images for <img> tags.

The New Pattern for Writing a WidgetElement #

class FlutterCupertinoActionSheet extends WidgetElement {
  /// WidgetElement will live much longer than Flutter widgets
  /// and have the same lifecycle as the corresponding HTMLElement in JavaScript.
  /// When the element is removed by JavaScript, this element will be disposed.
  @override
  WebFWidgetElementState createState() {
    return FlutterCupertinoActionSheetState(this);
  }
}

// FlutterCupertinoActionSheetState is a subclass of Flutter's State class
class FlutterCupertinoActionSheetState extends WebFWidgetElementState {
  FlutterCupertinoActionSheetState(super.widgetElement);

  @override
  Widget build(BuildContext context) {
    // This element itself doesn't render anything visible
    return const SizedBox();
  }
// ..
}

How to Customize <webf-listview /> #

WebF.overrideCustomElement
('webf-listview
'
, (context) => CustomWebFListView(context));

class CustomWebFListView extends WebFListViewElement {
CustomWebFListView(super.context);

@override
WebFWidgetElementState createState() {
return CustomListViewState(this);
}
}

class CustomListViewState extends WebFListViewState {
CustomListViewState(super.widgetElement);

@override
Widget buildLoadMore() {
return widgetElement.hasEventListener('loadmore')
? Container(
height: 50,
alignment: Alignment.center,
child: isLoadingMore ? const CupertinoActivityIndicator() : const SizedBox.shrink(),
)
  : const SizedBox.shrink();
}

@override
Widget buildRefreshControl() {
return CupertinoSliverRefreshControl(
onRefresh: () async {
if (widgetElement.hasEventListener('refresh')) {
widgetElement.dispatchEvent(dom.Event('refresh'));
await Future.delayed(const Duration(seconds: 2));
}
},
);
}

@override
Widget buildRefreshIndicator(Widget scrollView) {
return RefreshIndicator(
onRefresh: () async {
if (widgetElement.hasEventListener('refresh')) {
widgetElement.dispatchEvent(dom.Event('refresh'));
await Future.delayed(const Duration(seconds: 2));
}
},
child: scrollView,
);
}

@override
void handleScroll() {
double scrollPixels = scrollController?.position.pixels ?? 0;
print('Scrolling... $scrollPixels');
}

@override
bool hasRefreshIndicator() {
return true;
}
}

Examples #

Cupertino Components #

  • Added formRow and formSection components.
  • Added action-sheet component.
  • Added timer picker component.
  • Added radio and checkbox components.
  • Added cupertino-context-menu and slider widget.
  • Fixed context menu demo.
  • Fixed button text color to use CSS variables.
  • Added CSS variables for Cupertino gallery.
  • Updated Cupertino button implementation and usage.
  • Added textarea demo page.

MiraclePlus Examples #

  • Switched MiraclePlus to prerendering mode.
  • Fixed MiraclePlus demo.
  • Fixed toast pop error.

Hybrid Router #

  • Added hybrid router template.
  • Added initialRoute parameter for hybrid router delegate.
  • Added ECharts playground.
  • Added ListTile and ListSection components.
  • Enhanced FlutterListViewElement with platform-specific refresh controls.
  • Added loading icon for loading more items.
  • Added support for the share method.

0.21.0-beta.2 #

Core Features #

WebF API

  1. Add WebFRouterView.fromControllerName API When used in the onGenerateRoute callback of Navigator, this API automatically manages the lifecycle, including initialization, disposal, and displaying the loading widget. Users only need to specify the controller name and customize the loading widget.

    Example:

    Route<dynamic>? handleOnGenerateRoute(RouteSettings settings) {
        return CupertinoPageRoute(
          settings: settings,
          builder: (context) {
            return WebFRouterView.fromControllerName(
                controllerName: webfPageName.value,
                path: settings.name!,
                builder: (context, controller) {
                  return WebFSubView(controller: controller, path: settings.name!);
                },
                loadingWidget: _WebFDemoState.buildSplashScreen());
          },
        );
    }
    
  2. Support for Updating WebF Controller by Name in WebFControllerManager For created WebFControllers with a name, users can update the controller and its rendering content by calling WebFControllerManager.instance.updateWithPreload or WebFControllerManager.instance.updateWithPrerendering to reinitialize and preload or prerender with the same controller name.

    Example:

    WebFControllerManager.instance.updateWithPreload(
        createController: () => WebFController(
              initialRoute: '/',
              routeObserver: routeObserver,
              devToolsService: kDebugMode ? ChromeDevToolsService() : null,
            ),
        name: 'html/css',
        routes: {
          '/todomvc': (context, controller) => WebFSubView(path: '/todomvc', controller: controller),
          '/positioned_layout': (context, controller) =>
              WebFSubView(path: '/positioned_layout', controller: controller),
        },
        bundle: WebFBundle.fromUrl('assets:///vue_project/dist/index.html'));
    
  3. Add WebFController.cookieManager for App-Level Cookie Management

  4. Add initialRoute and initialState for the initialize hybrid route path and state when initialize WebF.


Hybrid Router

  1. Add Hybrid Router Change Event for <webf-router-link /> Element You can now listen for the hybridrouterchange event in the <webf-router-link /> element when the hybrid router pushes in or pops back.

    Example:

    <webf-router-link :path="path" @onscreen="onScreen" :title="title" @hybridrouterchange="onRouterChange">
      <slot v-if="isMounted"></slot>
    </webf-router-link>
    

    The HybridRouterChangeEvent provides the following properties:

    interface HybridRouterChangeEvent extends Event {
      readonly state: any; // The state object for the current path
      readonly kind: string;
      readonly path: string;
      new(): HybridRouterChangeEvent;
    }
    

    There are four kinds of HybridRouterChangeEvent:

  2. didPopNext – Called when the top route is popped off, and the current route shows up.

  3. didPop – Called when the current route is pushed.

  4. didPush – Called when the current route is popped off.

  5. didPushNext – Called when a new route is pushed, and the current route is no longer visible.

  6. Fix WebF App Rebuild Triggered by Hybrid Router Push and Pop

  7. Fix hybridRouter.state When Pushing from Another Router Page

  8. Add More APIs for Hybrid Router

  9. pushNamed – Push a named route onto the navigator that most tightly encloses the given context.

  10. restorablePopAndPushNamed – Restorably pop the current route and push a named route.

  11. pushReplacementNamed – Push a replacement named route.

  12. canPop – Whether the navigator can be popped.

  13. maybePop – Pop the top-most route off, only if it's not the last route.

  14. popAndPushNamed – Pop the current route off and push a named route in its place.

  15. popUntil – Pops until a route with the given name.

  16. pushNamedAndRemoveUntil – Push the route with the given name and remove routes until the named route is reached.


Layout

  1. Fix Flex Item Layout Size When Parent is a Flex Container and Overflows
  2. Fix Positioned Element Not Updating Offset Position When Scrolling
  3. Fix Replaced Element Intrinsic Layout Size as Flex Item

Gestures

  1. Fix Draggable Effect Demo Built with React.js Based on ontouchstart and ontouchmove Gestures Demo URL: http://andycall.oss-cn-beijing.aliyuncs.com/demo/dragable-list.js

JS Runtime

  1. Fix Memory Leaks for Unresolved Promises
  2. Fix Null Pointer Crash for removeEventListener

Miracle Plus

  1. Add Skeleton Effect for Page Loading
  2. Support Dark Mode for All Pages
  3. Add Cupertino Library Gallery

Others

  1. Upgrade Hive Dependencies to hive_ce@2.10.1

0.21.0-beta.1 #

Bug Fixes

  1. Fixed known issues during the Rendering Architecture Migration:
  2. Fixed WebF.methodChannel not being initialized.
  3. Reworked CSS overflow.
  4. Reworked CSS positioned layout.
  5. Reworked CSSOM API (Element.offsetTop, Element.scrollTo, etc.).
  6. Fixed margin collapse in various combination cases.
  7. Supported CSSOM API for <webf-listview />.
  8. Fixed CSS style inspection through Chrome DevTools.

Features

  1. Added webf.hybridRouter.path and webf.hybridRouter.replaceState APIs.
  2. Added onscreen and offscreen events for all DOM elements.
  3. Added CSS stacking context support.
  4. Supported reloading WebF pages through Chrome DevTools.
  5. Supported overriding WebF modules.
  6. Supported initializing WebFController without any rendering context.
  7. Added WebFControllerManager to maintain the maximum number of alive and attached WebFController instances.

0.20.0 #

Upgrade to enterprise version, which starts at 0.20.0 version.

  • Feat: Add support for fully async internal binding API.
  • Feat: Optimize the performance WidgetElement binding API.
  • Feat: Add MediaQuery and Dark mode support.
  • Feat: Redesigned Flutter Widget Adapter System.
  • Feat: Add Echarts.js with line char graph support.

0.16.3+1 #

Fixed compilation issues for Linux, Android, and Windows platforms.

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 #

Bug Fixed #

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 #

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. https://github.com/openwebf/webf/pull/644

Bug Fixed

  1. Fix memory leaks in Flutter engineGroup mode. https://github.com/openwebf/webf/pull/629
  2. Fix rendering order when change css display:none to block. https://github.com/openwebf/webf/pull/639

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. https://github.com/openwebf/webf/pull/606
  2. Add flutter 3.22.x support. https://github.com/openwebf/webf/pull/624

Bug Fixed

  1. Fix iOS FontFamilyFallback on -apple-system style, display error on Vietnamese lang. https://github.com/openwebf/webf/pull/609
  2. Fix crash with unexpected format string on window.btoa API. https://github.com/openwebf/webf/pull/615; https://github.com/openwebf/webf/pull/616

0.16.0 #

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

Bug Fixed

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

0.15.1 #

This version will support Flutter 3.10.x

Features

  1. Optimize location API for better performance results. https://github.com/openwebf/webf/pull/420
  2. Optimize the webf_bridge and quickjs binary size. https://github.com/openwebf/webf/pull/414
  3. Support CSS initial length value. https://github.com/openwebf/webf/pull/421
  4. Optimize Element.children() and Document.all() performance. https://github.com/openwebf/webf/pull/424
  5. Support element
  6. Add WebFController.onTitleChanged API. https://github.com/openwebf/webf/pull/479

Bug Fixed

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

0.15.0 #

This version will support Flutter 3.10.x

Break Changes

  1. Remove navigator.connection API. https://github.com/openwebf/webf/pull/411

Features

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

Bug Fixed

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

0.14.1 #

Features

  1. Add CSS @font-face support. https://github.com/openwebf/webf/pull/380
  2. Support ::before/::after selector. https://github.com/openwebf/webf/pull/332
  3. Add document.elementFromPoint API. https://github.com/openwebf/webf/pull/381
  4. Support set textContent on textArea elements. https://github.com/openwebf/webf/pull/369
  5. Support receive binary data from fetch and XMLHttpRequest. https://github.com/openwebf/webf/pull/397
  6. Add support for event capture phases. https://github.com/openwebf/webf/pull/404
  7. Support change the current animation stage for transition animations. https://github.com/openwebf/webf/pull/401
  8. Add CSSStyleDeclaration.cssText support. https://github.com/openwebf/webf/pull/410
  9. Move the webf_websocket plugin into webf. https://github.com/openwebf/webf/pull/398

Bug Fixed

  1. Fix error when setting display:none for input and textarea. https://github.com/openwebf/webf/pull/369
  2. Fix focus state didn't cleared when input unmount from the DOM Tree. https://github.com/openwebf/webf/pull/369
  3. Fix defaultStyle for textarea elements. https://github.com/openwebf/webf/pull/369
  4. Fix a crash when a JSObject was finalized after the ExecutingContext was freed. https://github.com/openwebf/webf/pull/372
  5. Fix a crash when ExecutingContext is not alive at timer callbacks. https://github.com/openwebf/webf/pull/373
  6. Fix a crashed when running in multiple flutter engine instance. https://github.com/openwebf/webf/pull/377
  7. Fix the size of the input is wrong when using a unit other than px. https://github.com/openwebf/webf/pull/378
  8. Fix crashed when shutdown the app. https://github.com/openwebf/webf/pull/383
  9. Fix Resource temporarily unavailable for Hive lock file. https://github.com/openwebf/webf/pull/387
  10. Fix a memory leaks in TouchList. https://github.com/openwebf/webf/pull/388
  11. Fix match error for animation time. https://github.com/openwebf/webf/pull/390/files
  12. Fix built-in string initialized multiples and cause leaks. https://github.com/openwebf/webf/pull/391
  13. Fix constructor property on DOM elements. https://github.com/openwebf/webf/pull/402

0.14.0 #

Big News

  1. Add Flutter 3.3/3.7 support. https://github.com/openwebf/webf/pull/246
  2. Add SVG suppport. https://github.com/openwebf/webf/pull/279
  3. Add Windows support. https://github.com/openwebf/webf/pull/162
  4. Add multiple flutter engine group support. https://github.com/openwebf/webf/pull/338

Features

  1. Support transform property for computedstyle. https://github.com/openwebf/webf/pull/245
  2. Add btoa() and atob() API support. https://github.com/openwebf/webf/pull/253
  3. Add Vue SSR support. https://github.com/openwebf/webf/pull/256
  4. Replace malloc to mimalloc. https://github.com/openwebf/webf/pull/267
  5. Add CanvasRenderingContext2D.createLinearGradients and CanvasRenderingContext2D.createRadialGradient support. https://github.com/openwebf/webf/pull/269
  6. Optimize Fetch() API performance. https://github.com/openwebf/webf/pull/287
  7. Add Blob.base64() to export base64 string from Blob directly. https://github.com/openwebf/webf/pull/278
  8. Expand quickjs default prop size and realloc capacity. https://github.com/openwebf/webf/pull/270
  9. Add context API for WidgetElement. https://github.com/openwebf/webf/pull/264
  10. Add kbc file type support for script element. https://github.com/openwebf/webf/pull/250
  11. Support react.js without any polyfill. https://github.com/openwebf/webf/pull/257
  12. Auto cache parsed bytecode for the first load. https://github.com/openwebf/webf/pull/280
  13. Invalidate cache when expect Http request errors https://github.com/openwebf/webf/pull/305
  14. Optimize dart dom and CSS selector performance. https://github.com/openwebf/webf/pull/309
  15. Support background-clip text. https://github.com/openwebf/webf/pull/318
  16. Remove ios armv7 armv7s support. https://github.com/openwebf/webf/pull/331
  17. Add DOMContentLoaded API. https://github.com/openwebf/webf/pull/330
  18. Optimize image load performance. https://github.com/openwebf/webf/pull/335
  19. Validate bytecode cache with CRC32 checksum. https://github.com/openwebf/webf/pull/336
  20. Add Element.querySelectorAll and Element.querySelector API. https://github.com/openwebf/webf/pull/342
  21. Support document.domain and document.compatMode. https://github.com/openwebf/webf/pull/343
  22. Support document.readyState. https://github.com/openwebf/webf/pull/347
  23. Add localStorage and sessionStorage support. https://github.com/openwebf/webf/pull/344
  24. Support document.visibilityState and document.hidden. https://github.com/openwebf/webf/pull/350
  25. Add document.defaultView API. https://github.com/openwebf/webf/pull/346
  26. Add support for Element.dataset API. https://github.com/openwebf/webf/pull/348
  27. Add Element.matches API. https://github.com/openwebf/webf/pull/365
  28. Add append() and prepend() support for Element, Document and DocumentElement. https://github.com/openwebf/webf/pull/361
  29. Add before() and after() support for Element and CharaterData. https://github.com/openwebf/webf/pull/361
  30. Add Element.closest API. https://github.com/openwebf/webf/pull/364
  31. Add HTMLScriptElement.readyState API. https://github.com/openwebf/webf/pull/367

Bug Fixed

  1. fix: fix pan scroll on desktop versions. https://github.com/openwebf/webf/pull/248
  2. fix: canvas should clip overflowed element. https://github.com/openwebf/webf/pull/263
  3. fix: ic should use none instead of atom flag and free it to prevent double delete. https://github.com/openwebf/webf/pull/277
  4. fix: pending promise crash for early gc and add lto to quickjs. https://github.com/openwebf/webf/pull/283
  5. fix update className property on hidden element. https://github.com/openwebf/webf/pull/255
  6. fix bytecode read should free atom to prevent leak. https://github.com/openwebf/webf/pull/285
  7. fix empty src on image. https://github.com/openwebf/webf/pull/286
  8. fix [] can not be GC even if it's detached or removed from the DOM tree. https://github.com/openwebf/webf/pull/291
  9. fix change size of canvas element didn't works. https://github.com/openwebf/webf/pull/276
  10. fix: ic free atom crash when ctx early free. https://github.com/openwebf/webf/pull/293
  11. fix: fix script execution order with inline script element. https://github.com/openwebf/webf/pull/273
  12. fix css function resolve base url. https://github.com/openwebf/webf/pull/282
  13. fix: rules didn't match which start with undefine at-rules. https://github.com/openwebf/webf/pull/294
  14. fix: fix child_node_list can be null. https://github.com/openwebf/webf/pull/297
  15. fix native memory leaks. https://github.com/openwebf/webf/pull/292
  16. fix renderObject memory leaks. https://github.com/openwebf/webf/pull/298
  17. fix dom content loaded event trigger condition. https://github.com/openwebf/webf/pull/274
  18. fix Element.toBlob() is not default to current pixel_ratio. https://github.com/openwebf/webf/pull/306
  19. fix scrollable size when update. https://github.com/openwebf/webf/pull/301
  20. fix layout error when using percentage value on transform. https://github.com/openwebf/webf/pull/307
  21. fix: css priority error. https://github.com/openwebf/webf/pull/310
  22. fix atob empty string cause crash. https://github.com/openwebf/webf/pull/311
  23. fix canvas element get multiple context error. https://github.com/openwebf/webf/pull/312
  24. fix http cache control parse error. https://github.com/openwebf/webf/pull/313
  25. fix image width/height attribute. https://github.com/openwebf/webf/pull/315
  26. fix crash when cancelAnimationFrame in frame callbacks. https://github.com/openwebf/webf/pull/317
  27. fix style didn't take effect and offsetLeftToScrollContainer value is calculated incorrectly. https://github.com/openwebf/webf/pull/322
  28. fix GIF images cause rendering performance overhead. https://github.com/openwebf/webf/pull/325
  29. fix: remove flushLayout when reading contentSize. https://github.com/openwebf/webf/pull/326
  30. fix setting lazy loading for an image didn't work. https://github.com/openwebf/webf/pull/328
  31. fix remounting widgetElement in the same frame to the DOM tree causes renderWidgets to be unmounted from the renderObject tree. https://github.com/openwebf/webf/pull/329
  32. fix: make sure renderObject had been layout before read view module properties. https://github.com/openwebf/webf/pull/333
  33. fix: protect DOMTimers until the ExecutingContext exits. https://github.com/openwebf/webf/pull/334
  34. fix reading target property on Touch caused crash. https://github.com/openwebf/webf/pull/340
  35. fix css vars() and calc() in some user cases. https://github.com/openwebf/webf/pull/355
  36. fix template element's content property cause mem leaks. https://github.com/openwebf/webf/pull/349

0.14.0-beta.1 #

  • Support flutter 3.3.10/3.7.3

0.13.3 #

Features

Bug Fixed

0.13.2+1 #

  • remove logs

0.13.2 #

Features

Bug Fixed

0.13.2-beta.2 #

  • Fix location.href didn't get changed when history changes.

0.13.2-beta.1 #

  • fix page reload when history.back().

0.13.1 #

Bug Fixed

  1. Fix renderBoxModel is null cause performLayout error. https://github.com/openwebf/webf/pull/187
  2. Fix position absolute cause mistake overflow. https://github.com/openwebf/webf/pull/167
  3. Fix var in keyframes not work. https://github.com/openwebf/webf/issues/147
  4. Fix var in translate not work. https://github.com/openwebf/webf/issues/154
  5. Fix unexpected token in linear-graident. https://github.com/openwebf/webf/issues/119
  6. Fix tag element selector. https://github.com/openwebf/webf/issues/169
  7. Fix var attribute dynamic modification exception. https://github.com/openwebf/webf/issues/144

Feature

  1. Add initialCookies params on WebF widget. https://github.com/openwebf/webf/pull/186

0.13.0 #

The biggest update since the webf/kraken release.

  1. The DOM API and C++ bindings had been redesigned and refactored. https://github.com/openwebf/webf/pull/18
  2. DOM node operations methods such as Node.appendChild and Node.insertBefore are 2x - 5x faster than 0.12.0.
  3. The new C++ bindings system can keep the bridge code safer to avoid crashes.
  4. Add CSS StyleSheets support. https://github.com/openwebf/webf/pull/11
  5. Support load CSS with <link /> element.
  6. Support load CSS with <style /> element.
  7. Flutter Widgets System had been redesigned and refactored, now all flutter widgets can be used to define your HTMLElements, including from Flutter material design, pub.dev, and yours. https://github.com/openwebf/webf/pull/58
  8. Add CSS animation support. https://github.com/openwebf/webf/pull/41
  9. Sync the latest features from quickjs offical. https://github.com/openwebf/webf/pull/165

Others:

Features #

  • Add cookie support. https://github.com/openwebf/webf/pull/65

  • Add Quickjs column number support. https://github.com/openwebf/webf/pull/116

  • Support return value from webf. invokeModule API. https://github.com/openwebf/webf/pull/54

    Upgrade from 0.12.0

    This feature could lead to the following error if you using web.addWebfModuleListener API in 0.12.0.

    TypeError: Failed to execute '__webf_add_module_listener__' : 2 argument required, but 1 present.
            at __webf_add_module_listener__ (native)
            at <anonymous> (internal://:127)
            at <eval> (internal://:135)
    

    Please add the target module name to the first arguments:

    before

    webf.addWebfModuleListener(function(moduleName, event, data) {
      if (moduleName == 'AlarmClock') {
         // ...
      }
    });
    

    After

    webf.addWebfModuleListener('AlarmClock', function(event, data) {
     // ...
    });
    

Bug Fixed

0.13.0-beta.9 #

  • fix input border style.

0.13.0-beta.8 #

  • fix macOS arm64 build error.

0.13.0-beta.7 #

  • fix github action ndk path.

0.13.0-beta.6 #

  • downgrade android NDK version requirement to r22b.

0.13.0-beta.5 #

  • fix: request body should be UTF-8 encoded string.
  • fix: fix onLoad didn't not trigger when reload.
  • fix: fix rendering empty if window size is not ready.
  • fix: should dispose webf managed renderObject after flutter framework does.

0.13.0-beta.4 #

  • Test for new custom elements system.

0.13.0-beta.3 #

  • Fix reload crash.

0.13.0-beta.2 #

  • Test for new bridge and css selector.

0.12.0+2 #

Bug Fixed

  • Add Flutter version requirement at pubspec.yaml.

0.12.0+1 #

Bug Fixed

  • Fix Apple silicon platform build error.

0.12.0 #

Big News

  • Set flutter version requirement to v3.0.5.

Bug Fixed

Features

0.11.0 #

Breaking Changes

Bug Fixed

0.10.4 #

Features

Bug Fixed

** Others **

  • Change copyright to The Kraken authors.

0.10.3 #

Bug Fixed

0.10.2+1 #

Bug Fixed

0.10.2 #

Bug Fixed

0.10.1 #

Bug Fixed

0.10.0+5 #

Bug Fixed

0.10.0+4 #

Bug Fixed

0.10.0+3 #

Bug Fixed

0.10.0+2 #

Bug Fixed

0.10.0+1 #

Bug Fixed

0.10.0 #

Break Changes

Big News

  • Support using Flutter Widget as HTML Custom Element which can greatly extend the capability of Web, refer to this doc for detailed use.
  • Performance optimized:
    • Page load time reduced 10%.
    • Scrolling FPS incrased 40%.
  • Linux platform supported.
  • Support Flutter 2.5.3.

Features

Bug Fixed

0.9.0 #

Big News

The QuickJS engine is now landed on kraken and we decided to replace our original JavaScriptCore implementation, which can provide low latency page init time and memory usage.

Break Changes

Features

Bug Fixed

0.8.4 #

Break Changes

Features

Bug Fixed

0.8.3+3 #

Bug Fixed

0.8.3+2 #

Bug Fixed

0.8.3+1 #

Bug Fixed

0.8.3 #

Bug Fixed

Features

0.8.2+1 #

Bug Fixed

0.8.2 #

Features

Bug Fixed

0.8.1 #

Features

Bug Fixed

0.8.0+2 #

Features

0.8.0+1 #

Bug Fixed

0.8.0 #

Big News

  • Kraken v0.8.0 now support flutter 2.2.0

Features

Bug Fixed

0.7.3+2 #

Features

Bug Fixed

0.7.3+1 #

  • Fix: fix prebuilt binary.

0.7.3 #

Features

Bug Fixed

Refactor

0.7.2+4 #

feat: support mouse event https://github.com/openkraken/kraken/pull/220 fix: event bubble not works properly https://github.com/openkraken/kraken/pull/264 fix: return value of Event.stopPropagation() should be undefined https://github.com/openkraken/kraken/pull/284 fix/text node value https://github.com/openkraken/kraken/pull/279 fix: fix kraken.methodChannel.setMethodCallHandler did't get called before kraken.invokeMethod called https://github.com/openkraken/kraken/pull/289

0.7.2+3 #

feat: add willReload and didReload hooks for devTools.

0.7.2+2 #

fix: export getUIThreadId and getGlobalContextRef symbols.

0.7.2+1 #

fix: export getDartMethod() symbols.

0.7.2 #

Break Changes

fix: change default font size from 14px to 16px https://github.com/openkraken/kraken/pull/145

Bug Fixed fix: modify customevent to event https://github.com/openkraken/kraken/pull/138 fix: layout performance https://github.com/openkraken/kraken/pull/155 fix: fix elements created by new operator didn't have ownerDocument. https://github.com/openkraken/kraken/pull/178 fix: flex-basis rule https://github.com/openkraken/kraken/pull/176 fix: transform functions split error when more than one. https://github.com/openkraken/kraken/pull/196 fix: Fix the crash caused by navigation in dart https://github.com/openkraken/kraken/pull/249 fix update device_info 1.0.0 https://github.com/openkraken/kraken/pull/262

0.7.1 #

Bug Fixed

  • fix: resize img wainting for img layouted#86
  • fix: fix: encoding snapshots filename to compact with windows. #69
  • fix: fix insertBefore crash when passing none node object. #70
  • fix: windows platform support build target to Android. #88
  • fix: element size not change when widget size change #90
  • fix: fix navigation failed of anchor element. #95
  • fix: 'kraken.methodChannel.setMethodCallHandler' override previous handler #96
  • fix: repaintBoundary convert logic #111
  • fix: element append order wrong with comment node exists #116
  • fix: fix access Node.previousSibling crashed when target node at top of childNodes. #126
  • fix: fix access Element.children crashed when contains non-element nodes in childNodes. #126
  • fix: percentage resolve fail with multiple sibling exists #144
  • fix: default unknow element display change to inline #133

Feature

  • feat: support Node.ownerDocument #107
  • feat: support vmin and vmax #109
  • feat: support css none value #129
  • feat: suport Event.initEvent() and Document.createEvent() #130
  • feat: Add block element: h1-h6 main header aside. #133
  • feat: Add inline element: small i code samp... #133

0.7.0 #

Bug Fixed

  • fix: zIndex set fail #45
  • fix: border radius percentage #50
  • fix: create text node empty string has height #52
  • fix: cached percentage image has no size #54
  • fix: fix set property to window did't refer to globalThis #60
  • fix: box-shadow #66

Feature

  • Feat: resize if viewport changed #47
76
likes
115
points
476
downloads

Publisher

verified publisheropenwebf.com

Weekly Downloads

W3C standards-compliant web rendering engine based on Flutter, allowing web applications to run natively on Flutter.

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

archive, async, collection, crypto, cupertino_http, dio, easy_refresh, ffi, flutter, flutter_form_builder, flutter_svg, form_builder_validators, hive_ce, http, http_parser, intl, logging, meta, path, path_provider, quiver, shelf, shelf_web_socket, source_span, vector_math, web_socket_channel

More

Packages that depend on webf

Packages that implement webf