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

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

0.22.21 #

Features #

  • Add waterfall performance chart to DevTools inspector panel with overview and flame chart modes.
  • Instrument full rendering pipeline (CSS parse, style flush, style recalc, style apply, layout, paint) with hierarchical span tracking.
  • Add milestone markers (FP, FCP, LCP, Attach) and preload/display stage headers to the waterfall timeline.
  • Add flame chart drill-down for recursive stages (style recalc, flex/flow layout, paint) with self-time vs child-time visualization.
  • Add profile export/import with adb pull commands for Android devices.
  • Auto-record performance spans during page load with zero-cost tracking when disabled.

0.22.20 #

Features #

  • Support global font size adjustment using MediaQuery.textScaler at the root.
  • Add scrollByIndex to WebFListView to enable scrolling to a position by item index.

0.22.19 #

Features #

  • Add forceLoad option to force loading a WebFController by name when constructing a WebF widget.

Fixes #

  • Ensure pending native binding pointers are tracked per JavaScript context so multi-view setups do not share or cross-cleanup pointer batches.

0.22.18 #

Features #

  • Add hybridHistory.buildContextStack API to expose the current hybrid navigation stack to JavaScript for debugging and advanced routing.
  • Add JavaScript router API (WebFRouter) built on top of HybridHistory for SPA-style navigation from React and other frameworks.

Fixes #

  • Fix mismatched root viewport box when switching pages so RenderWidget children use the correct viewport constraints.
  • Fix certain WidgetElement binding properties that previously did not propagate correctly between Flutter widgets and the DOM.

0.22.17 #

  • Add support for android 16k.

0.22.16+1 #

Fixes #

Fix: router link element should not have intrinsic height allows. Fix: always get viewport size for HTML element. Fix: add fallback viewport size for vh/vw. Fix: Revert android 16kb support.

0.22.16 #

Features #

  • Add support for android 16k.

Fixes #

  • Fix form data missing chunks when sending with stream.
  • Support dynamic change viewport size when viewport size changes.

0.22.15 #

fix: force all the decencies of renderObject in the current viewport layout when the viewport metrics changed.

0.22.14+3 #

fix: fix get custom module from invokeModule.

0.22.14+2 #

fix: fix WebF.defineModule can not override built-in modules.

0.22.14+1 #

Fixes #

Fix the FormData imports.

0.22.14 #

Fixes #

Use the FormData impls from original 0.22.7+2

0.22.13+1 #

Fixes #

  • fix: fix export images hang out when the target renderObject not painted.

0.22.13 #

Fixes #

  • fix: revert timeout for resolve entrypoint.
  • fix: fix list view reset footer.
  • fix: filter the extra webf headers to the http requests.

Features #

  • feat: add allowsInfiniteHeight property on WidgetElement to support infinite layout size for WidgetElement.
  • feat: support nested scrollable for normal overflow containers and WebFListView.
  • feat: add WebFEnsureVisible.acrossScrollables(context, alignment: 1.0) API to make the target element visible in scroll container.
  • feat: add onBuildSuccess callback in webf widget.

0.22.12 #

Fixes #

  • fix: revert and reimpls the safe way to read the constraint value.
  • fix: increase the wait times for hybrid route loaded.
  • fix: fix cache invalidation and clear.

0.22.11 #

Fixes #

  • fix: fix access constraints exception when rendering widgets (0bd020cf)
  • fix: sync UI changes from detached stage to the DOM tree (ce64d4639)
  • fix: timer API now fires correctly when detached from Flutter (32fc0a9cf)

0.22.10+2 #

revert: revert the changes to widget_element.dart in 6d24e8f4ca3b0a46051f111bfe42014355421629

0.22.10 #

Fixes #

  • rendering: honor explicit CSS height for WidgetElements (6a8699b7)
  • fix flex item auto size with min-width value (25665d1b)

Reverts #

  • revert: support android 16kb page size (4b011ab0)
  • revert: upgrade ndk version (36cc4769)

0.22.9 #

Features #

  • DevTools: synced implementations from 0.23.0 and reorganized modules under webf/lib/src/devtools/cdp_service with updated panels/stores.
  • Gesture: added FlutterGestureDetector bindings and TS typings; integrated React flutter_gesture_detector component in packages/react-core-ui.
  • Android: support for 16KB page size; upgraded Android NDK version.
  • Networking/Loading: added exception handling for bundle loading and improved Dio log printing.

Fixes #

  • Flex layout: corrected gap overflow and space distribution; fixed inline-flex and height calculation with gap; addressed percentage max-width in flex items.
  • Rendering: hardened render checks to avoid failures from unattached RenderObjects.
  • Routing: show error widgets when the routing entrypoint is null.

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

0.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 #

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
83
likes
0
points
1.45k
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

License

unknown (license)

Dependencies

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

More

Packages that depend on webf

Packages that implement webf