flutter_inappwebview_forge 2.1.77 copy "flutter_inappwebview_forge: ^2.1.77" to clipboard
flutter_inappwebview_forge: ^2.1.77 copied to clipboard

A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.

2.1.77 - 2026-08-21 #

  • Continue native WebView API gap coverage: Android NavigationParameters
    • Profile preconnect, BFCache depth settings, opt-in WebViewBuilder, saveStateWithOptions, ProcessGlobalConfig UI-thread startup mode, Windows DownloadJobController parity, and iOS 26 conversationContext (Smart Reply).
  • Android breaking floor: minSdkVersion is now 24 and AndroidX WebKit is 1.16.0. Apps that still require API 19–23 must stay on 2.1.76 / Android 1.0.55.
  • Depend on platform-interface 1.1.22, Android 1.0.56, iOS 2.1.35, Windows 1.0.15, and macOS 1.1.10.

2.1.76 - 2026-08-21 #

  • Add cross-platform setAudioMuted / isAudioMuted, opt-in native DownloadJobController downloads, Android onVisualStateReady, iOS/macOS cookie observers, findString, Android Profile headers and prefetch, feature-gated AndroidX WebKit 1.15 navigation APIs, and iOS 26 obscured-content and session-storage helpers.
  • A null onDownloadStarting response remains notify-only.
  • Depend on platform-interface 1.1.21, Android 1.0.55, iOS 2.1.34, and macOS 1.1.10.

2.1.75 - 2026-08-21 #

  • Document, but do not remove, these deprecated public APIs. They still compile. Use the current names in new code (Deprecated APIs):
    • InAppWebViewGroupOptions / InAppWebViewOptions / AndroidInAppWebViewOptions / IOSInAppWebViewOptions and initialOptions / setOptions / getOptions (use InAppWebViewSettings, initialSettings, setSettings, getSettings)
    • InAppBrowserClassOptions, ChromeCustomTabsOptions, SafariOptions, PullToRefreshOptions, ContextMenuOptions (use the matching *Settings types)
    • onLoadError / onLoadHttpError (use onReceivedError / onReceivedHttpError)
    • onDownloadStart / onDownloadStartRequest (use onDownloadStarting)
    • androidOn* and iosOn* callbacks (use the unprefixed names)
    • clearCache(), findAllAsync / findNext / clearMatches (use clearAllCache and FindInteractionController)
    • IOS* / Android* type aliases (use the unprefixed types)
    • JavaScriptHandlerCallback (use JavaScriptHandlerFunction)
  • Deprecated InAppWebViewSettings.saveFormData now states that Android Autofill replaced WebView form-data saving. The setting is a no-op on API 26+ and has no Dart replacement; it is not removed.
  • Deprecated forceDark / forceDarkStrategy remain; use algorithmicDarkeningAllowed.
  • Depend on platform-interface 1.1.20 and Android 1.0.54.

