Skip to main content
Version: Next 🚧

Android SDK changelog

All notable changes to the Android SDK are documented here. This project follows Keep a Changelog and Semantic Versioning.

[0.4.3] - 2026-10-12​

New​

  • FedoLogHandler: set logHandler in the Fedo.initialize config to forward SDK logs (level, message, throwable) to your own logging or error tracking service. It receives every level, so filter by level in your handler. Exceptions thrown by the handler are caught and can't break the SDK
  • FedoLogHandler.Logcat: a ready-made handler that logs to Logcat under the Fedo tag

Deprecated​

  • debug: use logHandler = FedoLogHandler.Logcat instead. debug = true still logs to Logcat when no logHandler is set. It will be removed in 0.5.0

[0.4.2] - 2026-10-03​

Breaking Changes​

  • FedoNotInitialized and IconWarning are now internal: they were public by mistake and were never meant to be used directly
  • Fewer transitive dependencies: the SDK no longer pulls in appcompat, material, compose-shimmer or components-resources. If your app used any of these without declaring them, add them to your own build.gradle

Improvements​

  • Wider toolchain compatibility: the SDK now builds against Kotlin 2.2.21, Ktor 3.3.0 and kotlinx-serialization 1.9.0, so apps on older Kotlin and Ktor versions can use it
  • Safer credential storage: SDK files now use a getfedo_ prefix and the SDK no longer writes to your app's default SharedPreferences, so they can't clash with your app's own files or keys. Existing sessions are migrated on first launch, so users stay signed in
  • No backup rules needed: credentials are stored outside Android Auto Backup, so a restore or device transfer can't bring back credentials that can no longer be decrypted. You don't need to add any backup rules to your app
  • Single initialization: calling Fedo.initialize again now logs a warning and does nothing, instead of creating a second SDK instance

Fixed​

  • Session start after restore: if stored credentials can't be decrypted (for example after a backup was restored on a new device), the SDK starts a fresh anonymous session instead of leaving the user without one
  • Logout: logout() now clears the previous user's session, feedbacks and comments right away. A request still in flight or a token refresh finishing after logout can no longer bring back the previous user
  • Token refresh loop: a 401 from the authentication endpoint no longer causes endless refresh attempts. It now fails once with AuthError
  • Token refresh scope: only requests that carry a user token trigger a token refresh on 401. Requests that use only the API key never do
  • New feedback or comment not showing: feedbacks and comments created before the list first loaded now show up right away, and the comment count updates
  • Comment length limit: the UI and the API now agree on the maximum comment length

[0.4.1] - 2026-09-21​

Hotfix

  • Remove kotlin-test, kotlin-test-junit or ktor-client-mock from POM

[0.4.0] - 2026-09-17​

Breaking Changed​

0.4.0 renames public API and is NOT backward compatible — integrators must update their call sites.

  • FeedbacksScreen is now FedoFeedbackScreen

  • FedoSlots is now FedoFeedbackScreenSlots: scoped to the feedback screen; it is now a plain class with val properties instead of a data class

  • FeedbackScreen customization API has changed.

    • The config parameter has been removed.
    • Customizations are now provided through the slots parameter using FedoFeedbackScreenDefaults.

    following compose api best practices

    // before
    FeedbacksScreen(
    onDismiss = { /*...*/ },
    config = {
    backButtonIcon = { /*...*/ }
    }
    )

    // after
    FedoFeedbackScreen(
    onDismiss = { /*...*/ },
    slots = FedoFeedbackScreenDefaults.slots().copy(
    backButtonIcon = { /*...*/ }
    ),
    )

  • FedoDefaults is now FedoFeedbackScreenDefaults

  • Fedo.initialize parameter cfgBuilder renamed to config

  • Logcat tag is now Fedo: was FedoLogger; filter with adb logcat -s Fedo

  • Feedback sort order: feedbacks are sorted by status, then votes, then creation date

New​

  • FedoCreateFeedbackSheet: a lightweight bottom sheet for collecting feedback from any screen in your app.
  • FedoFeedbackScreenStyle: customize the appearance of the feedback screen. Set it transparent to preserve custom backgrounds and graphics. Defaults to app theme background color.

Improvements​

  • Not-initialized handling: FedoCreateFeedbackSheet shows an error message inside the sheet and FeedbackScreen shows a full-screen error when Fedo is not initialized; setUserID, setUserEmail, setUserDisplayName, setUserProperty and logout are no-ops instead of throwing
  • Discard confirmation: leaving the feedback editor or the create sheet with a non-empty title or details now asks for confirmation
  • Feedback details screen refreshed with improved badges, simplified status styling, smaller avatars, and a cleaner comment layout.

Fixed​

  • Blank API key: Fedo.initialize now logs an error instead of throwing IllegalArgumentException
  • Duplicate comments: Prevented duplicate comments when the send button is tapped repeatedly.
  • Token refresh: concurrent refreshes now share one in-flight request instead of each re-authenticating
  • Internet Disconnection: Improved handling of slow or lost internet connections. Retry actions are now provided where feasible.

[0.3.0] - 2026-08-11​

Added​

  • Support Comment Editing: users now can edit their own comment by pressing 'vert' (3 vertical dots) on the right of comment, then click edit.

[0.2.1] - 2026-07-23​

Changed​

  • Package version aligned with sdk-core (no user-facing changes).

[0.2.0] - 2026-07-23​

Added​

  • Text Field Capitalization: When creating feedback or adding comments, the first letter of each new sentence is now automatically capitalized.
  • Anonymous User Support: Anonymous users are now supported. Board users are merged when a user authenticates.
  • Admin Comment Badge: An Admin badge is now displayed next to comment authors when applicable.
  • User Device Properties: Device information is now collected and set as user properties, including: manufacturer, brand, model, device name, OS version, SDK version, screen dimensions (width and height in pixels), display density (DPI), locale, time zone, and app version (name and code).

[0.1.5] - 2026-07-11​

Changed​

  • sdk-core is now pulled as a dependency from Maven Central.

Fixed​

  • Resolved an infinite loop issue that occurred when creating a new user due to a failure in the creation process.

[0.1.4] - 2026-07-11​

Added​

  • Initial public release, published to Maven Central.