Skip to content

SDKs for Apple, Android, and the web

Build better apps with user feedback

See which feature requests your paying users want, ranked by the monthly revenue behind every vote.

Swift
Kotlin
Flutter
React Native
JavaScript

01Collect

Collect feedback inside your app, on every platform

Add the SDK and people send requests from the screen they are already on, on iPhone, Android, iPad and Mac. Every platform writes to the same board.

  1. iPhone SwiftUI views from the Swift SDK
  2. Android Jetpack Compose screens from the Kotlin SDK
  3. iPad The same Swift package, laid out for the larger screen
  4. Mac Native on macOS, with Flutter, React Native and web beside it

02Vote

Votes show you what people want most

People see the requests already on the board and vote on them instead of filing duplicates. Whoever submits a request counts as its opening vote, so the list is ranked from day one.

  1. Open The board opens inside your app
  2. Find The most-wanted requests sit at the top
  3. Compare Every request shows its vote count and status
  4. Vote One tap adds a vote, and the ranking updates

03Triage

Triage from the admin app on iPhone, iPad and Mac

Move a request from Pending to Approved, In Progress and TestFlight wherever you are, and it updates on every device. Sort by the monthly revenue behind the votes to see what your paying users want.

  1. Pending New requests land here
  2. Approved You plan to build it
  3. In Progress Work has started
  4. TestFlight Ready for beta testers

04Notify

Keep your users in the loop when it ships

When a request reaches a status you choose, FeedbackKit emails the person who asked for it, and voters who opted in on the Team plan. Your team hears about it in Slack and in the admin app on iPhone and Mac.

  1. Ship Move the request to Completed
  2. Push Your team sees it on iPhone and Mac
  3. Slack A status update lands in your channel
  4. Email The people who asked hear it from you

Also in the box

Merge duplicates

Combine two requests into one. Votes move across without double counting, and each comment keeps a note of where it came from.

Reply in the thread

Answer the people who asked, right on the request. A new comment can email the project owner and the members who turned that on.

Revenue behind every vote

Pass each user's monthly revenue from your app, then sort and filter requests by the customers who asked for them.

Translate user feedback

Read what people typed in a language you choose. Apple's Translation framework runs on your own device, in the Swift SDK and the admin app.

Embeddable web board

Put your feedback board on your own site with one script tag, and the submission form on its own page. Light or dark, voting on or off.

Roles for your team

Invite owners, admins, members and viewers to a project on the Team plan, each with the access their role needs.

Integrations

Send feedback to the tools your team already uses

Thirteen integrations: nine issue trackers that turn a request into a ticket, Slack for notifications, and HubSpot, Salesforce and Email Campaign to sync the people who give feedback.

Issue trackers

  • GitHubIssues · Status
  • NotionStatus · Comments · Votes
  • ClickUpStatus · Comments · Votes
  • LinearStatus · Comments
  • Monday.comStatus · Comments · Votes
  • TrelloStatus · Comments
  • AirtableStatus · Comments · Votes
  • AsanaStatus · Comments · Votes
  • BasecampStatus · Comments

Notifications and contacts

  • SlackNew feedback, comments and status changes in a channel
  • HubSpotSync feedback submitters as contacts
  • SalesforceSync feedback submitters as leads
  • Email CampaignSubscribe submitters in Mailchimp, Kit, Beehiiv or MailerLite

How each integration works

SDKs

Add it in a few lines of code

Native SDKs for Swift, Kotlin, Flutter, React Native and JavaScript. Configure the SDK with your project's API key, then show people the board they vote on.

Choose an SDK
import SwiftUI
import SwiftlyFeedbackKit

// At launch, in your App's init()
SwiftlyFeedback.configure(environment: .production, key: "your-api-key")

struct ContentView: View {
    @State private var showFeedback = false

    var body: some View {
        Button("Send feedback") { showFeedback = true }
            .sheet(isPresented: $showFeedback) { FeedbackListView() }
    }
}
import com.swiftlydeveloped.feedbackkit.FeedbackKit
import com.swiftlydeveloped.feedbackkit.configure
import com.swiftlydeveloped.feedbackkit.state.FeedbackKitProvider
import com.swiftlydeveloped.feedbackkit.ui.FeedbackListScreen

