Skip to main content

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.
✨ Features
  • 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.
Offline analytics requires no additional configuration. πŸ“¦ Dependency Updates
  • Upgraded the Userpilot native SDK dependencies to iOS 1.4.0 and Android 1.4.0.
See Offline Mode for supported behavior and storage limits.

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 returns false. See Custom URL Scheme.
  • didHandleURL now waits for initialize instead 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 returns false and your own routing runs.
  • Preview experiences and test push notifications.
  • UserpilotRedactText and UserpilotIgnoreInteractions can now be nested. They take an optional redact / ignore flag and the marker closest to the interaction wins, so UserpilotRedactText(redact: false, child: …) re-enables capture inside a subtree an ancestor masked. The flag defaults to true, so existing code that passes no flag keeps working unchanged.
πŸ› Bug Fixes
  • 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.
⚑️ Performance
  • 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.
  • maxHierarchyDepth still 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 a Semantics label a rule depends on. See Tuning maxHierarchyDepth.
πŸ›  Improvements
  • Android now rejects SDK calls made before initialize with a notInitialized error instead of silently ignoring them, matching iOS.
  • Updated Userpilot native SDK dependencies β€” iOS 1.3.0, Android 1.3.0.
⚠️ Breaking Changes Autocapture was rewritten to derive these values from what each widget declares rather than from traversing the surrounding tree, which is both what made them vary between interactions and what made the work grow with the size of the screen. The values are now consistent and cheaper to produce, and they are different values β€” so rules matching them need rebuilding. Autocapture hierarchy changes in 1.2.0 shows each value before and after, and the steps to follow.
  • 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 reported attr__index="3" at one scroll offset and "2" at another. Rules that match a hierarchy containing a ListView or SliverList segment 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_value and view_tag are now read from the interacted element’s closest Semantics ancestor, bounded by maxHierarchyDepth, and fall back to the element’s own subtree only for fields no ancestor declared. The previous calculation collected every Semantics up 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 outside maxHierarchyDepth, or a view_tag taken from a descendant, need updating to the value on the nearest Semantics.
  • Captured hierarchies report attr__desc only 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 β€” a Checkbox’s label appearing on Viewport β€” 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 copied attr__desc values need updating to match the element that owns the label instead.
  • The recommended iOS deep link setup now uses the UIScene lifecycle, 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 UserpilotAutocaptureWidget and add UserpilotAutocaptureNavigatorObserver to your navigator observers, then enable what you want in UserpilotOptions β€” enableScreenAutoCapture for screen views and enableInteractionAutoCapture for taps, selections and text changes. See Auto Capture for the captured fields and the privacy controls.
  • UserpilotRedactText and UserpilotIgnoreInteractions to mask captured text or suppress capture for a subtree.
  • The sample app gained screens for exercising Auto Capture.
πŸ›  Improvements
  • 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

πŸš€ Description
This 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.
πŸ“¦ Dependency Updates
  • 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.
πŸ“¦ Dependency Updates
  • 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.
πŸ“¦ Dependency Updates
  • 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

πŸš€ Description
Updated 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

πŸš€ Description
Update 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

πŸš€ Description
This 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

πŸš€ Description
This 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

πŸš€ Description
Stable 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