btx 0.0.21
btx: ^0.0.21 copied to clipboard
BTX Flutter SDK for customer app telemetry, feature flags, messaging, and native integrations.
Changelog #
Unreleased #
0.0.21 - 2026-08-14 #
- Improve request reliability and runtime diagnostics across supported app configurations.
0.0.20 - 2026-08-14 #
- General improvements and reliability updates.
0.0.19 - 2026-08-11 #
- Improve telemetry reliability by stopping retries for permanent configuration and authentication errors while preserving queued logs for recovery.
- Add bounded retry backoff for temporary network and server failures, and prevent overlapping requests.
- Expose typed SDK status and disable reasons for configuration errors without crashing host apps.
- Recover expired sessions automatically and improve privacy-safe diagnostics for rejected SDK requests.
0.0.18 - 2026-08-07 #
- Add a typed
BtxConversationPurposeto launch contexts and returned threads. - Let host-owned feedback forms mark created threads as feedback so BTX operator surfaces can label and prioritize them separately from support requests.
0.0.17 - 2026-08-07 #
- Capture iOS and Android operating-system version plus low-cardinality client device context automatically during facade and bundled bootstrap.
- Report
sdkNameandsdkVersionin every SDK-owned app context and expose them throughBtx.sdkNameandBtx.sdkVersion. - Avoid collecting persistent device identifiers, user-assigned names, serial numbers, storage, or memory data.
- Expand
device_info_plusandpackage_info_pluscompatibility so current Captify dependencies can resolve without host-side version overrides.
0.0.16 - 2026-07-24 #
- Render URLs in messenger message bodies as tappable external links.
- Add a long-press copy action for messenger message text.
- Normalize missing-scheme links to
https://...and show a visible failure message when a link cannot be opened externally.
0.0.15 - 2026-07-22 #
- Android apps can now receive BTX messenger push notifications. Host apps bind
their Firebase token and notification-open callbacks through
Btx.push, and BTX handles registration, cleanup, and tap routing into the right messenger thread. - Android notification permission is requested from the existing first-messenger-presentation flow, so host apps do not need a separate BTX permission prompt path.
- Android push stays Firebase-neutral in the
btxpackage. Host apps keep ownership offirebase_core,firebase_messaging,google-services.json, and any non-BTX notification behavior. - Push taps are validated against the configured project and Android package before opening BTX UI. Sign-out, customer changes, messenger disable, and SDK disposal unregister or block stale BTX push bindings.
- Existing iOS/APNs behavior is unchanged.
0.0.14 - 2026-07-22 #
- Reduce background API usage while preserving realtime messenger updates.
- Improve message reliability during reconnects, lifecycle changes, and event bursts.
- Fix read and unread state synchronization across active SDK sessions.
- Prevent stale requests from updating state after backgrounding, disposal, or customer identity changes.
- Improve optimistic message ordering, including on devices with inaccurate clocks.
0.0.13 #
- Add
Btx.messenger.createThread(...)so host-owned feedback forms can create a customer message thread with an initial customer-authored message without opening the SDK-owned messenger UI.
0.0.12 #
- Keep unread assistant launch and resume banners for hidden messenger sessions.
- Persist explicit banner dismissals so the same unread assistant reply does not re-banner until a newer assistant reply arrives.
0.0.11 #
- Center the messenger composer send button in single-line drafts while keeping it pinned to the bottom-right as the composer expands for wrapped or multi-line text.
0.0.10 #
- Fix image attachment previews in SDK-owned messenger sheets so tapping a thumbnail opens an in-messenger lightbox immediately instead of pushing a host navigator dialog underneath the sheet.
- Add an explicit lightbox close control and clear pending previews when the messenger sheet is dismissed.
0.0.9 #
- Add
navigatorKeysupport toBtxConfigurationso host apps can let the SDK mount messenger sheets, foreground in-app notifications, and push authorization coordination from the root navigator overlay without wrapping the whole app inBtxHost. - Cancel pending facade/headless setup work during SDK disposal so stale async configure, identity, or headless sync operations cannot outlive teardown.
0.0.8 #
- Canonicalize runtime platform metadata before SDK auth so Android sessions do not inherit stale iOS bundle identifiers from explicit app context.
- Resolve platform-specific keys from explicit app context when package metadata is unavailable, keeping Android telemetry and messenger bootstraps aligned.
- Harden Android messenger presentation and foreground-notification rendering
for host apps that mount
BtxHostfromMaterialApp.builder. - Use the configured primary CTA/accent color for unread thread indicators.
- Polish SDK-owned in-app notification styling with a translucent blurred surface, filled accent chat icon, and no explicit outline.
- Keep SDK-owned in-app notifications visible until the user dismisses them, opens the related thread, or a newer notification replaces them.
0.0.7 #
- Remove legacy structured-input and delivery-mode logging APIs; host apps now
use
Btx.log(...)for all customer-app telemetry. - Flush queued logs automatically after enqueue instead of requiring host apps to choose delivery policy.
- Keep
Btx.flush(...)as an advanced wait point while removing normal host-side flush routing from examples and customer integration code.
0.0.6 #
- Move public feature-flag state behind an internal active-customer scoped store so transient runtime/session churn cannot clear loaded flags while the same customer remains active.
- Keep telemetry runtime feature flags tied to the current active session binding instead of publishing flags from historical sessions touched while flushing queued logs.
- Preserve loaded feature flags across app-session changes, foreground refreshes, flushes, and runtime refreshes; clear them only on explicit sign-out, dispose, or active customer changes.
0.0.5 #
- Serialize and generation-guard identity sync work so stale async identity operations cannot publish unloaded feature flags after a newer signed-in identity has won.
- Keep feature-flag listeners stable during noisy host auth/user refreshes so host apps do not need their own BTX identity queues or generation counters.
0.0.4 #
- Refresh feature-flag snapshots when an active identity is established and when the host app returns to the foreground.
- Add
Btx.featureFlagsListenableandBtxCustomerSdk.featureFlagsListenableso host UI can rebuild when feature flag values change.
0.0.3 #
- Add
BtxPublishableClientKeysandBtxConfiguration.withPublishableClientKeys(...)so host apps can provide one key set and let the SDK pick the correct iOS bundle ID or Android package client key. - Auto-resolve app version, build number, platform, bundle ID, and package name in the facade bootstrap path while preserving explicit host attributes.
- Serialize facade configure/identify operations inside
Btxso host apps do not need their own generation counters or identity sync queues. - Add
Btx.ready()andBtx.featureFlagEnabled(...)for host code that needs to wait for pending configure/identity work before reading feature flags. - Make
Btx.log(...)wait for in-flight configure work before writing telemetry.
0.0.2 #
- Widen the
package_info_plusdependency bound so host Flutter apps already on the 9.x package line can consumebtxwithout dependency overrides.
0.0.1 #
- Initial public release of
btx. - Add the facade-first public API:
Btx.configure,Btx.identify,Btx.log,Btx.refreshFeatureFlags, andBtx.messenger. - Add
BtxHostas the root widget anchor for SDK-owned messenger sheets, foreground notification UI, lifecycle observation, and iOS push bridge setup. - Ship customer app telemetry, feature flags, support messaging, image upload, in-app message notifications, unread reminders, theme customization, and iOS push registration/token forwarding.
- Rebuild the repo demo app around fixture mode and real BTX project mode.
0.1.7 #
- Add
BtxCustomerSdk.refreshFeatureFlags()so Flutter host apps can re-evaluate customer-app feature flags on demand through the existing session-ping route. - Replace the stored feature-flag snapshot after an explicit refresh in both main-isolate and worker-isolate telemetry runtimes.
- Clarify that
sdk.featureFlagsandsdk.isFeatureEnabled(...)stay synchronous reads, whileawait sdk.refreshFeatureFlags()is the explicit path for picking up live BTX targeting changes before session expiry.
0.1.5 #
Breaking API change:
- Replace
appId/apiKeyconfig withpublishableClientKeyso Flutter matches the iOS customer SDK auth flow. - Send
x-btx-publishable-client-keyon static customer-app bootstrap/session requests and keep bearer session tokens for runtime requests. - Change bundled credentials files to use
publishableClientKeyper platform. - Align messenger push payload matching with the iOS SDK by keying customer-messenger notifications on
projectId. - Clarify the SDK-owned worker envelope flow for background telemetry forwarding.
0.1.4 #
Breaking API change:
BtxCustomerSdk.initialize(initialization: ...)is now the single public bootstrap path.- Add
BtxCustomerSdkInitialization.explicit(...)and.bundledCredentials(...)as the supported initialization strategies. - Add
BtxTelemetryConfiguration.runtimeModeso the SDK facade can run telemetry on the main isolate or a worker isolate. - Add
sdk.setAppSession(...)for explicit app-session replacement after initialization. - Remove
BtxHeadlessBootstrap,BtxHeadlessCoordinator, andBtxHeadlessTelemetryfrom the public package surface. - Add
BtxCustomerSdkScopefor widget-tree lookup of an already created SDK instance. - Rewrite the README and architecture docs around the unified bootstrap model and advanced telemetry runtime behavior.
0.1.3 #
- Rewrite the public README around headless telemetry integration for Flutter host apps.
- Document initialization, app-session ownership, custom activities, structured events, diagnostic logs, lifecycle flush behavior, and shutdown ordering.
- Add inline Dart API docs for the public telemetry surface so IDE usage guidance matches the published README.
0.1.1 #
- Default
BtxClientConfigurationto BTX production. - Add
BtxClientConfiguration.withApiBaseUrl(...)for explicit staging or local overrides.
0.1.0 #
- Initial public release of
btx. - Ships customer messenger UI, host telemetry capture, and iOS push bridging.
- Publishes under the new
btxpackage name with aligned native plugin identifiers.