affisto

SDK documentation

Install the Fabre SDK

Install the Flutter, Android or iOS SDK in your app. Downloads do not require an account or repository access.

Public beta Android 0.1.0-beta.1 · iOS 0.1.0-beta.1 · Flutter 0.1.0-beta.1

PlatformInstallationAvailability
AndroidGradlePublic beta
iOSSPMPublic beta
Flutterpub.devPublic beta
React Native / ExponpmPublic package in preparation
UnityUPMPublic package in preparation

Android

Android 8.0 (API 26) or later. Validated with JDK 17, Kotlin 2.2.20, AGP 8.11.1 and compileSdk 36.

1. Register the repository

Add this repository to the existing dependencyResolutionManagement.repositories block in settings.gradle.kts. Keep your other repositories and project settings.

settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        exclusiveContent {
            forRepository {
                maven {
                    url = uri("https://sdk.affisto.com/fabre/maven")
                }
            }
            filter { includeGroup("com.affisto.fabre") }
        }
    }
}

2. Add the SDK

Add the dependency in your app module’s build.gradle.kts. Keep a higher minSdk value if your app already uses one.

app/build.gradle.kts
android {
    defaultConfig { minSdk = 26 }
}

dependencies {
    implementation("com.affisto.fabre:android:0.1.0-beta.1")
}

3. Sync and build

In Android Studio, choose Sync Project with Gradle Files, then build your app. Pin the exact version rather than using “+”.

Optional: OkHttp integration

Add the adapter if you want to integrate OkHttp network diagnostics. You still need to connect it to your app’s OkHttp client.

app/build.gradle.kts · OkHttp
dependencies {
    implementation("com.affisto.fabre:android-okhttp:0.1.0-beta.1")
}

iOS

iOS 14 or later. The binary contains device arm64 and simulator arm64/x86_64 slices. Validated with Xcode 26.1.1; other toolchain combinations are not yet covered by a compatibility matrix.

  1. In Xcode, choose File → Add Package Dependencies.
  2. Enter the public repository URL below.
  3. Choose Exact Version: 0.1.0-beta.1.
  4. Add the Fabre product to your app target.
Public Swift package
https://github.com/affisto/fabre-ios.git

The installed product is Fabre. Import ScreenReporter in Swift; the module name is retained for compatibility.

Swift
import UIKit
import ScreenReporter

Flutter

Install fabre from pub.dev. The package includes the released Android AAR and iOS XCFramework, so Flutter apps do not need a separate Fabre Maven repository or Swift package.

Requires Flutter 3.32+ / Dart 3.8+, Android API 26+, and iOS 14+. This beta uses CocoaPods for iOS. Web and desktop are not supported.

fabre 0.1.0-beta.1 · pub.dev

1. Install the package

Terminal
flutter pub add fabre:^0.1.0-beta.1

2. Set the minimum platform versions

In android/app/build.gradle.kts, set minSdk to 26 or keep your existing higher value. In ios/Podfile, set the platform to iOS 14.0; also set the Runner deployment target to 14.0 or later in Xcode. Keep the rest of your existing configuration.

android/app/build.gradle.kts
android {
    defaultConfig { minSdk = 26 }
}
ios/Podfile
platform :ios, '14.0'

3. Connect your Fabre project

Use your project SDK ingest key and service endpoint. The public import is package:fabre/fabre.dart; the existing ScreenReporter and ReporterConfig API names remain supported. The example below wires the capture boundary, launcher and navigation observer into MaterialApp.

lib/main.dart
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'))),
  ));
}

Pass the project values when running your app. Replace the placeholder values with those provided for your project.

Terminal
flutter run --dart-define=FABRE_INGEST_KEY=YOUR_PROJECT_INGEST_KEY --dart-define=FABRE_ENDPOINT=https://YOUR_FABRE_SERVER

4. Approve the device and check a report

Open the Fabre launcher, register the test device, and approve it in the Fabre console. Open a report, annotate or mask the image, zoom with two fingers, and review it before submitting. Wrap sensitive widgets in ReporterPrivate to exclude them from SDK captures.

Validated with Flutter 3.41.4 / Dart 3.11.1: Android API 34 and iOS 18.3.1 simulator editor smoke tests, Android release APK and unsigned iOS device release builds. This is not a full minimum-version or physical-device compatibility matrix.

Updating the package

Within your declared version constraint, resolve newer releases with flutter pub upgrade fabre. When changing the allowed range, update the dependency version and re-test your app. Existing apps keep their locked version until dependencies are updated.

Terminal
flutter pub upgrade fabre

Direct downloads

Gradle and SPM are the recommended installation methods. Direct downloads are available for environments that manage binaries manually.

A standalone AAR needs its dependencies configured separately. For manual iOS integration, extract the ZIP, add ScreenReporter.xcframework, and select Embed & Sign. Install either the Swift package or the manual framework in an app target, not both.

After installation

Downloading the SDK does not connect it to a project. To send reports, initialize it with your project ingest key and server address, then approve the test device in the Fabre console. Never embed an account, admin or MCP token in an app.

Configure collection consent and sensitive-screen handling for your app before rollout. SDK use and redistribution are covered by the SDK license; access to the Fabre service and any service charges are separate.

Discuss project integration

Installation help

Why might the beta not appear in pub.dev search?

This release is a prerelease. Use the direct pub.dev link or the versioned installation command above to find and install it.

Why does the repository URL return 404 in a browser?

The Gradle repository base URL is not a web directory listing. A 404 at that base address does not mean the SDK is missing. Use the direct downloads or versioned release manifests above to inspect the actual files.

Gradle cannot find the SDK. What should I check?

Check the full repository URL, including /fabre/maven, the com.affisto.fabre group, and the exact version. Add the repository in settings.gradle.kts if your project centralizes repositories there. Corporate networks may need to allow sdk.affisto.com.

Can I install React Native, Expo or Unity packages?

Their public npm and Unity packages are still in preparation. Flutter is available now as fabre on pub.dev.