Clearful 3.32.0
Release note Version 3.32.0 was released on 2026-04-18.
Make macOS payramp CTAs App Review-safe
Section titled “Make macOS payramp CTAs App Review-safe”- Changed the entry/sidebar Pro gates on macOS to open the existing paywall route instead of starting purchases inline.
- Updated the legacy payramp card on macOS to remove inline purchase/card-tap behavior and use a single explicit
View Pro plansCTA. - Preserved feature-aware paywall routing for entry media, audio, AI, and future panel types while keeping iOS/Android inline purchase behavior unchanged.
- Added focused tests covering the macOS route-only action mode, feature-aware paywall routing, and the one-button macOS CTA layout.
- Updated paywall media copy to use
Add Media/Add mediaso the upgrade surface reflects photo and video support.
Fix macOS video thumbnail generation and fallback visibility
Section titled “Fix macOS video thumbnail generation and fallback visibility”- Replaced the unsupported macOS
video_thumbnailplugin path with a nativeAVAssetImageGeneratormethod channel implementation. - Added debug-visible failure details plus production telemetry when video poster generation or thumbnail upload fails.
- Added a subtle “Preview unavailable” snackbar so users know the video upload succeeded even when its poster image could not be created.
- Added a focused service test for the new macOS thumbnail channel flow.
- Updated the macOS runner app delegate for secure restorable state compatibility with current Flutter/Xcode tooling.
Fix biometric auth hot-reload crash
Section titled “Fix biometric auth hot-reload crash”- Replaced the biometric route check’s
AutoRouter.of(context)ancestor lookup with direct root-router state reads so hot reload no longer crashes on deactivated widget trees. - Preserved previous route classification semantics by continuing to return
nullbefore the router has segments and by reading the current path rather than the full URL. - Added focused regression tests covering public vs protected paths, query-string handling, and no-context router reads.
Streaks v2 client data-capture groundwork
Section titled “Streaks v2 client data-capture groundwork”- Added native timezone integration via
flutter_timezoneinTimezoneService. - Added resilient timezone fallback logic and stream-driven timezone sync updates.
- Added immutable
streakV2snapshot payload on new entry writes (including quick-add and app-intent entries). - Hardened timezone resolution to ignore stale cached timezone values when the current device offset no longer matches.
- Updated
streakV2snapshot generation to derivelocalDayKey,localWeekKey, andutcOffsetMinutesfrom the samecreatedOn + timezonesource of truth. - Added targeted unit tests for timezone resolution and streak snapshot key generation.
- Documented rollout-time v1/v2 streak document states in:
mobile/docs/features/2026-02-08_streaks_v2_timezone_snapshot_capture.mdapi/docs/2026_02_06_streaks_v2_architecture_spec.md
Activation-first onboarding experiment on iOS
Section titled “Activation-first onboarding experiment on iOS”- Added a first-value treatment flow that shortens welcome, routes eligible new users into a dedicated first-entry screen, and delays the native paywall until after the first saved entry.
- Reworked the treatment onboarding screen around three curated guided journaling lanes, clearer copy, and a fixed bottom CTA bar.
- Added experiment-safe suppression for upgrade, reminders, rate-app, and feature announcement prompts while treatment users are in the first-entry flow.
- Added Pro-safe paywall routing so users who become subscribers inside the entry flow still land on
Todayinstead of being stranded on onboarding. - Changed blank free-write exits to fall through to
Todayinstead of looping users back into onboarding. - Hardened startup analytics property syncing by aliasing long Remote Config keys to Firebase-safe user property names.
Harden paywall presentation and fallback behavior
Section titled “Harden paywall presentation and fallback behavior”- Added a remote-config kill switch (
rc_paywalls_enabled) to disable RC Paywalls globally without an app update. - Added explicit fallback to native
UpgradeViewwhen offerings are unavailable or placement/offering resolution fails. - Added paywall telemetry events (
paywall_presented,paywall_present_failed) with offering and feature context to diagnose conversion drops. - Expanded
use_native_uimetadata parsing to support common truthy values (true,1,yes) and avoid config mismatch.