// In Application.onCreate()
FeedbackKit.configure(this) {
    apiKey = "your-api-key"
}

@Composable
fun FeedbackScreen() {
    FeedbackKitProvider { FeedbackListScreen() }
}
import 'package:feedbackkit_flutter/feedbackkit_flutter.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(
    const FeedbackKitProvider(
      apiKey: 'your-api-key',
      child: MaterialApp(
        home: Scaffold(body: FeedbackList()),
      ),
    ),
  );
}
import { FeedbackProvider, FeedbackList } from 'feedbackkit-react-native';

export default function App() {
  return (
    <FeedbackProvider apiKey="your-api-key">
      <FeedbackList
        showAddButton
        onFeedbackPress={(feedback) => console.log(feedback.title)}
      />
    </FeedbackProvider>
  );
}
import { FeedbackKit, FeedbackCategory } from 'feedbackkit-js';

const feedbackKit = new FeedbackKit({ apiKey: 'your-api-key', userId: 'user_12345' });

// Every request on the board
const requests = await feedbackKit.feedback.list();

// Submit a new one
await feedbackKit.feedback.create({
  title: 'Offline maps',
  description: 'Save trails for areas with no signal.',
  category: FeedbackCategory.FeatureRequest,
  userId: 'user_12345'
});

Swift

Configure once at launch, then present the list from any SwiftUI view. The same call covers development, TestFlight and production.

  • SwiftUI views for the list, the form and the detail
  • iOS, iPadOS, macOS and visionOS
  • Swift Package Manager
Swift SDK documentation

Kotlin

Configure FeedbackKit from your Application class, then drop the list screen into your Compose UI.

  • Jetpack Compose screens and coroutines
  • Native Android
  • Configure once, from your Application class
Kotlin SDK documentation

Flutter

Wrap your app in FeedbackKitProvider and use the pre-built widgets anywhere below it.

  • FeedbackKitProvider and pre-built widgets
  • iOS and Android from one codebase
  • Light and dark themes
Flutter SDK documentation

React Native

Wrap the app in FeedbackProvider, then render the feedback list and vote buttons as components.

  • FeedbackProvider, the list, vote buttons and status badges
  • iOS and Android
  • Built on the JavaScript client
React Native SDK documentation

JavaScript

One client lists requests, submits new ones and votes, in the browser or on a Node.js server.

  • TypeScript definitions included
  • Modern browsers and Node.js
  • List, submit and vote from one client
JavaScript SDK documentation

Building on Vapor? There is a server-side Swift SDK too.

Localization

Speaks your users' language

The feedback widget, the admin apps and the web dashboard are translated into 11 languages: English plus ten more.

In the SDKs

The Swift SDK ships a translated interface and follows the device language. Translations for the Flutter and React Native widgets are in their sources, and the docs list what each SDK covers today.

In your admin apps

The FeedbackKit admin app speaks the same 11 languages on iPhone, iPad and Mac. Triage requests and manage your team in the language your device is already set to.

On the web

The web dashboard reads the language your browser asks for and opens in it. A picker is always there if you would rather choose for yourself.

Pricing

Start free. Move up when the product does.

One project and ten pieces of feedback to try it. Pro and Team open more projects, unlimited feedback, integrations and a team.

Billing period

Yearly billing saves about 17% on Pro and Team.

Free

For trying out FeedbackKit

$0.00 /month

No credit card required

Projects
1
Feedback
10 per project
Integrations
Not included
Team members
Not included
Statuses
Default set
Get started
Popular

Pro

For indie developers

$15.00 $150.00 /month /year

or $150.00 billed yearlyor $15.00 billed monthly

Projects
2
Feedback
Unlimited
Integrations
All
Team members
Not included
Statuses
Configurable
Choose Pro

Team

For teams and agencies

$39.00 $390.00 /month /year

or $390.00 billed yearlyor $39.00 billed monthly

Projects
Unlimited
Feedback
Unlimited
Integrations
All
Team members
Members and roles
Statuses
Configurable
Choose Team

Prices in USD.

Compare every limit

Who it is for

