Zum Inhalt springen

Beta : Feedback mit eigenen Testpersonen sammeln. Zusätzliche Tester vermitteln wir nach Prüfung der Verfügbarkeit.

Entwickler-Werkzeuge

Vier SDKs, eine Version

Flutter, Expo, Web/React und Swift erscheinen gemeinsam und tragen immer dieselbe Version — heute 2.0. Jedes bringt dieselbe Tester-Oberfläche in deine App.

Veröffentlicht · 2.0

Flutter

Für Flutter-Apps auf Android und iOS.

Installieren · pub.dev
flutter pub add testerpaykit
Veröffentlicht · 2.0

Expo / React Native

Für Expo- und React-Native-Apps.

Installieren · npm
npx expo install @testerpaykit/expo
npm
Veröffentlicht · 2.0

Web / React

Für Web-Apps mit React, Next.js oder Vite.

Installieren · npm
npm install @testerpaykit/react
npm
Früher Zugang

Swift (iOS, macOS)

Für native iOS- und macOS-Apps, mit eingebauter SwiftUI-Tester-Oberfläche.

Paket
Swift Package — auf Anfrage

Noch nicht in einem öffentlichen Paketverzeichnis. Schreib uns, dann schicken wir dir das Paket.

Was alle vier können

  • ✓Bug melden: Formular mit Screenshot und Markierung, Sprache, Schnellaktionen
  • ✓Allgemeines Feedback
  • ✓Nachtest nach einem Fix, mit Urteil pro Schritt
  • ✓Verdienst im Tester-Menü, Tour, Deutsch und Englisch
  • ✓Live-Verbindung zu Claude Code (Beta): Claude sieht den Bildschirm und deine Notizen und kann sich durch deine eigene App tippen
  • ✓Checkliste „Was testen?“: Tester haken die Schritte in der App ab

KI-Läufe (Auto-Test, KI-Nachtest nach einem Fix) gibt es nur mit Flutter und Expo.

Auf einen Blick

Funktion Flutter Expo Web Swift
Bug-Report, Feedback, Nachtest ✓✓✓✓
Live-Verbindung zu Claude Code (Beta) ✓✓✓✓
Checkliste „Was testen?“ ✓✓✓✓
KI-Läufe: Auto-Test, KI-Nachtest ✓✓——

Kurze Beispiele

Flutter Initialisieren und App umschließen
import 'package:flutter/material.dart';
import 'package:testerpaykit/testerpaykit.dart';

final _navigatorKey = GlobalKey<NavigatorState>();

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final tpk = await TesterPayKit.initialize(
    config: TesterPayKitConfig(
      projectId: '<project-uuid>',
      apiBaseUrl: 'https://api.testerpaykit.com',
      enableTesterMode: true,
    ),
  );
  runApp(MaterialApp(
    navigatorKey: _navigatorKey,
    navigatorObservers: [tpk.navigatorObserver],
    builder: (context, child) => TesterPayKitWrapper(
      sdk: tpk,
      navigatorKey: _navigatorKey,
      child: child ?? const SizedBox.shrink(),
    ),
    home: const HomeScreen(),
  ));
}
Expo Initialisieren und per Schütteln melden
import { TpkExpo, useShake } from '@testerpaykit/expo';
import { useEffect, useState } from 'react';

export function App() {
  const [tpk, setTpk] = useState<TpkExpo | null>(null);

  useEffect(() => {
    TpkExpo.init({
      projectId: '<project-uuid>',
      testerCode: '<tester-invite-code>',
    }).then(setTpk);
  }, []);

  useShake({
    enabled: !!tpk,
    onShake: () => {
      tpk?.submitBug({
        title: 'Shake-reported bug',
        description: 'Reported by shaking the device.',
        currentScreen: 'HomeScreen',
        severity: 'medium',
      });
    },
  });

  return null;
}
Web / React Tester-Hub einhängen
import { useEffect, useState } from 'react';
import { TesterPayKit } from '@testerpaykit/sdk';
import { TesterPayKitApiClient } from '@testerpaykit/api-client';
import { IndexedDBAdapter } from '@testerpaykit/storage-browser';
import { TpkTesterHub } from '@testerpaykit/react';

export function Tpk({ screen }: { screen: string }) {
  const [sdk, setSdk] = useState<TesterPayKit | null>(null);
  useEffect(() => {
    const instance = new TesterPayKit({
      apiKey: '',
      projectId: '<project-uuid>',
      testerId: '<tester-invite-code>',
      deviceId: crypto.randomUUID(),
      storage: new IndexedDBAdapter(),
      apiClient: new TesterPayKitApiClient({ apiKey: '' }),
      deviceMetadata: { os: 'Web', osVersion: navigator.userAgent, deviceModel: 'browser', appVersion: '1.0.0', sdkVersion: '2.0.0', timezoneOffset: -new Date().getTimezoneOffset() },
      appMetadata: { bundleId: 'com.example.web', version: '1.0.0', buildNumber: '1' },
      autoStartSession: true,
    });
    void instance.init().then(() => setSdk(instance));
  }, []);
  return sdk ? <TpkTesterHub sdk={sdk} currentScreen={screen} /> : null;
}

Das Beispiel importiert außerdem @testerpaykit/sdk, @testerpaykit/api-client und @testerpaykit/storage-browser; mit pnpm diese ausdrücklich hinzufügen.

Swift Session starten, View umschließen
import SwiftUI
import TesterPayKit

let sdk = try await TesterPayKit.initialize(
    config: TesterPayKitConfig(
        projectId: "<project-uuid>",
        testerCode: "<tester-invite-code>",
        apiBaseURL: URL(string: "https://api.testerpaykit.com")!
    )
)
try await sdk.startSession()

ContentView()
    .tpkFeedbackOverlay()

Bereit zum Einbauen?

Lege ein Projektkonto an und richte das SDK für deine App ein. Mit bestehendem Konto kannst du dich in der Web-Konsole anmelden.