MyApp.swift
MyApplication.kt
main.dart
App.tsx
app.ts
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.