Built for the way small teams ship

What FeedbackKit does for each role, in plain terms. These are product capabilities, not customer quotes.

  • Subscription app founder

    See the revenue behind each request

    Pass a user's subscription amount to the SDK, and each request shows the combined monthly revenue of the people who asked for it and voted on it.

  • Indie iOS developer

    One board instead of a spreadsheet

    Add the Swift package, and requests and votes from your app land on one board you can triage from iPhone, iPad or Mac.

  • Cross-platform team

    The same request on every platform

    Kotlin, Flutter, React Native and JavaScript apps read the same project, so a request filed on the web is the same request on Android.

  • Product manager

    Counts that match what people asked for

    Merge duplicate requests and the votes and comments move with them, without counting the same voter twice.

  • Support lead

    Tell people when something changes

    Move a request to a status you have selected and the person who submitted it gets an email. Voting closes once it is Completed or Rejected.

  • Engineering lead

    Tickets where engineering already works

    On Pro and Team, send a request to GitHub, Linear, Notion or six other trackers, and keep its status in sync with the linked ticket.

FAQ

Questions, answered

Short answers on plans, platforms, integrations and data. The pricing page has the full plan comparison.

What is FeedbackKit?

FeedbackKit is in-app feedback and feature voting for iOS, macOS, Android, Flutter, React Native and web, with feature requests ranked by the revenue behind each vote. People submit and vote on requests inside your app, and you triage them from the admin app on iPhone, iPad and Mac or from the web dashboard.

What does the free plan include?

The free plan includes one project with up to 10 feedback items. Voting, comments and statuses are included, and so is every SDK; integrations and team members are not. The pricing page has the full comparison.

How much is Pro?

Pro is $15.00 a month, or $150.00 billed yearly. It covers two projects, unlimited feedback, all integrations and configurable statuses.

What does Team add?

Team is $39.00 a month, or $390.00 billed yearly. It adds unlimited projects and team members with roles (owner, admin, member and viewer), and includes all integrations.

Which platforms can I embed it in?

FeedbackKit has SDKs for Swift (iOS, macOS and visionOS 26 or later), Kotlin for Android, Flutter, React Native, JavaScript for the web, and server-side Swift with Vapor. Each SDK talks to your project with its API key, and setup for each one is in the documentation.

Which languages does it ship in?

The Swift SDK, the admin apps and the web dashboard are translated into 11 languages: English, Spanish, French, German, Japanese, Simplified Chinese, Brazilian Portuguese, Korean, Italian, Arabic (laid out right to left) and Russian. Coverage in the other SDKs differs, and the localization section has the detail.

Which tools does it sync with?

On Pro and Team, a project can create and update tickets in GitHub, Notion, ClickUp, Linear, Monday.com, Trello, Airtable, Asana and Basecamp. Slack sends notifications, not tickets, and HubSpot, Salesforce and email campaign tools sync contacts. Status, comment and vote sync differ by provider; the integrations page lists what each one supports.

When can people vote?

People can vote while a request is Pending, Approved, In Progress or in TestFlight. Voting closes once it is Completed or Rejected, and the person who submitted a request counts as one vote on it.

Where does the data live, and what about GDPR?

Customer data is stored in the United States, on Heroku's us region, and there is no EU storage option today. Transfers out of the EEA rely on the EU-US Data Privacy Framework, with Standard Contractual Clauses as the fallback. FeedbackKit is operated by Swiftly Workspace BV, and a data processing agreement is available on request from privacy@getfeedbackkit.com. The privacy policy describes what is collected and the rights of people in the European Economic Area. You are responsible for the privacy notice you give your own end users.

How do I pay, and can I cancel?

Web plans are billed monthly or yearly through Stripe, and App Store plans are billed by Apple; both can be cancelled. A web plan is cancelled from Manage Billing in account settings, which opens the Stripe portal, and an App Store plan from your Apple subscriptions. The free plan does not ask for a card. The terms say fees already paid are non-refundable except where the law requires a refund, and that pricing can change with 30 days' notice.

Get started

Ready to collect better feedback?

Start free on one project, with up to 10 feedback items. Upgrade when you need more. No credit card required.

Get Started Free