FeedbackJar
·

Flutter Feature Requests Without a WebView (2026)

Add in-app feature voting to Flutter without wrapping Canny or WishKit’s website. Native Dart package, Material board, same widget ID as iOS and Android, agent loop via MCP.

flutter feature requests in-app feedback webview wishkit userorient

Flutter feature requests without a WebView

WishKit has no Flutter package. Canny on Flutter is a WebView plus SSO. UserOrient already sells “Flutter SDK, not a website.” That is the right fight. The extra move is the agent loop: the report has to be something Cursor can ship, not a title on a hosted page.

RN: SDK vs WebView vs Canny · WishKit alternative for Android · Does Canny have a mobile SDK?.


What “without a WebView” means

Dart packageWebView of Canny / Featurebase / NoltWishKit
Installfeedbackjar: ^1.6.1 in pubspecwebview_flutter + board URLNo Flutter artifact
UIFeedbackJarBoard (Material) or your widgetsTheir websiten/a
Login to voteOptional setIdentityHosted login or SSO
MetadataOS, model, screen, app version, localeUser-Agent
Both storesOne package, one widget IDOne URL, two problemsiOS only
AgentMCP reads the post + device fieldsA Canny card with no OS

If pubspec.yaml does not get a package name, you do not have a Flutter feedback SDK.


The WebView path (skip it)

dart
WebViewWidget(controller: controller..loadRequest(
  Uri.parse('https://your-company.canny.io'),
));

You inherit cookie banners, popup auth, and a theme that fights Theme.of(context). Canny’s official mobile recipe still wants a JWT minted on your server. Details.

Nolt’s help center says Android/iOS embeds are unofficial. Flutter is not more official.


The Dart package

Package: feedbackjar on pub.dev (^1.6.1)
Repo: github.com/feedbackjar/flutter-sdk
Docs: Flutter SDK
Dart 3 / Flutter 3.10+

yaml
dependencies:
  feedbackjar: ^1.6.1
dart
import 'package:feedbackjar/feedbackjar.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  FeedbackJar.configure('your-widget-id');
  runApp(const MyApp());
}

Drop-in board:

dart
FeedbackJarBoard(accentColor: Color(0xFFE5484D));

// or
showFeedbackJar(context, accentColor: Color(0xFFE5484D));

Settings row, not a fourth tab, not shake:

dart
ListTile(
  leading: Icon(Icons.lightbulb_outline),
  title: Text('Feature requests'),
  onTap: () => showFeedbackJar(context),
)

Identity after login:

dart
await FeedbackJar.shared.setIdentity(name: user.name, email: user.email);
// logout
await FeedbackJar.shared.clearIdentity();

Own screen if you hate the prebuilt one:

dart
final listed = await FeedbackJar.shared.listFeedback(limit: 20);
await FeedbackJar.shared.vote(postId);
await FeedbackJar.shared.submit(
  userText,
  properties: {'plan': 'pro'},
);

Same widget ID as Swift and Kotlin. Flutter, iOS, and Play share one vote count.


UserOrient and the rest of the Flutter shelf

UserOrient is a real Flutter-native board. Wiredash is closer to shake-to-report. pick a feature is Flutter-only voting.

Pick UserOrient if you want Flutter-only and their dashboard. Pick FeedbackJar if you also ship a Swift or Kotlin binary — or you want MCP so an agent can close the loop.

Do not pick WishKit and wrap wishkit.io in webview_flutter. That is the WebView column with extra steps. WishKit alternative.


The agent loop (the part UserOrient is not selling)

A Flutter WebView of Canny gives the agent a title. A Dart submit attaches OS, model, screen, app version, locale. That is the difference between “add widgets” and “add widgets, Android 14, Pixel 8, app 3.2.1.”

Then:

  1. Cursor lists top-voted open posts via MCP
  2. Reads the device fields
  3. Ships
  4. Marks Done
  5. Voters get notified

Without step 5 the board trains people to leave Play reviews. Longer version: Close the feature request loop with MCP.


App Review / Play

A Settings row that sends text and votes is normal. Declare the data. Guest voter id is a random install id, not advertising id.

A WebView of a third-party board is usually allowed. Users failing the login wall is the actual loss.


FAQ

Does WishKit support Flutter?

No.

Do I need a backend?

No. The package talks to FeedbackJar. You moderate in the dashboard.

Can I keep Canny on the website?

Yes. Two lists until you import.

Min SDK?

Flutter 3.10 / Dart 3. The package does not drag a WebView plugin.


Bottom line

pubspec.yaml either gets feedbackjar (or UserOrient) or you are shipping a website inside the app.

Start a 7-day trial. Same widget ID on Flutter, iOS, and Android.