2.1.74 - 2026-08-21 #

  • Depend on iOS 2.1.33, which opens system-browser URLs through UIApplication.open(_:options:completionHandler:) instead of the iOS 27 SDK-deprecated canOpenURL pre-check (#2882).

2.1.73 - 2026-08-21 #

  • Satisfy pub.flutter-io.cn Pana lints_core analysis by renaming the prewarmConnections parameter URLs to urls and declaring Future<void> on ServiceWorkerController.setServiceWorkerClient. The iOS MethodChannel payload key remains URLs.
  • Depend on platform-interface 1.1.19 and iOS 2.1.32.

2.1.72 - 2026-08-21 #

  • Compile Flutter web applications with --wasm by keeping dart:io localhost types behind dart.library.io and converting Web JavaScript bridge values to Dart primitives (#2811).
  • InAppLocalhostServer remains unsupported on web/WASM; the public onData callback now uses InAppLocalhostHttpRequest, which is a HttpRequest typedef on VM platforms.

2.1.71 - 2026-08-14 #

  • Add the opt-in InAppWebViewPreloader helper for starting a headless WebView before a route is displayed and reusing that same native WebView through InAppWebView(preloader: ...). Concurrent prewarm calls are coalesced and disposal selects the correct headless or KeepAlive ownership path.
  • Add the additive NavigationActionPolicy.ALLOW_WITHOUT_TRYING_APP_LINK option for keeping iOS/macOS Universal Link login and OAuth POST navigations inside the WebView; other platforms retain ALLOW behavior (#2866).
  • Extend InAppWebViewSettings.disableAutocorrection to Android, macOS, Windows, Linux, and Web in addition to iOS. The setting applies autocorrect="off" and spellcheck="false" to editable HTML elements, including elements added later by the page.
  • Update the platform implementations and platform interface for the cross-platform autocorrection setting.
  • Avoid duplicate native user/plugin script registration on Android and iOS while preserving retry behavior for failed Android registrations.
  • Start the Android/iOS lifecycle and settings performance refactor without changing public Dart APIs or MethodChannel payload contracts. Native keep-alive/headless ownership is now idempotent, and unchanged settings no longer trigger selected expensive native work.
  • Android, iOS, and macOS managers now snapshot and clear active/retained ownership before disposing every native WebView during plugin teardown.
  • Native disposal now finalizes the lifecycle state in a guaranteed cleanup path, even when an intermediate native cleanup operation returns early.
  • Extend the ownership hardening to macOS, Windows, Linux, and Web: duplicate IDs are replaced deterministically, WPE disposal gates callbacks before cleanup, and Web headless-to-regular transfer preserves the iframe and rebinds its channel/JavaScript view identity.
  • Coalesce Web iframe scroll callbacks at animation-frame cadence to reduce high-frequency channel dispatch and map allocation.
  • Add opt-in Android and iOS integration diagnostics for repeated keep-alive reattachment and headless-to-normal WebView ownership transfer.
  • Add device-free Android JVM and iOS native lifecycle regression coverage; physical WebView/provider behavior remains a separate runtime gate.
  • Split Android and iOS native WebView channel dispatch into internal feature handlers for JavaScript, settings, WebMessage, and lifecycle operations; public channel contracts remain unchanged.
  • Gate iOS and macOS outgoing WebView channel callbacks through lifecycle state and finish pending async JavaScript completions once during native teardown; coordinator operation IDs prevent duplicate completion accounting.
  • Complete stale iOS WebKit decision, authentication, dialog, and popup callbacks with native defaults after disposal.
  • Extend that boundary to iOS and macOS WebMessage and FindInteraction sub-delegates, including exactly-once pending MethodChannel result cleanup.
  • Use one native lifecycle source of truth for Android startup/renderer/scroll/ geometry guards, and reject stale outgoing channel events on Windows/Linux after disposal while preserving callback fallbacks.
  • Extend the Android lifecycle boundary to regular and headless channel events and decision callbacks, keeping native default decisions intact during teardown races.
  • Gate Android and iOS pull-to-refresh callbacks through the hosted WebView lifecycle so teardown cannot dispatch stale refresh events.
  • Make the Android lifecycle transfer diagnostic independent of optional onLoadStop delivery and validate 50 keep-alive plus 50 headless transfers on a physical device without uninstalling the app.
  • Validate the matching iOS lifecycle transfer and disposal diagnostics on a physical device without uninstalling the app.
  • Remove transferred headless WebViews from the old active ownership map before normal platform-view reattachment, preventing stale native owners.
  • Restore the transferred headless WebView in the active manager map after the handoff, keeping lookup and plugin teardown ownership complete.

2.1.67 - 2026-08-13 #

  • Add Windows pull-to-refresh support for pages without a vertical scrollbar through PullToRefreshSettings.allowWithNoScrollbar and the existing PullToRefreshController.onRefresh callback (#2760).
  • Update the platform-interface to 1.1.14 and Windows implementation to 1.0.13.

2.1.66 - 2026-08-13 #

  • Complete desktop container parity for scoped cookie operations on macOS and Linux, and add per-WebView proxy settings for macOS, Linux, and Windows. Windows proxy arguments are applied when a new WebView2 environment is created.
  • Update the platform-interface to 1.1.13, macOS to 1.1.8, Linux to 1.0.7, and Windows to 1.0.12.

2.1.65 - 2026-08-12 #

  • Add persistent ContainerController support for macOS, Windows, and Linux through each platform's native WebView data profile.

2.1.64 - 2026-08-12 #

  • Add ContainerController.clearContainerData for clearing Android and iOS container data without removing the container.
  • Update platform-interface to 1.1.11, Android to 1.0.52, and iOS to 2.1.29.

2.1.63 - 2026-08-12 #

  • Make Android CookieManager.flush persist cookies from all container profiles, preventing recent container session cookies from being lost when the app process is killed.
  • Update the Android implementation to 1.0.51.

2.1.62 - 2026-08-12 #

  • Add iOS 17+ per-WebView proxy configuration through InAppWebViewSettings.proxySettings; Android's existing global proxy API is unchanged.
  • Update platform-interface to 1.1.10 and iOS implementation to 2.1.28.

2.1.61 - 2026-08-12 #

  • Route iOS cookie operations scoped with webViewController to the WebView's WKWebsiteDataStore, completing the container storage isolation path. Default cookie operations remain unchanged. Physical Android and iOS container validation remains pending.
  • Update the iOS implementation dependency to 2.1.27.

2.1.60 - 2026-08-12 #

  • Add the additive ContainerController API and persistent WebView storage support for Android and iOS through InAppWebViewSettings.containerId. Android uses ProfileStore on WebView 110+; iOS uses WKWebsiteDataStore on iOS 17+ and requires a UUID container identifier. Unsupported platform/version combinations retain their existing profile behavior. Physical Android and iOS validation remains pending.
  • Update the platform-interface dependency to 1.1.9 and the Android implementation dependency to 1.0.50 and the iOS implementation to 2.1.26.

2.1.59 - 2026-08-12 #

  • Update the Windows implementation to 1.0.10 to serialize WebView2 controller resize and teardown calls, preventing the reported native crash when a late resize reaches a closing controller (#2752).

2.1.58 - 2026-08-12 #

  • Update the Android implementation to 1.0.49 to contain Android 16/OEM WebView text-selection action-mode resource failures (#2868).

2.1.57 - 2026-08-12 #

  • Add the additive InAppWebViewController.bridgeEvents helper for JavaScript event communication and typed JSON/serialized handlers (#2793).
  • Update the platform interface dependency to 1.1.8. Existing addJavaScriptHandler behavior remains unchanged.

2.1.56 - 2026-08-12 #

  • Update the Android implementation to 1.0.48 for conditional KGP application and AGP 9 built-in Kotlin compatibility (#2846).

2.1.55 - 2026-08-12 #

  • Add Android User-Agent Client Hints metadata customization through the new userAgentMetadata setting and USER_AGENT_METADATA capability (#2834). Update the platform interface dependency to 1.1.7 and the Android implementation dependency to 1.0.47. Chromium/WebView policy may still generate or suppress headers independently of this setting.

2.1.54 - 2026-08-12 #

  • Add Android Payment Request / Google Pay configuration through the new paymentRequestEnabled setting and PAYMENT_REQUEST capability (#2660). Android WebView/provider, host manifest, Google Pay, and physical-device validation remains pending.
  • Update the platform interface dependency to 1.1.6 and the Android implementation dependency to 1.0.46.

2.1.53 - 2026-08-12 #

  • Add Android WebAuthn support configuration through the new WebAuthenticationSupport setting and WEB_AUTHENTICATION capability metadata (PR #2743). Android runtime/provider validation remains pending.
  • Update the platform interface dependency to 1.1.5 and the Android implementation dependency to 1.0.45.

2.1.52 - 2026-08-12 #

  • iOS: fix requestFocus() for Flutter platform views by searching for the focusable WebKit content view (PR #2853). Physical iOS focus and document-visibility validation remains pending.
  • Update the iOS implementation dependency to 2.1.25.

2.1.51 - 2026-08-12 #

  • Android: support audio/* file chooser capture and chooser options without coupling audio recording to camera permission checks (PR #2823). Device/provider validation remains pending.
  • Update the Android implementation dependency to 1.0.44.

2.1.50 - 2026-08-12 #

  • Windows: update WIL and add MSVC 14.5x /FS and experimental coroutine compatibility settings for Visual Studio 2026 builds (#2839, #2869). Affected-toolchain native build and runtime validation remains pending.
  • Update the Windows implementation dependency to 1.0.9.

2.1.49 - 2026-08-12 #

  • Windows: detach FindInteractionController before WebView2 teardown so closing a child window does not invalidate the shared WebView2 environment (#2814). Windows 11/WebView2 multi-window runtime validation remains pending.
  • Update the Windows implementation dependency to 1.0.8.

2.1.48 - 2026-08-11 #

  • Android: complete the explicit CookieManager.flush() MethodChannel result for #2718, so callers do not wait indefinitely after the native persistence request. The asynchronous cookie-mutation ANR mitigation remains in place.
  • Update the root dependency to Android 1.0.43.

2.1.47 - 2026-08-10 #

  • Android: avoid UI-thread CookieManager.flush() calls after asynchronous cookie mutations for #2718. setCookie, deleteCookie, and deleteCookies now leave persistence asynchronous while the explicit flush API remains available. Android runtime/provider and Play Console validation remains pending.
  • Update the root dependency to Android 1.0.42.

2.1.46 - 2026-08-10 #

  • Android: reject private-sandbox file:// URIs returned by file choosers, including canonicalized traversal paths, across single-select, multi-select, and legacy callbacks (PR #2243). content:// selections and FileProvider capture URIs remain supported; hostile picker/provider runtime validation remains pending.
  • Update the root dependency to Android 1.0.41.

2.1.45 - 2026-08-10 #

  • iOS: correct the public geolocation decision-handler availability for #2831 to iOS 27+, keep the iOS 26 prompt path explicitly host/WebKit-owned, and update the iOS/platform-interface dependencies.

2.1.44 - 2026-08-10 #

  • Android: complete the local deprecation-warning compatibility pass for #2641 and #2685. Legacy API 19/20 fallbacks remain intact, package-owned Android/Java deprecation diagnostics are suppressed at the native compatibility boundary, and release/provider/publish validation remains pending.
  • Update the root dependency to Android 1.0.40.

2.1.43 - 2026-08-10 #

  • iOS: prevent stale-controller goBack() calls from surfacing MissingPluginException after scene or platform-view teardown (#2711); update the iOS implementation dependency to 2.1.23.

2.1.42 - 2026-08-10 #

  • Android: preserve activity results owned by other Flutter plugins while an InAppBrowser is open (#2797); unrelated results are no longer consumed by the WebView file chooser. Add focused coverage for the Android internal-storage path-handler serialization fix (#2709).
  • Update the root dependency to Android 1.0.39.

2.1.41 - 2026-08-10 #

  • Android: harden cold-start WebView provider initialization for #2843 and #2849 with a bounded startup fallback while preserving bridge and document-start registration retries. The API 35/WebView 124 profile/AOT diagnostic passes four clean cold-start cycles; physical, headless, and release/provider validation remains pending.
  • Update the root dependency to Android 1.0.38.

2.1.40 - 2026-08-10 #

  • Android: harden permission-request and permission-cancellation MethodChannel payload decoding for #2856, rejecting malformed origin/resources containers without aborting the Dart event dispatcher and filtering unknown resource entries. Focused Android regression coverage passes; device/provider validation remains pending.
  • Update the root dependency to Android 1.0.37.

2.1.39 - 2026-08-10 #

  • iOS: complete pending popup callAsyncJavaScript callbacks when a new navigation starts, preventing a lost callback during window.open, shouldOverrideUrlLoading, and navigate-away races (#2867). The iPhone 17 Pro iOS 26.2 Simulator diagnostic passes three attach/evaluate/navigate/dispose cycles; physical iOS 15-26/Xcode 16-26 validation remains pending.
  • Update the root dependency to iOS 2.1.22.

2.1.38 - 2026-08-10 #

  • iOS and Android: complete pending callAsyncJavaScript callbacks with a structured WebView disposed result before native WebView teardown, and ignore late platform callbacks during navigate-away/dispose/recreate cycles (#2654). The iPhone 17 Pro iOS 26.2 Simulator and API 35 Android diagnostics pass; physical iOS/Android provider validation remains pending.
  • Update root dependencies to Android 1.0.36 and iOS 2.1.21.

2.1.37 - 2026-08-09 #

  • iOS: restore the pre-keyboard UIScrollView zoom/offset and refresh the final platform-view layout so WKWebView's DOM viewport recovers after HTML input dismissal (#2787). The iPhone 17 Pro iOS 26.2 Simulator diagnostic passes; physical iOS 17/device validation remains pending.
  • Update the root dependency to iOS 2.1.20.

2.1.36 - 2026-08-09 #

  • Android: restore fullscreen state when the WebView renderer disappears, preventing a stale custom view and missing exit callback in the renderer/surface failure path (#2819). MediaTek/gralloc physical-device validation remains pending.
  • Update the root dependency to Android 1.0.35.

2.1.35 - 2026-08-09 #

  • Android: fix Kotlin-migration JavaScript injection recursion that could grow the main-thread queue and terminate the app with OutOfMemoryError during rapid navigation (#2580). The API 35 AVD/WebView 124 diagnostic passes; physical Android 10/11 OEM/provider validation remains pending.
  • Update the root dependency to Android 1.0.34.

2.1.34 - 2026-08-09 #

  • Android: harden InAppBrowser and Chrome Custom Tabs activity handoffs with the primitive/nested-Bundle codec, correct the manager channel namespace, and preserve Custom Tabs callbacks while the external tab is foreground (#2536). Android 35 AVD happy-path validation passes; malformed-extra, restore/rotation, and provider-matrix validation remain pending.
  • Android: fix the example release build output path and validate the release syncReleaseLibJars gate for #2687. The API 35 release APK builds, installs, and launches; clean JDK/provider/AAB/publish validation remains pending.
  • Update the root dependency to Android 1.0.33.

2.1.33 - 2026-08-09 #

  • Android: port the first deprecation-warning batch from upstream PR #2817, including explicit main-looper callback dispatch and API-level session-cookie compatibility paths (#2641, #2685). Remaining warning families and release-gate validation stay open.
  • Update the root dependency to Android 1.0.32.

2.1.32 - 2026-08-09 #

  • Android: prioritize shouldInterceptRequest callbacks on the main looper, cancel queued callbacks after timeout, and ignore late results to reduce freeze/deadlock risk during high-volume resource interception (#2580). Android provider/device validation remains pending.
  • Update the root dependency to Android 1.0.31.

2.1.31 - 2026-08-09 #

  • iOS/macOS: isolate the WebAuthenticationSession presentation provider behind its platform availability boundary, fixing the Xcode 26 compile failure (#2830).
  • Update root dependencies to iOS 2.1.19 and macOS 1.1.6.

2.1.30 - 2026-08-09 #

  • Android: validate optional native MethodChannel string fields before callback dispatch, preventing malformed provider values from reaching non-null String assignments (#2856). Android device/provider validation remains pending.
  • Update the root dependency to Android 1.0.30.

2.1.29 - 2026-08-08 #

  • Android: catch provider-specific forceDarkStrategy adapter casts, make WebView disposal idempotent, and guard detached Android 10 IME operations (#2673, #2594, #2555, #2654).
  • iOS: make native WebView disposal idempotent before observer/WebKit cleanup (#2654). Physical iOS/Android provider validation remains pending.
  • Update root dependencies to Android 1.0.29 and iOS 2.1.18.

2.1.28 - 2026-08-08 #

  • Android: make asynchronous WebView startup restartable after engine detach and ignore stale startup callbacks during reattach (#2843, #2849). Real-device release/AOT validation remains pending.
  • Android: retain bounded shouldInterceptRequest and non-blocking deleteAllCookies safeguards (#2580, #2718). Provider/device validation remains pending.
  • iOS: harden popup windowId KVO and JavaScript lifecycle, including stale-object disposal and page-world fallback (#2600, #2867).
  • iOS: serialize concurrent navigation-policy decisions before replacement-header loads (#2568).
  • iOS: retain the iOS 26 fullscreen and geolocation mitigations (#2710, #2831). Device validation for the iOS/Android runtime paths remains required.
  • Update root dependencies to Android 1.0.28 and iOS 2.1.17.

2.1.27 - 2026-08-08 #

  • Platform interface: clear stale localhost-server references when the underlying request stream closes or errors, keeping isRunning() accurate after external lifecycle termination on iOS and Android (#2720). Full release-mode resume/reload validation remains pending.
  • Update the root dependency to platform interface 1.1.3.

2.1.26 - 2026-08-08 #

  • iOS: defer loadUrl requests issued from shouldOverrideUrlLoading until the WebKit navigation decision handler has completed, preventing the white-screen/deadlock path when replacing navigation headers (#2568). Physical iOS navigation/header validation remains pending.
  • Update the root dependency to iOS 2.1.16.

2.1.25 - 2026-08-08 #

  • Android: refresh hybrid-composition WebView geometry after display-size changes and visibility recovery (#2721). Android 16/API 36 and OEM WebView runtime validation remains pending.
  • Update the root dependency to Android 1.0.27.

2.1.24 - 2026-08-08 #

  • macOS: synchronize native WebView frames with fractional Flutter platform-view bounds to prevent AppKit resize drift (#2826).
  • Update the root dependency to macOS 1.1.5.

2.1.23 - 2026-08-08 #

  • iOS: bridge iOS 26 geolocation permission decisions to the existing onGeolocationPermissionsShowPrompt callback (#2831).
  • Update root dependencies to platform interface 1.1.2 and iOS 2.1.15.

2.1.22 - 2026-08-08 #

  • Linux: fall back from failed GtkGLArea initialization to pixel-buffer rendering for GPU/DMA-BUF failures (#2861).
  • Update the root dependency to Linux 1.0.4.

2.1.21 - 2026-08-08 #

  • Android: guard file chooser callback casts during provider and activity lifecycle changes (#2783).
  • macOS: validate WebStorage cleanup payloads before native record operations (#2717).
  • Update root dependencies to Android 1.0.25 and macOS 1.1.4.

2.1.20 - 2026-08-08 #

  • Android: guard ChromeClient callbacks against unrelated WebView instances (#2697).
  • iOS: validate WebMessageChannel port indices and payloads before message operations (internal boundary hardening; not an upstream #2584 fix).
  • Update root dependencies to Android 1.0.24 and iOS 2.1.13.

2.1.19 - 2026-08-08 #

  • Android: guard page lifecycle callbacks against unrelated WebView instances (#2697).
  • iOS: validate proxy settings and rule payloads before constructing proxy configurations (#2805).
  • Update root dependencies to Android 1.0.23 and iOS 2.1.12.

2.1.18 - 2026-08-08 #

  • Android: guard URL-navigation callbacks against unrelated WebView instances (#2697).
  • macOS: guard custom URL-scheme callbacks against unrelated WebView instances (#2619).
  • Update root dependencies to Android 1.0.22 and macOS 1.1.3.

2.1.17 - 2026-08-08 #

  • Android: guard compatibility callbacks against unrelated WebView instances (#2782, #2783).
  • iOS: validate loadFile channel payloads before using asset paths (internal boundary hardening; not upstream #2654).
  • Update root dependencies to Android 1.0.21 and iOS 2.1.11.

2.1.16 - 2026-08-08 #

  • Android: ignore malformed WebStorage origin callback entries (#2717).
  • iOS: validate postUrl and loadData channel arguments before URL and typed-data use (internal boundary hardening; not upstream #2654).
  • Update root dependencies to Android 1.0.20 and iOS 2.1.10.

2.1.15 - 2026-08-08 #

  • Android: clear pending asynchronous WebView startup callbacks during plugin detach (#2697).
  • iOS: validate WebMessageListener creation payloads before force-free construction (internal boundary hardening; not an upstream #2584 fix).
  • Update root dependencies to Android 1.0.19 and iOS 2.1.9.

2.1.14 - 2026-08-08 #

  • iOS: harden cookie cleanup against missing or provider-specific origin properties (internal boundary hardening; not an upstream #2600 fix).
  • Update the root dependency to iOS 2.1.8.

2.1.13 - 2026-08-08 #

  • iOS: fail custom URL-scheme tasks safely when the callback WebView is not a Forge WebView (#2619).
  • Windows: guard headless WebView size access after controller teardown (#2778).
  • Update root dependencies to iOS 2.1.7 and Windows 1.0.7.

2.1.12 - 2026-08-08 #

  • Android: guard client-certificate callback ownership and cancel requests from unrelated WebView instances (#2782, #2783).
  • Update the root dependency to Android 1.0.18.

2.1.11 - 2026-08-08 #

  • Android: reject popup creation without a live WebView manager before allocating a synthetic window ID or storing a result message (#2763).
  • Record the #2745 JavaScript eval() claim as unestablished after source-to-sink review; no plugin-owned direct eval() sink was found.
  • Update the root dependency to Android 1.0.17.

2.1.10 - 2026-08-08 #

  • Linux: add an explicit FLUTTER_INAPPWEBVIEW_LINUX_DISABLE_GL=1 software-rendering fallback (#2861).
  • iOS: reject popup WebView creation when the window manager is unavailable (#2763).
  • Update root dependencies to iOS 2.1.6 and Linux 1.0.3.

2.1.9 - 2026-08-08 #

  • Android: snapshot InAppBrowser activity-result listeners before dispatch to make registration and teardown callbacks mutation-safe (internal lifecycle hardening).
  • Windows: avoid calling WebView2 bounds APIs after the browser controller has been released during resize/teardown (#2736).
  • Update root dependencies to Android 1.0.16 and Windows 1.0.6.

2.1.8 - 2026-08-08 #

  • Android: ignore renderer callbacks for non-plugin WebView instances instead of raising a cast exception (#2697).
  • iOS: retain guarded prompt presentation behavior when no visible presenter exists; runtime validation remains pending for the location-prompt lifecycle (#2831).
  • Update root dependencies to Android 1.0.15 and iOS 2.1.5.

2.1.7 - 2026-08-08 #

  • Android: ignore malformed allow-list payload entries instead of throwing dynamic cast errors (internal boundary hardening; not an upstream #2698/#2673/#2594 mapping).
  • macOS: make popup WebView registry cleanup unconditional during disposal to avoid stale browser-window ownership (#2707).
  • Update root dependencies to Android 1.0.14 and macOS 1.1.2.

2.1.6 - 2026-08-08 #

  • Android: safely decode nullable/provider-controlled requestFocusNodeHref and requestImageRef callback values (#2856).
  • Web: preserve current same-origin iframe URLs and return null for inaccessible cross-origin URLs (#2737).
  • Update the root package dependencies to Android 1.0.13 and Web 1.0.2.

2.1.5 - 2026-08-07 #

  • Android: reuse a shared main-looper dispatcher for synchronous resource callbacks and cap concurrent waits across WebView, service-worker, and custom asset paths.
  • Android: return the existing default null response immediately when the bounded callback capacity is exhausted or the dispatcher is unavailable.
  • Add regression coverage for shared dispatch capacity and timeout-bounded callback handling.

2.1.4 - 2026-08-07 #

  • Android: coalesce scroll channel updates to the next animation frame while preserving the latest position and skip duplicate progress values.
  • iOS: skip duplicate progress channel values and coalesce content-size KVO callbacks to one main-loop update while preserving the latest size.
  • Add Android and iOS source-level regression coverage for event coalescing and lifecycle cleanup.

2.1.3 - 2026-08-07 #

  • Android: stop re-injecting document-start scripts from every progress callback and suppress duplicate progress and scroll channel events.
  • Android: make deferred native registration retries and disposal idempotent so startup callbacks cannot target a disposed WebView.
  • iOS: complete pending legacy asynchronous JavaScript callbacks with a structured disposal error instead of dropping them during WebView teardown.
  • Add Android and iOS source-level regression coverage for the performance and lifecycle changes.

2.1.2 - 2026-08-06 #

  • iOS: return a structured error instead of entering WebKit's unsafe content-world evaluation path when the target frame is nil (#2771).
  • iOS: route page-world callAsyncJavaScript calls through the legacy shim on iOS 15-17, preserve custom-world isolation where supported, and report the iOS 16.0.x limitation explicitly (#2871).
  • Android: add a JavaScript bridge fallback for WebMessageListener on WebView providers without WEB_MESSAGE_LISTENER, including origin checks and ArrayBuffer conversion (#2474).
  • Add Android and iOS source-level regression coverage for the three compatibility paths.

2.1.1 - 2026-08-06 #

  • macOS: support ContextMenu across initial creation and runtime setContextMenu updates, including lifecycle callbacks and Dart item actions (#2683).

  • macOS: render custom ContextMenu.menuItems through the native WebKit NSMenu hook and forward item actions to Dart (#2855).

  • macOS: guard upgradeKnownHostsToHTTPS for macOS 11.3 and newer to avoid an unavailable-selector crash (#2741).

  • Android: invalidate and relayout WebViews when window visibility returns after a long screen-lock period (#2837).

  • Android: protect the optimized ProGuard filename from regressing to the unavailable legacy filename (#2852).

  • iOS/macOS: terminate the injected window.print assignment with a semicolon for strict JavaScript parsers (#2879).

  • macOS: prefer the active key window when presenting WebAuthenticationSession and fall back to a visible main window (#2813).

  • Windows: verify getTitle() reads the WebView2 document title (#2725).

  • iOS/macOS: add WebAuthenticationSessionSettings.additionalHeaderFields on iOS 17.4+ and macOS 14.4+.

  • Windows: apply InAppWebViewSettings.pageZoom through WebView2 ZoomFactor.

  • Android: add InAppWebViewController.setBackgroundColor for changing the native WebView background color (#2863).

  • iOS: preserve object data and Error stack/message content when forwarding console arguments (#2850).

  • iOS: keep the existing WKWebView in a native fullscreen container on iOS 26+ after a video seek or time change, avoiding the WebKit fullscreen surface that can become black or unresponsive.

  • iOS: add the InAppWebViewSettings.useNativeFullscreenContainer setting, enabled by default, with an opt-out for applications that need the standard WebKit fullscreen path.

  • Platform interface: expose and document the iOS-only fullscreen-container setting, including generated capability metadata.

  • Add iOS source-level regression coverage for the fullscreen message bridge, dynamic video tracking, native container restoration, and private per-WebView message authentication.

  • Document the mitigation and its remaining iOS/WebKit device-validation boundary for #2710.

2.0.7 - 2026-08-06 #

  • Web: report the current same-origin iframe URL after navigation instead of the requested src; inaccessible cross-origin URLs are reported as null rather than stale data.
  • Platform interface: document the Web iframe URL nullability and raise the federated dependency to 1.0.4.
  • iOS: defer popup WebView JavaScript initialization until Flutter attaches the platform view and use the page-world fallback for popup evaluateJavaScript and callAsyncJavaScript on iOS 14–17.
  • Add Web and iOS regression coverage and update issue triage for #2710, #2737, and #2867.
  • Refresh the iOS and Web example lockfiles to the new implementation and platform-interface versions.

2.0.6 - 2026-08-06 #

  • Windows: load Flutter assets through a restricted WebView2 virtual HTTPS origin so loadFile can resolve relative CSS, JavaScript, media, and fetch/XHR resources without relying on an opaque file: origin; update the integration expectation to https.
  • Windows: validate relative asset paths, reject traversal outside data/flutter_assets, and percent-encode virtual asset URLs.
  • Linux: improve WPE WebKit CMake diagnostics with supported pkg-config names, backend alternatives, and an absolute link to WPE_BACKEND.md.
  • Android: add a release-artifact checker for 16 KB ELF and APK/AAB alignment, and document that final host artifacts must be validated for transitive native libraries.
  • Example Android host: retain Flutter's android.builtInKotlin=false and android.newDsl=false compatibility flags after the Flutter tool migration.
  • Add regression coverage and update the issue triage documentation for #2703, #2862, and #2872.

2.0.5 - 2026-08-06 #

  • Android: prevent Samsung One UI icon-only selection actions from rendering the placeholder text false; native icons are preserved when available and invalid resource metadata is skipped safely.
  • Android: catch native action-mode Resources.NotFoundException failures so malformed OEM selection resources do not crash the Flutter application.
  • Linux: guard the WPE WebKit theme-color call behind WEBKIT_CHECK_VERSION(2, 50, 0), keeping older WebKit development packages buildable.
  • Windows: hide the WebView2 child window while the Flutter window is minimized and restore its visibility and position after the window returns.
  • Examples: pin the Linux and Windows federated examples to the local platform-interface and annotation packages so their lockfiles resolve the repository versions consistently.
  • Examples: regenerate the Linux and Windows plugin registrants with the Forge package names while refreshing their dependency locks.
  • Add regression coverage and update the issue triage documentation for #2868, #2780, and #2789.

2.0.4 - 2026-08-06 #

  • iOS: restore WebView scroll insets after the keyboard has fully hidden, preventing stale negative insets from stopping scrolling before the bottom.
  • iOS: require Flutter 3.38.6 or newer, where the Flutter engine fix for WKWebView gesture conflicts is available.
  • Android: remove the deprecated status-bar color API call and continue using edge-to-edge window insets.
  • Add iOS and Android regression coverage and update the issue triage documentation.

2.0.3 - 2026-08-06 #

  • Windows: prevent process-exit crashes from static WinRT/Composition COM releases during DLL unload and guard platform-view callbacks against disposed widgets and detached render boxes.
  • Android: bound synchronous shouldInterceptRequest waits and concurrent callbacks, avoid synchronous cookie flushes after asynchronous deletion, and guard IME operations until their views are attached to a window.
  • Android: let HTTP/HTTPS main-frame navigations continue natively when shouldOverrideUrlLoading returns ALLOW, preserving popup and request context while retaining cancellation for the active navigation.
  • Platform interface: document the Android navigation-context behavior and update the implementation dependency versions.
  • Add regression coverage for the Android lifecycle/interception boundaries and update the Windows/Android issue triage documentation.

2.0.2 - 2026-08-06 #

  • Android: ignore allowUniversalAccessFromFileURLs=true at the native WebSettings boundary to preserve file-origin isolation; use WebViewAssetLoader or a controlled HTTPS origin for local resources.
  • Android: coordinate WebView provider startup with AndroidX WebKit before bridge and document-start script registration, and defer normal platform-view registration until Flutter attaches the view.
  • Android: retry transient document-start registration failures without blocking the first load indefinitely, preventing cold-start crashes and missing onWebViewCreated callbacks.
  • Android: restore the Flutter container focus and input connection after HTML5 fullscreen exits, including hybrid-composition WebViews.
  • Add regression coverage for the Android universal file-access sink and document the three stability/security fixes.

2.0.1 - 2026-08-06 #

  • Platform interface: ignore unknown native values when decoding non-null exchangeable-enum collections, preventing forward-incompatible WebView2 permission resources from crashing the host application while preserving known resources.
  • Platform interface: add regression coverage for unknown WebView2 permission resource values.
  • Android: guard nullable MethodChannel event fields before constructing non-null WebView callback values, preventing malformed geolocation, permission, safe-browsing, touch-icon, and context-menu payloads from crashing the Dart dispatcher.
  • Android: add regression coverage for omitted callback fields, including the reported null context-menu title.
  • Android: clean up an active fullscreen custom view before WebView disposal and send a guarded onExitFullscreen fallback when renderer/GPU failures skip onHideCustomView.

2.0.0 - 2026-08-06 #

  • iOS: add UIScene-aware plugin registration and replace AppDelegate window access with active UIWindowScene resolution for iOS 15+.

  • iOS: raise the minimum deployment target to iOS 15.0 and remove pre-scene window and legacy authentication-session compatibility paths.

  • iOS: add Swift Package Manager support through the FlutterFramework package while preserving CocoaPods and existing resources.

  • Apple packages: update the Swift Collections SPM baseline to 1.6.0 for current Xcode package-trait resolution.

  • iOS examples: migrate AppDelegate registration to FlutterImplicitEngineDelegate and add the Flutter SceneDelegate configuration.

  • macOS: complete the Swift Package Manager manifest while preserving the existing CocoaPods dependency path.

  • Raise the Flutter baseline to >=3.38.0, where the UIScene plugin registration APIs are available.

  • Breaking: the root package now requires iOS 15.0 or newer.

1.0.1 - 2026-08-06 #

  • Android: release the complete Java-to-Kotlin and Kotlin DSL migration for the Forge implementation, preserving public Dart/channel contracts and WebView behavior.

  • Android: publish the null-safe WebView interface alignment, namespace migration, FileProvider hardening, and Android build verification completed for this release.

  • Android: verify the plugin Kotlin compilation, root/platform example debug APK builds, and FileProvider unit tests.

  • Android: complete the migration of the final seven native Java classes to Kotlin, preserving WebView lifecycle, channel, callback, navigation, permission, file chooser, dialog, and fullscreen behavior with explicit nullability.

  • Android: remove the remaining Java source files from the native implementation and verify that the migrated Kotlin code uses neither !! nor @JvmSuppressWildcards.

  • Android migration groundwork: switch both example Android hosts to Kotlin DSL and add the local internal-annotations override required to regenerate plugin metadata from the Forge packages.

  • Android migration: begin the staged Java-to-Kotlin conversion with the settings contract, FileProvider, platform utility, and Web Storage channel implementations, preserving their public channel behavior.

  • Android migration: remove temporary !!/wildcard interop from the converted classes and add lifecycle-safe messenger and channel argument handling.

  • Android migration: convert WebView feature checks and print adapter callbacks to Kotlin.

  • Android migration: convert find-interaction, tracing, pull-to-refresh, proxy, and context-menu settings models to Kotlin with explicit nullable parsing and Java-compatible map serialization.

  • Android migration: convert the Android resource, content-world, user-script, plugin-script, disposable, navigation-policy, and injection-time native types to Kotlin while preserving Java-visible factories and accessors.

  • Android migration: convert content-blocker enums and models to Kotlin with explicit map validation and Java-compatible list signatures.

  • Android migration: convert InAppBrowser, Chrome Custom Tabs, Print Job, and Process Global Config settings models to Kotlin while preserving public Java fields and channel map contracts.

  • Android migration: convert callback/channel delegates to Kotlin with lifecycle-safe channel disposal and nullable callback result decoding.

  • Android migration: convert URL protection, authentication challenge, and authentication response types to Kotlin while preserving Java-visible constructors, accessors, map contracts, and array signatures.

  • Android migration: convert credential database contracts, SQLite helper/DAO classes, and the credential database channel handler to Kotlin with explicit nullable handling and cursor lifecycle management.

  • Android migration: convert WebMessage, Print Job manager, and Custom Tabs service connection types to Kotlin while preserving public Java fields and callback signatures.

  • Android migration: convert JavaScript dialog responses, permission/file chooser models, and download start requests to Kotlin while preserving Java-visible constructors, accessors, and map contracts.

  • Android migration: convert Custom Tabs action/menu/toolbar models, custom scheme responses, find sessions, geolocation permission responses, hit-test results, Safe Browsing responses, and Size2D to Kotlin while preserving Java-visible boolean and map APIs.

  • Android migration: convert print attributes/job payloads, media size/resolution/margins, SSL/proxy/web-resource errors, and authentication challenges to Kotlin while preserving API-level guards and Java-visible map contracts.

  • Android migration: convert URLRequest, NavigationAction/CreateWindowAction, JavaScript handler data, and InAppWebViewRect to Kotlin while preserving navigation payloads and boolean accessor names.

  • Android migration: convert WebMessage port/compat models, WebResourceRequest/Response extensions, and InAppBrowserMenuItem to Kotlin while preserving public port fields, callback exceptions, byte-array, and header map contracts.

  • Android migration: convert WebMessageChannel to Kotlin while preserving Java channel delegate integration, public list/field surfaces, AndroidX WebKit callbacks, and messenger lifecycle checks.

  • Android migration: convert WebMessageListener to Kotlin while preserving AndroidX listener/reply proxy callbacks, origin-rule validation, public fields, and dispose behavior.

  • Android migration: convert WebMessage channel delegates and the PreferredContentModeOptionType enum to Kotlin with explicit argument validation and Java-visible static factories.

  • Android migration: convert Chrome Custom Tabs receiver/single-instance classes, ActivityResultListener, DisplayListenerProxy, and ProcessGlobalConfigManager to Kotlin while preserving intent extras, API/reflection guards, and messenger lifecycle behavior.

  • Android migration: convert Find Interaction, Tracing, Print Job, and InApp Browser channel delegates to Kotlin while preserving callback payloads, static manager calls, and dispose cleanup.

  • Android migration: convert Pull-to-refresh, Headless WebView, and Service Worker channel delegates to Kotlin with nullable-safe method argument validation, WebView feature checks, and synchronous callback exception compatibility.

  • Android migration: convert OnLoadResource, window focus/blur, print script generators, and PluginScriptsUtil to Kotlin while preserving Java-visible static constants/factories and JavaScript placeholder payloads.

  • Android migration: convert Find Interaction, Tracing, and Print Job controller/manager classes to Kotlin with preserved static factory calls, channel lifecycle cleanup, and nullable print-job handling.

  • Android migration: convert Service Worker, Pull-to-refresh, and Proxy manager/layout classes to Kotlin while preserving API/feature guards, callback flows, and proxy rule map contracts.

  • Android migration: convert WebViewAssetLoaderExt and its custom path-handler callback bridge to Kotlin while preserving asset/resource handler selection, API 21 response guards, and synchronous callback exception behavior.

  • Android migration: convert the keep-alive service, no-history Custom Tabs activity callbacks, and Headless WebView manager to Kotlin while preserving lifecycle callback fields and nullable WebView map cleanup.

  • Android migration: convert the CookieManager channel implementation to Kotlin while preserving API 19/21 cookie/sync flows, Java-visible static manager state, and cookie map payloads; required channel arguments now return explicit errors.

  • Android migration: convert PlatformWebView, InAppBrowserDelegate, InAppWebViewInterface, and the platform-view factory to Kotlin while preserving Java implementer overloads, callback/throws contracts, and generic collection signatures.

  • Android migration: convert CustomTabsHelper and CustomTabActivityHelper to Kotlin while preserving static package selection, keep-alive extras, overloads, and service connection callbacks.

  • Android migration: convert TrustedWebActivity, HeadlessInAppWebView, ChromeSafariBrowserManager, and InAppBrowserManager to Kotlin while preserving Trusted Web Activity settings, headless lifecycle, browser registries, system-browser chooser behavior, and activity extras.

  • Android migration: update the headless WebView channel delegate to call the Kotlin getSize() method explicitly after the JavaBean property interop changed.

  • Android migration: convert FlutterWebView, the renderer-process callback client, InputAwareWebView, and the threaded input-connection proxy view to Kotlin while preserving platform-view initial-load deferral, renderer callbacks, pre-N IME threading, and keyboard/focus reset behavior.

  • Android migration: convert WebViewChannelDelegateMethods and ChromeCustomTabsChannelDelegate to Kotlin while preserving method/event payload contracts, nullable channel inputs, and activity lifecycle cleanup.

  • Android migration: convert ContentBlockerHandler to Kotlin while preserving URL/domain/top-frame filtering, CSS injection, HTTPS rewriting, and resource-type detection.

  • Android migration: convert JavaScriptBridgeInterface to Kotlin while preserving bridge secret and origin/frame checks, internal handlers, print/callback flows, and dispose behavior.

  • Android migration: convert InAppWebViewManager to Kotlin while preserving Safe Browsing, WebView package/debugging, cache, KeepAlive, and JavaScript bridge-name channel methods.

  • Android migration: convert Util to Kotlin while preserving asset, certificate, network, JSON, screen, reflection, Java-static, and nested certificate-container APIs.

  • Android migration: convert UserContentController to Kotlin while preserving document-start/end script generation, content-world wrappers, origin/frame checks, and AndroidX ScriptHandler lifecycle.

  • Android migration: convert InAppWebViewSettings to Kotlin while preserving public Java fields, parse/toMap/getRealSettings map keys, API guards, and boxed nullable settings.

  • Android migration: convert PromisePolyfillJS to Kotlin while preserving the JavaScript source payload and Java-visible static group/source/factory APIs.

  • Android migration: convert InterceptAjaxRequestJS and InterceptFetchRequestJS to Kotlin while preserving interception JavaScript payloads, origin/frame settings, and Java-visible static factories/flags.

  • Android migration: convert JavaScriptBridgeJS to Kotlin while preserving the bridge name, utility/web-message variables, platform-ready script, bridge JavaScript payload, and static API.

  • Android build: remove legacy Jetifier/buildConfig flags and use AndroidX Multidex with the fully qualified Kotlin Gradle plugin ID in the example host.

1.0.0 #

  • First release of flutter_inappwebview_forge, a maintained fork of Flutter InAppWebView.
  • Reset the fork's package version line and federated package dependencies to 1.0.0.
  • Updated the Android and iOS dependency/stability baseline for the initial Forge release.
  • Original project attribution: Lorenzo Pichilli and contributors.
  • See ATTRIBUTION.md and the retained Apache License 2.0 notices for licensing information.

2.1.69 - 2026-08-13 #

  • iOS: refresh WebKit input views when disableInputAccessoryView is enabled, and add the iOS-only InAppWebViewSettings.disableAutocorrection option for editable HTML fields.

2.1.68 - 2026-08-13 #

  • Add the iOS 18+ InAppWebViewSettings.writingToolsBehavior setting for configuring Apple Writing Tools in WebViews (#2690).
  • Update the platform-interface to 1.1.15 and iOS implementation to 2.1.30.