Skip to main content
Version: Next 🚧

Overview

Fedo is a drop-in UI SDK for adding an in-app feedback board to your app. It provides a complete experience for browsing, creating, and managing user feedback without building any UI from scratch.

Building a feedback board in-house means a list screen, a detail screen, an editor, voting, threaded comments, an identity model, and a backend to hold it all. Fedo ships that as one composable on Android and one SwiftUI view on iOS.

Features​

  • Browse feedback with tabs (All, In review, Planned, In progress, Done, Closed)
  • Create new feedback with title + description
  • Submit new feedback via a lightweight bottom sheet
  • Vote on feedback items
  • Comment on feedback with threaded replies
  • Edit or delete own feedback
  • Pull-to-refresh
  • Built-in navigation (list → details → editor)
  • Fully managed auth

How it fits into your app​

Two calls on both platforms. Fedo.initialize runs once at startup with your API key, then you drop the board wherever you want it.

Android (Compose) — FedoFeedbackScreen() goes anywhere in your Compose hierarchy: a full screen, a tab, a dialog. It sizes to the Modifier you give it. The composable owns its own navigation between the list, detail and editor screens, and its own loading, error and empty states. Your app supplies an onDismiss lambda, which fires when the user presses back on the root list so you can pop your own navigation stack.

iOS (SwiftUI) — FedoFeedbackView() is a plain SwiftUI view. It pushes its screens onto the enclosing NavigationStack, so a NavigationLink is all it takes; wrap it in its own NavigationStack to present it modally. No callbacks to wire: back navigation is the system's.

If you only want to collect feedback rather than show the board, use the submission sheet instead — FedoCreateFeedbackSheet() on Android, the .presentFedoCreateFeedback(isPresented:) view modifier on iOS — with no navigation for your app to host.

See Getting Started for the full walkthrough and Feedback UI for every signature.

Identity and auth​

Auth is fully managed: you pass an API key, and the SDK acquires, caches and refreshes tokens itself. There is no token to store and no login UI to build.

Users do not have to sign in to participate. If you never identify a user, the SDK creates an anonymous one on first open and caches it on the device, so the same identity persists across sessions. When that user later authenticates in your app and you call Fedo.setUserID, everything they created is migrated onto the authenticated user.

See Core concepts for the object model and User Management for the identity methods.

What is not included yet​

Worth knowing before you integrate:

  • No offline support or retry. Calls that fail are not retried automatically; you must call them again. See User Management.
  • Limited UI customization. The board follows the SDK's own styling. UI Configuration currently covers few Android configurations; the iOS SDK exposes no UI configuration yet.
  • Android and iOS only. The other platforms below are not yet released.

Platform Support​

PlatformStatusArtifact
Android (Compose)✅ Availablecom.getfedo:sdk-android:0.4.3
iOS (SwiftUI)✅ Availablegithub.com/getfedo/fedo-ios (SPM)

Sample Apps​

ModelPulse is a small app that lists AI models from OpenRouter and uses Fedo for feedback. Same app on both platforms:

PlatformRepository
Androidgithub.com/getfedo/fedo-android-example
iOSgithub.com/getfedo/fedo-ios-example

Requirements​

  • minSdk: 24 (Android 7.0)
  • compileSdk: 35+
  • Kotlin: 2.3+