Collect
- Embed a reusable feedback widget.
- Capture structured beta reports.
- Avoid spreadsheets and scattered feedback.
v0.1.0 / DX Web
Flutter Beta Testing SDK
Collect feedback.
Analyze results.
Ship with confidence.
Capture structured beta feedback, export executive reports, and turn QA noise into clear release actions.
In real betas, feedback gets scattered across chats, screenshots, and notes. That slows critical fixes and makes release decisions subjective.
BetaTest Flow standardizes Flutter report capture and produces actionable outputs: Executive Report, Release Decision, Beta Confidence Score, 48h Action Plan, and AI Correction Prompt.
Operational summary of severity, outcomes, screens, and UX observations.
GO / GO WITH CONDITIONS / NO-GO state with rationale and release conditions.
Overall score plus subscores for stability, usability, and release readiness.
P1-P5 prioritization with suggested action and validation criteria per item.
Prompt ready to execute corrections guided by real beta evidence.
Add the SDK dependency in the host app and sync packages.
dependencies:
betatest_flow:
path: ../betatest_flow
flutter pub get
Generate reports without Firestore by using the project's official fixture.
dart run tools/export_beta_reports.dart \
--input-json example/data/sample_beta_reports.json \
--out-dir exports/demo
Follow these 7 steps to install and integrate BetaTest Flow end to end.
Add BetaTest Flow as a local dependency in your Flutter project.
dependencies:
betatest_flow:
path: ./betatest_flow
Expected: The dependency is resolved and ready to import.
Import BetaTest Flow in the file where you will configure the SDK.
import 'package:betatest_flow/betatest_flow.dart';
Expected: You can access BetaTest Flow classes from your app code.
Define app and campaign metadata, checklist items, and report version.
final config = BetaTestFlowConfig(
appId: 'my_flutter_app',
appName: 'My Flutter App',
campaignId: 'closed_beta_1',
campaignName: 'Closed Beta 1',
reportVersion: '1',
checklistItems: const [
BetaChecklistItem(id: 'login', title: 'Login works'),
BetaChecklistItem(id: 'home', title: 'Home loads'),
],
);
Expected: Configuration object is ready to be injected into UI components.
Create the repository and render the SDK button so testers can submit structured feedback.
BetaFeedbackButton(
config: config,
repository: FirebaseBetaFeedbackRepository(config: config),
userId: currentUserId,
)
Expected: Feedback entry point is visible in your app UI.
Run your app, open the feedback button and submit a structured report.
Expected: One report is generated with severity, result and recommendation fields.
Generate demo outputs from the official sample fixture.
dart run tools/export_beta_reports.dart \
--input-json example/data/sample_beta_reports.json \
--out-dir exports/demo
Expected: JSON, CSV and Markdown reports are generated under exports/demo.
Open exports/demo/beta_summary.md and copy the AI Correction Prompt into Copilot, Cursor, ChatGPT or Gemini.
Expected: You have a ready-to-run prompt grounded in real beta evidence.
Build your integration path step by step. Start fast, then go deeper into export and analysis workflows.
Understand the core flow and minimum setup to start collecting beta feedback.
Read guideSet dependency, run package sync, and prepare your host app environment.
Read guideCreate your first complete report and validate the end-to-end capture flow.
Read guideGenerate JSON, CSV and markdown outputs from Firestore or offline fixtures.
Read guideInterpret release decision, confidence score, and 48h action priorities.
Read guideResolve common integration and troubleshooting questions quickly.
Read guideYou will understand the minimum integration path, when to run exports, and how to use analysis outputs to ship with confidence.
BetaTest Flow is a reusable Flutter SDK to capture structured beta feedback and convert it into actionable release guidance.
Use it when your team needs a repeatable beta process, clear release criteria, and faster feedback-to-fix cycles.
Flutter App -> SDK Widget -> Firestore/JSON -> Analysis Engine -> Executive Report -> AI Correction Prompt
At the end, you have one structured report pipeline and a clear action path for release decisions and corrections.
dependencies:
betatest_flow:
path: ../betatest_flow
flutter pub get
import 'package:betatest_flow/betatest_flow.dart';
final config = BetaTestFlowConfig(
appId: 'demo_app',
appName: 'Demo App',
campaignId: 'beta_1',
campaignName: 'Beta 1',
reportVersion: '1',
checklistItems: const [
BetaChecklistItem(id: 'login', title: 'Login'),
BetaChecklistItem(id: 'home', title: 'Home'),
],
);
BetaFeedbackButton(
config: config,
repository: FirebaseBetaFeedbackRepository(config: config),
userId: 'tester_001',
)
A feedback button is visible in your app and ready to capture beta reports.
First structured beta report ready for analysis.
dart run tools/export_beta_reports.dart --input-json example/data/sample_beta_reports.json --out-dir exports/demo
beta_reports.jsonbeta_reports.csvbeta_summary.mdThe engine automatically analyzes every beta report and generates actionable guidance for the development team.
BetaTest Flow uses deterministic and explainable rules to calculate release decisions and confidence scores. It does not use machine learning for these calculations.
Automatically classifies release state as:
Generates the following score dimensions:
Automatically prioritizes P1, P2, and P3 with suggested actions and validation criteria.
Generates a ready-to-use prompt for:
Reports
↓
Analysis Engine
↓
Executive Report
↓
AI Prompt
↓
Developer
The SDK automatically transforms beta feedback into actionable release decisions.
Get AI Fix Promptdart run tools/export_beta_reports.dart --input-json example/data/sample_beta_reports.json --out-dir exports/demo
You get a complete Executive Report and an AI-ready correction prompt.
Answers to the most common questions when integrating BetaTest Flow.
Live demo values generated from the official fixture sample_beta_reports.json.
Source fixture: example/data/sample_beta_reports.json (3 reports)
Demo data loaded from beta_reports.json
GO WITH CONDITIONS
Relevant risks remain; proceed only with mitigation and additional validation.
65/100 (Medium confidence)
Act as a senior engineer fixing a Flutter app using real beta feedback.
Decision: GO WITH CONDITIONS
Beta Confidence Score: 65/100
Priority: P1 Publish flow high severity, then P2-P5 in 48h.
Simple visual breakdown based on the official demo fixture values.
Distribution of severity reported by testers.
Total analyzed: 3 reports
How reports were classified by outcome.
Total analyzed: 3 reports
Recommendation trends from beta testers.
Total analyzed: 3 reports
Feedback -> Analysis -> Decision -> Action -> Prompt
Beta reports were captured and consolidated from the campaign.
CompletedThe analysis engine processed severity, impact, and reproducibility.
CompletedA release state was determined with conditions for mitigation.
CompletedPrioritized actions were prepared for the next 48 hours.
CompletedA correction prompt was generated to accelerate implementation fixes.
CompletedThis is the complete BetaTest Flow loop: collect, analyze, decide and fix.
Prioritized fixes generated from tester feedback.
Reason: There is one high severity report affecting functional stability.
Suggested action: Prioritize fixes in frequent routes and reinforce error/retry handling.
Expected validation: Run smoke suite on core flows and verify no regressions.
Reason: PublishAlertScreen concentrates key reports and deserves early focus.
Suggested action: Audit events, states and errors in PublishAlertScreen to reduce friction.
Expected validation: Run guided manual checks in PublishAlertScreen with at least 3 real scenarios.
Reason: There is one report indicating strong impact on usage continuity.
Suggested action: Resolve flow/UX blockers and improve visual feedback in high-risk operations.
Expected validation: Compare before/after with beta testers and confirm perceived flow improvement.
Reason: There are release friction signals from tester recommendations.
Suggested action: Convert non-release recommendations into a fix checklist with owners and ETA.
Expected validation: Re-run beta export and confirm reduction of negative recommendations.
Reason: The flow does not clearly indicate whether send failed or is still in progress.
Suggested action: Apply targeted UX adjustment and document criteria for future consistency.
Expected validation: Validate with a quick qualitative test that users understand the improved state.
Start with P1. Do not refactor everything. Fix, validate, then move to the next priority.
Review the correction prompt before copying it into your AI coding assistant.
Act as a senior engineer fixing a Flutter app using real beta feedback.
Release Decision: GO WITH CONDITIONS
Beta Confidence Score: 65/100 (Medium confidence)
48h Plan priorities:
- P1: Reduce high severity in main flow.
- P2: Stabilize most reported screen.
- P3: Mitigate high usage impact.
- P4: Close release decision gaps.
- P5: Address highlighted UX observation.
Mandatory constraints:
- Do not do a general refactor.
- Fix by 48h priority order.
- Keep backwards compatibility.
- Run analyze and tests at the end.
Expected response format:
1. Modified files.
2. Cause.
3. Solution.
4. Validation (including analyze/tests).
beta_reports.json
Structured beta report data.
beta_reports.csv
Spreadsheet-friendly report export.
beta_summary.md
Executive Report with decision, score, action plan and AI prompt.
Inspect the individual reports behind the Executive Report.
SDK Version
v0.0.3-beta
Analysis Engine
Ready
Executive Report
Ready
Offline Mode
Available
Tests
19 passing
Flutter
>= 3.35.0
Backwards Compatibility
Preserved
Start with minimal setup and evolve into evidence-based release decisions.