Fabre for Flutter
Consent-based bug reports for Android and iOS applications, from Affisto Corp. Capture app screens, annotate and mask images, and attach diagnostic context to a report. Reports are sent after the user reviews and submits them.
Install
After this beta is published on pub.dev:
flutter pub add fabre:^0.1.0-beta.1
- Flutter 3.32+ / Dart 3.8+.
- Android API 26+; set
minSdk = 26inandroid/app/build.gradle.kts. - iOS 14+; set
platform :ios, '14.0'inios/Podfileand the Runner deployment target to 14.0 or later. - This release uses CocoaPods for the Flutter iOS binding. Install CocoaPods before building for iOS. An app explicitly using Flutter's Swift Package Manager integration must use the CocoaPods integration for this package.
- Web, desktop, and PWA are not supported by this release.
The package includes the published Fabre Android AAR and iOS XCFramework, both 0.1.0-beta.1. You do not need to register a Maven repository or add the iOS Swift package separately. Do not also link another copy of the native Fabre SDK in the same application.
Configure
Create a Fabre project and obtain its SDK ingest key and service endpoint. Never put dashboard, administrator, or publishing credentials in an app. SDK access requires device approval by the project administrator.
import 'package:fabre/fabre.dart';
import 'package:flutter/material.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final reporter = ScreenReporter(ReporterConfig(
apiKey: const String.fromEnvironment('FABRE_INGEST_KEY'),
endpoint: Uri.parse(const String.fromEnvironment('FABRE_ENDPOINT')),
recipient: 'Mobile QA',
appVersion: '1.0.0',
environment: 'staging',
));
await reporter.initialize();
runApp(MaterialApp(
navigatorKey: reporter.navigatorKey,
navigatorObservers: [ReporterNavigatorObserver(reporter)],
builder: (context, child) => Stack(children: [
ReporterBoundary(reporter: reporter, child: child!),
Positioned.fill(child: ReporterLauncher(reporter: reporter)),
]),
home: const Scaffold(body: Center(child: Text('My app'))),
));
}
Run with --dart-define=FABRE_INGEST_KEY=... and --dart-define=FABRE_ENDPOINT=https://....
The existing ScreenReporter, ReporterConfig, and widget names remain the public Dart API; import them through package:fabre/fabre.dart.
Open the launcher, complete device registration, and have an administrator approve the device. Then open a report, draw or mask sensitive content, zoom with two fingers, and submit only after reviewing it. Wrap sensitive application widgets in ReporterPrivate(reporter: reporter, child: ...) to hide them from SDK captures. Platform views and OS-protected content may have capture limitations.
Distribution and license
Native implementation is distributed as compiled binaries. Dart code and the small Flutter platform bindings are included for integration. native-artifacts.lock.json records the exact native release URLs, sizes, and SHA-256 checksums used to prepare this package.
Use and redistribution are governed by the included Fabre SDK License 1.0. This package is not an open-source license grant for the private native implementation. Service plans are separate.
Libraries
- fabre
- Fabre SDK for Flutter. Existing ScreenReporter API names remain supported.
- screen_reporter