VoteFlow Tutorial: Add Feature Voting to Your iOS App
Learn how to integrate VoteFlow into your iOS or macOS app in under 5 minutes. Give your users a voice and prioritize features that matter.
Posted by

Related reading
How to Collect User Feedback in iOS Apps (2025 Guide)
Complete guide to collecting user feedback in iOS apps. Learn the best methods, tools, and implementation strategies for feature requests, bug reports, and user insights.
Introduction
Building a successful app isn't just about shipping features—it's about shipping the right features. VoteFlow makes it dead simple to collect, prioritize, and manage feature requests directly from your iOS or macOS app users.
In this tutorial, you'll learn how to integrate VoteFlow into your app in under 5 minutes. Your users will be able to submit feature requests, vote on existing ideas, and discuss features—all with just a few lines of code.
What You'll Build
By the end of this tutorial, your app will have:
- A complete feature request system with voting
- Comment threads for user discussions
- Automatic vote counting and ranking
- Status badges (Open, Planned, In Progress, Completed)
- Native SwiftUI interface that fits seamlessly into your app
Prerequisites
Before we start, make sure you have:
- Xcode 14.0 or later
- iOS 16.0+ or macOS 13.0+ deployment target
- A FeatureFlow account (sign up at FeatureFlow dashboard)
Step 1: Get Your App ID
First, you need to create an app in the FeatureFlow dashboard to get your unique App ID.
1.1 Sign Up & Create Your App
- Visit the FeatureFlow dashboard
- Create an account or sign in
- Click “New App” and give it a name
- Copy your generated App ID (e.g., my-awesome-app-123)
Keep this App ID handy—you'll need it in the next step!
Step 2: Install VoteFlow SDK
2.1 Add the Package Dependency
In Xcode, go to File → Add Package Dependencies and enter:
https://github.com/BNE003/VoteFlow
Select the latest version and click Add Package.
2.2 Alternative: Package.swift
If you're using Swift Package Manager in a Package.swift file:
dependencies: [
.package(url: "https://github.com/BNE003/VoteFlow", from: "1.0.0")
]
Step 3: Integrate VoteFlow View
3.1 The Quick Way (Recommended)
The easiest way to integrate VoteFlow is to use the pre-built FeatureFlowView. It includes everything: feature list, voting, comments, and submission form.
import SwiftUI
import VoteFlow
struct ContentView: View {
var body: some View {
TabView {
// Your main app content
HomeView()
.tabItem {
Label("Home", systemImage: "house")
}
// VoteFlow integration - that's it!
FeatureFlowView(appId: "my-awesome-app-123")
.tabItem {
Label("Feature Requests", systemImage: "lightbulb")
}
}
}
}
The key line is FeatureFlowView(appId: "my-awesome-app-123") — replace my-awesome-app-123 with your actual App ID from Step 1.
3.2 The Custom Way
If you want more control over the UI, you can use individual components like FeatureListView, SubmitFeatureView, and SupabaseClient:
import SwiftUI
import VoteFlow
struct FeaturesTab: View {
@StateObject private var client = SupabaseClient()
var body: some View {
NavigationStack {
FeatureListView(client: client, appId: "my-awesome-app-123")
.navigationTitle("Feature Requests")
.toolbar {
ToolbarItem(placement: .primaryAction) {
NavigationLink {
SubmitFeatureView(client: client, appId: "my-awesome-app-123")
} label: {
Image(systemName: "plus")
}
}
}
}
}
}
Step 4: Run Your App!
That's it! Build and run your app. You should now see:
- A list of all feature requests for your app
- Upvote buttons with vote counts
- Comment sections on each feature
- A form to submit new feature requests
- Status badges showing feature progress
How It Works Behind the Scenes
User Voting System
VoteFlow uses a device-specific identifier to track votes. Each user can vote once per feature. The SDK automatically handles vote state persistence using UserDefaults.
Real-time Updates
All data is powered by Supabase, which means:
- Votes are counted automatically via database triggers
- Features are sorted by vote count in real-time
- Comments appear instantly for all users
Status Workflow
From the FeatureFlow dashboard, you can update feature status:
- Open - New feature requests (gray badge)
- Planned - Approved for development (blue badge)
- In Progress - Currently being built (orange badge)
- Completed - Shipped! (green badge)
Managing Features from the Dashboard
While your users submit and vote on features in-app, you can manage everything from the web dashboard:
- View all features sorted by vote count
- Change feature status (move features through your workflow)
- Read user comments and feedback
- See statistics: total features, votes, and comments
- Identify which features to prioritize based on user demand
Advanced Customization
Custom User Identifiers
By default, VoteFlow uses device IDs. If you have user authentication, you can pass custom identifiers:
// Future feature - custom user IDs
// Currently uses automatic device identification
Styling & Theming
VoteFlow uses native SwiftUI components, which means it automatically adapts to:
- Light and dark mode
- Dynamic type (accessibility)
- Your app's accent color
Next Steps
Now that you've integrated VoteFlow, here's what you can do:
- Customize the UI to match your app's design
- Add the feature request tab to your settings screen
- Set up notifications for new feature requests
- Ship features users actually want!
Conclusion
VoteFlow makes user feedback management effortless. With just a few lines of code, you've given your users a direct channel to influence your product roadmap. No more guessing what to build next—let your users guide you!
Questions or feedback? Open an issue on GitHub or reach out to the FeatureFlow team.