Logopicto

picto

Session replay for Flutter apps — record real user sessions and watch them back exactly as your users saw them, sharp at any zoom and a fraction of the size of video.

picto records what a user sees and does in your Flutter app — every screen, every tap, every navigation, every error — and lets you watch it back later as a layout-accurate, fully interactive replay.

Two calls to record a session#

import 'package:flutter/material.dart';
import 'package:picto/picto.dart';

void main() {
  Picto.setup(
    apiKey: 'oc_...',   // from your client app in the dashboard
    appVersion: '1.0.0',
  );

  Picto.startRecording();
  runApp(const MyApp());
}

That is the whole integration. There is no endpoint to configure, no organization or account id to look up, and no required UI — the API key alone decides which client app a recording belongs to, and the SDK already knows where to send it. Recording never starts on its own, so the decision of when to record stays yours; see Starting & Stopping.

Recordings are small, stay sharp at any zoom, and can be stepped frame by frame. Text is captured as readable images by default and can be masked per subtree; most images record as placeholder shapes unless you opt in — see What We Capture for exactly where that line sits.

This documentation is for developers integrating the recording SDK into their own app and for anyone using the dashboard to manage recordings, teammates, and API keys. It does not cover how the recorder works internally, and nothing here assumes you know.

What you get#

  • Layout-accurate replay of real sessions — layout, shapes, positioning, animations, dialogs, and scrolling, all faithfully reproduced. Text renders as it appeared on screen unless masked, and most images render as placeholder rects by default (see What We Capture).
  • Input and lifecycle capture — taps, drags, scrolls, focus changes, app lifecycle transitions, and uncaught errors, all timestamped alongside the visual playback.
  • Custom metadata — tag a whole session (user segment, experiment variant, ...) or drop a timestamped marker at a specific moment (checkout tapped, payment failed) so you can find what matters in a long recording.
  • A dashboard to sign in, organize recordings by organization and client app, generate/rotate API keys, invite teammates, and watch replays in the browser.

How the pieces fit together#

  • Your app embeds the recording SDK — the picto package from pub.dev — and uploads finished recordings on its own. There's no URL to configure: the SDK knows where to send them.
  • The backend is picto's hosted service. It stores your organizations, client apps and recordings, and serves the API both your app and the dashboard talk to. Nothing for you to deploy or operate. Recordings are kept for 30 days after upload and then deleted — see Recording Retention for exactly what that removes and what it leaves behind.
  • The dashboard is where you sign in, create organizations and client apps, grab API keys, invite collaborators, and click "Watch replay" on any recording.

If you're setting this up for the first time, start with Installation, then Quick Start to get your first recording uploaded end to end.

Everything else#