1.3.0 β Sep 29, 2026
π Overview This release adds persistent offline analytics, preserves startup screen tracking, and improves Android build compatibility. π Bug Fixes- Preserved the latest startup screen until initialization completed, for both manual tracking and screen Auto Capture, without sending duplicate screen events.
- Fixed Android build configuration failures with Android Gradle Plugin 9 and aligned Kotlin compatibility with the native SDK.
- Added persistent offline storage for identify calls, screen views, custom events, and Auto Capture events.
- Added automatic batch sending of stored events when the connection returns, including events saved before an app restart.
- Upgraded the Userpilot native SDK dependencies to iOS 1.4.0 and Android 1.4.0.
1.2.0 β Sep 9, 2026
π Overview This release adds deep link / URL scheme handling, brings preview experiences and test push notifications to Flutter, and makes interaction autocapture substantially cheaper. β¨ New- Deep links / URL scheme handling via
Userpilot.didHandleURL(uri). Pass the whole URL, scheme and host included, and route the link yourself when it returnsfalse. See Custom URL Scheme. didHandleURLnow waits forinitializeinstead of dropping the link, so you no longer have to order the two calls. Up to 10 URLs wait at once, each for at most 10 seconds, after which it returnsfalseand your own routing runs.- Preview experiences and test push notifications.
UserpilotRedactTextandUserpilotIgnoreInteractionscan now be nested. They take an optionalredact/ignoreflag and the marker closest to the interaction wins, soUserpilotRedactText(redact: false, child: β¦)re-enables capture inside a subtree an ancestor masked. The flag defaults totrue, so existing code that passes no flag keeps working unchanged.
- Prevented queued deep links from being routed twice when native URL handling was slow, and safely returned failed links to the app for routing.
- Fixed Android navigation subscription cleanup so cancelling navigation events no longer disabled experience callbacks.
- Interaction autocapture no longer walks your whole widget tree on every touch, and no longer repeats the same work for each candidate it considers. Resolving a tap used to cost more the bigger the screen, which showed up as jank while scrolling anywhere in an app.
- Resolving a tap no longer scales with the size of the screen. On a 400-row screen it measured 71.8ms down to 23.2ms per tap, and is now flat rather than growing with the row count. Building the captured hierarchy used to search each ancestorβs whole subtree for an accessibility label, so the cost multiplied by both the depth of the hierarchy and the size of the screen.
- Collecting accessibility metadata no longer walks a widgetβs whole subtree when its nearest ancestor already declares the value, and no longer repeats that walk for each hit-test element that resolves to the same widget.
maxHierarchyDepthstill defaults to 25. Now that the cost it bounds is a small fixed amount, lowering it is not a meaningful performance lever β choose it for the elements you need to target on. It also bounds how far up accessibility fields are read, so a shallower window can drop aSemanticslabel a rule depends on. See Tuning maxHierarchyDepth.
- Android now rejects SDK calls made before
initializewith anotInitializederror instead of silently ignoring them, matching iOS. - Updated Userpilot native SDK dependencies β iOS 1.3.0, Android 1.3.0.
- Captured hierarchies report a lazy list rowβs own item index in
attr__index. It previously counted the rowβs position among the children the list had built, a set that changes as the viewport moves β the same row reportedattr__index="3"at one scroll offset and"2"at another. Rules that match a hierarchy containing aListVieworSliverListsegment need updating to the rowβs item index. - Accessibility fields resolve to the nearest declared source, with both search directions limited.
accessibility_label,accessibility_identifier,accessibility_hint,accessibility_valueandview_tagare now read from the interacted elementβs closestSemanticsancestor, bounded bymaxHierarchyDepth, and fall back to the elementβs own subtree only for fields no ancestor declared. The previous calculation collected everySemanticsup to the root and throughout the subtree before choosing, so the value could come from far away in the tree. Rules matching a value that came from outsidemaxHierarchyDepth, or aview_tagtaken from a descendant, need updating to the value on the nearestSemantics. - Captured hierarchies report
attr__desconly on the element that carries the accessibility label. It previously searched each nodeβs whole subtree, so an unrelated childβs label was copied onto every ancestor segment β aCheckboxβs label appearing onViewportβ and the value changed depending on which rows a lazy list happened to have built, meaning the same element could report different hierarchies at different scroll positions. Targeting rules that match one of those copiedattr__descvalues need updating to match the element that owns the label instead. - The recommended iOS deep link setup now uses the
UIScenelifecycle, which requires Flutter 3.38.0 or later in your app. The previous app-delegate setup still works below that version and stays documented.
1.1.0 β Aug 16, 2026
π Overview This release introduces Auto Capture, which records screen views and interactions from your widget tree without you instrumenting each one. β¨ New- Auto Capture support. Wrap your app in
UserpilotAutocaptureWidgetand addUserpilotAutocaptureNavigatorObserverto your navigator observers, then enable what you want inUserpilotOptionsβenableScreenAutoCapturefor screen views andenableInteractionAutoCapturefor taps, selections and text changes. See Auto Capture for the captured fields and the privacy controls. UserpilotRedactTextandUserpilotIgnoreInteractionsto mask captured text or suppress capture for a subtree.- The sample app gained screens for exercising Auto Capture.
- Expanded the README and developer documentation.
- Added unit test coverage.
- Updated Userpilot native SDK dependencies β iOS 1.2.2, Android 1.2.2.
1.0.14 β May 21, 2026
π DescriptionThis release includes improvements to cached event handling and event processing stability in the mobile SDK. π Improvements
- Added automatic cleanup of cached track events by invoking clearCachedEvent() after processing to prevent duplicate event handling and tracking.
1.0.13 β Mar 15, 2026
π Overview This release focuses on upgrading Userpilot iOS SDK dependency. π Bug Fixes- iOS: Fixed a crash related to socket by moved Socket, Channel, and timer callbacks to the main thread, removed internal locks, and centralized delegate callbacks. Added robust push timeout handling, limited automatic socket reconnects to 3, and simplified connect/disconnect logic.
1.0.12 β Feb 10, 2026
π Overview This release focuses on upgrading Userpilot SDK dependencies and improving overall stability across Android and iOS platforms. π Bug Fixes- Android: Fixed WindowLeaked and BadTokenException crashes by ensuring dialogs are only shown when the hosting Activity is in a valid lifecycle state.
- iOS: Fixed a rare crash related to socket connection error handling by adding additional safety checks and improving thread handling during asynchronous network operations.
1.0.11 β Jan 6, 2026
π Overview Resolved build failure issues. π Bug Fixes- Fixed Android build configuration issues.
1.0.10 β Dec 15, 2025
π Overview Improve reporting for surveys. π Improvements- Added submissionId parameter to all Survey events.
- Upgraded Userpilot native SDK dependencies - iOS 1.0.15, Android 1.0.14.
1.0.9 β Nov 12, 2025
π Overview Improve reporting for surveys. π Improvements- Added submissionId parameter to Survey List View and Step View to improve exported answers reports.
- Upgraded Userpilot native SDK dependencies - iOS 1.0.14, Android 1.0.13.
1.0.8 β Nov 3, 2025
π Overview This release introduces support for the latest Android platform requirements, improves media handling, and enhances stability across the SDK. π Bug Fixes- Fix Gif image in mobile content.
- Resolved issue where lazy initializer dependencies not intialized.
- Upgraded Userpilot Android SDK to v1.0.12.
1.0.7 β Oct 28, 2025
π Overview This release includes enhancements, improved user experience. π Improvements- Enhanced keyboard visibility detection
1.0.6 β Oct 23, 2025
π Overview This release includes minor bug fixes and improvements. π Bug Fixes- Fixed an issue where the disableRequestPushNotificationsPermission configuration option was not properly recognized.
1.0.5 β Sep 29, 2025
π DescriptionUpdated native SDK dependencies, introduced new configuration options, refined core logic, and resolved multiple issues to improve stability, consistency, and scalability of the Userpilot SDK. π Motivation and Context
- Update plugin to support SPM.
- Upgrade native SDK dependencies, iOS 1.0.12, Android 1.0.10
- Added a configuration option to disable automatic push notification permission requests.
- Enhanced user property update handling with smoother fake reload support.
- Fixed processing of pending content to ensure consistent delivery.
- Ensured screen events are requested after returning from background when active content is visible.
- Refined logout flush queue logic for more reliable event cleanup.
- Improved state management during late SDK initialization.
- Enhanced fetching of active experiences and logout handling for pending content.
- Updated handling of application state transitions.
- Minor enhancements on Experiences UI.
- Refactored ExperiencesPublisher and AnalyticsPublisher to improve maintainability and scalability.
1.0.4 β Aug 14, 2025
π DescriptionUpdate native SDK dependencies - version 1.0.7 π Motivation and Context
- Refined anonymous user tracking logic to consistently track the same anonymous user per device.
- Updated the README file.
1.0.3 β Jul 16, 2025
π DescriptionThis update upgrades to the latest native SDK versions and focuses on improving session handling and code quality. It enhances logout behavior, fixes session issues in edge cases, and ensures a more stable and reliable SDK experience overall. π Motivation and Context
- Upgraded to the latest native SDKs for improved stability and compatibility.
- Improved logout flow to ensure proper session cleanup.
- Fixed a bug affecting session start status in specific H-case scenarios.
1.0.2 β Jul 14, 2025
π DescriptionThis update refines experience tracking and enhances integration with the underlying native SDKs for better debugging and developer insight. π Motivation and Context
- Updated Userpilot iOS and Android SDK dependencies for consistency and stability across platforms.
- Enhanced experience logging to provide clearer visibility into step and state transitions.
1.0.1 β Jul 2, 2025
π DescriptionStable release 1.0.1 of the Userpilot Flutter Plugin. This update includes essential enhancements, improved native SDK integration, and infrastructure updates to support future development and maintainability. π Motivation and Context
- Updated dependencies to Userpilot iOS and Android SDK v1.0.2 for improved stability and feature support.
- Added a pull request template to streamline future contributions.
- Improved README documentation for easier setup and integration guidance.
1.0.0 β Jun 17, 2025
π Descriptionβ¬οΈ Update native SDK dependencies - version 1.0.1