flutter_inappwebview_forge 2.1.77
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, WindowsDownloadJobControllerparity, and iOS 26conversationContext(Smart Reply).
- Profile
- Android breaking floor:
minSdkVersionis now 24 and AndroidX WebKit is1.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 nativeDownloadJobControllerdownloads, AndroidonVisualStateReady, 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
nullonDownloadStartingresponse 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/IOSInAppWebViewOptionsandinitialOptions/setOptions/getOptions(useInAppWebViewSettings,initialSettings,setSettings,getSettings)InAppBrowserClassOptions,ChromeCustomTabsOptions,SafariOptions,PullToRefreshOptions,ContextMenuOptions(use the matching*Settingstypes)onLoadError/onLoadHttpError(useonReceivedError/onReceivedHttpError)onDownloadStart/onDownloadStartRequest(useonDownloadStarting)androidOn*andiosOn*callbacks (use the unprefixed names)clearCache(),findAllAsync/findNext/clearMatches(useclearAllCacheandFindInteractionController)IOS*/Android*type aliases (use the unprefixed types)JavaScriptHandlerCallback(useJavaScriptHandlerFunction)
- Deprecated
InAppWebViewSettings.saveFormDatanow 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/forceDarkStrategyremain; usealgorithmicDarkeningAllowed. - 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-deprecatedcanOpenURLpre-check (#2882).
2.1.73 - 2026-08-21 #
- Satisfy pub.flutter-io.cn Pana
lints_coreanalysis by renaming theprewarmConnectionsparameterURLstourlsand declaringFuture<void>onServiceWorkerController.setServiceWorkerClient. The iOS MethodChannel payload key remainsURLs. - Depend on platform-interface 1.1.19 and iOS 2.1.32.
2.1.72 - 2026-08-21 #
- Compile Flutter web applications with
--wasmby keepingdart:iolocalhost types behinddart.library.ioand converting Web JavaScript bridge values to Dart primitives (#2811). InAppLocalhostServerremains unsupported on web/WASM; the publiconDatacallback now usesInAppLocalhostHttpRequest, which is aHttpRequesttypedef on VM platforms.
2.1.71 - 2026-08-14 #
- Add the opt-in
InAppWebViewPreloaderhelper for starting a headless WebView before a route is displayed and reusing that same native WebView throughInAppWebView(preloader: ...). Concurrent prewarm calls are coalesced and disposal selects the correct headless or KeepAlive ownership path. - Add the additive
NavigationActionPolicy.ALLOW_WITHOUT_TRYING_APP_LINKoption for keeping iOS/macOS Universal Link login and OAuth POST navigations inside the WebView; other platforms retainALLOWbehavior (#2866). - Extend
InAppWebViewSettings.disableAutocorrectionto Android, macOS, Windows, Linux, and Web in addition to iOS. The setting appliesautocorrect="off"andspellcheck="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
onLoadStopdelivery 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.allowWithNoScrollbarand the existingPullToRefreshController.onRefreshcallback (#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
ContainerControllersupport for macOS, Windows, and Linux through each platform's native WebView data profile.
2.1.64 - 2026-08-12 #
- Add
ContainerController.clearContainerDatafor 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.flushpersist 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
webViewControllerto the WebView'sWKWebsiteDataStore, 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
ContainerControllerAPI and persistent WebView storage support for Android and iOS throughInAppWebViewSettings.containerId. Android uses ProfileStore on WebView 110+; iOS usesWKWebsiteDataStoreon 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.bridgeEventshelper for JavaScript event communication and typed JSON/serialized handlers (#2793). - Update the platform interface dependency to 1.1.8. Existing
addJavaScriptHandlerbehavior 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
userAgentMetadatasetting andUSER_AGENT_METADATAcapability (#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
paymentRequestEnabledsetting andPAYMENT_REQUESTcapability (#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
WebAuthenticationSupportsetting andWEB_AUTHENTICATIONcapability 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 #
2.1.49 - 2026-08-12 #
- Windows: detach
FindInteractionControllerbefore 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, anddeleteCookiesnow leave persistence asynchronous while the explicitflushAPI 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 surfacingMissingPluginExceptionafter 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
callAsyncJavaScriptcallbacks with a structuredWebView disposedresult 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
UIScrollViewzoom/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
OutOfMemoryErrorduring 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-
Bundlecodec, 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
syncReleaseLibJarsgate 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 #
2.1.32 - 2026-08-09 #
- Android: prioritize
shouldInterceptRequestcallbacks 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
WebAuthenticationSessionpresentation 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
Stringassignments (#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
forceDarkStrategyadapter 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
shouldInterceptRequestand non-blockingdeleteAllCookiessafeguards (#2580, #2718). Provider/device validation remains pending. - iOS: harden popup
windowIdKVO 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
loadUrlrequests issued fromshouldOverrideUrlLoadinguntil 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
onGeolocationPermissionsShowPromptcallback (#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 #
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 #
2.1.18 - 2026-08-08 #
2.1.17 - 2026-08-08 #
2.1.16 - 2026-08-08 #
- Android: ignore malformed WebStorage origin callback entries (#2717).
- iOS: validate
postUrlandloadDatachannel 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 #
2.1.12 - 2026-08-08 #
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 directeval()sink was found. - Update the root dependency to Android 1.0.17.
2.1.10 - 2026-08-08 #
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 #
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
nullresponse 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
callAsyncJavaScriptcalls 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
WebMessageListeneron WebView providers withoutWEB_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
ContextMenuacross initial creation and runtimesetContextMenuupdates, including lifecycle callbacks and Dart item actions (#2683). -
macOS: render custom
ContextMenu.menuItemsthrough the native WebKitNSMenuhook and forward item actions to Dart (#2855). -
macOS: guard
upgradeKnownHostsToHTTPSfor 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.printassignment with a semicolon for strict JavaScript parsers (#2879). -
macOS: prefer the active key window when presenting
WebAuthenticationSessionand fall back to a visible main window (#2813). -
Windows: verify
getTitle()reads the WebView2 document title (#2725). -
iOS/macOS: add
WebAuthenticationSessionSettings.additionalHeaderFieldson iOS 17.4+ and macOS 14.4+. -
Windows: apply
InAppWebViewSettings.pageZoomthrough WebView2ZoomFactor. -
Android: add
InAppWebViewController.setBackgroundColorfor 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
WKWebViewin 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.useNativeFullscreenContainersetting, 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 asnullrather 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
evaluateJavaScriptandcallAsyncJavaScripton 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
loadFilecan resolve relative CSS, JavaScript, media, and fetch/XHR resources without relying on an opaquefile:origin; update the integration expectation tohttps. - 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-confignames, backend alternatives, and an absolute link toWPE_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=falseandandroid.newDsl=falsecompatibility 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.NotFoundExceptionfailures 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
shouldInterceptRequestwaits 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
shouldOverrideUrlLoadingreturnsALLOW, 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=trueat the native WebSettings boundary to preserve file-origin isolation; useWebViewAssetLoaderor 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
onWebViewCreatedcallbacks. - 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
onExitFullscreenfallback when renderer/GPU failures skiponHideCustomView.
2.0.0 - 2026-08-06 #
-
iOS: add UIScene-aware plugin registration and replace AppDelegate window access with active
UIWindowSceneresolution 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.0for current Xcode package-trait resolution. -
iOS examples: migrate AppDelegate registration to
FlutterImplicitEngineDelegateand 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, andProcessGlobalConfigManagerto 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
PluginScriptsUtilto 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
WebViewAssetLoaderExtand 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
CustomTabsHelperandCustomTabActivityHelperto Kotlin while preserving static package selection, keep-alive extras, overloads, and service connection callbacks. -
Android migration: convert
TrustedWebActivity,HeadlessInAppWebView,ChromeSafariBrowserManager, andInAppBrowserManagerto 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
WebViewChannelDelegateMethodsandChromeCustomTabsChannelDelegateto Kotlin while preserving method/event payload contracts, nullable channel inputs, and activity lifecycle cleanup. -
Android migration: convert
ContentBlockerHandlerto Kotlin while preserving URL/domain/top-frame filtering, CSS injection, HTTPS rewriting, and resource-type detection. -
Android migration: convert
JavaScriptBridgeInterfaceto Kotlin while preserving bridge secret and origin/frame checks, internal handlers, print/callback flows, and dispose behavior. -
Android migration: convert
InAppWebViewManagerto Kotlin while preserving Safe Browsing, WebView package/debugging, cache, KeepAlive, and JavaScript bridge-name channel methods. -
Android migration: convert
Utilto Kotlin while preserving asset, certificate, network, JSON, screen, reflection, Java-static, and nested certificate-container APIs. -
Android migration: convert
UserContentControllerto Kotlin while preserving document-start/end script generation, content-world wrappers, origin/frame checks, and AndroidXScriptHandlerlifecycle. -
Android migration: convert
InAppWebViewSettingsto Kotlin while preserving public Java fields,parse/toMap/getRealSettingsmap keys, API guards, and boxed nullable settings. -
Android migration: convert
PromisePolyfillJSto Kotlin while preserving the JavaScript source payload and Java-visible static group/source/factory APIs. -
Android migration: convert
InterceptAjaxRequestJSandInterceptFetchRequestJSto Kotlin while preserving interception JavaScript payloads, origin/frame settings, and Java-visible static factories/flags. -
Android migration: convert
JavaScriptBridgeJSto 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
disableInputAccessoryViewis enabled, and add the iOS-onlyInAppWebViewSettings.disableAutocorrectionoption for editable HTML fields.