Skip to main content
Presentum - Declarative presentation engine for Flutter

Build dynamic UI at scale

Presentum is a declarative Flutter engine that helps you manage campaigns, app updates, special offers, tips, and notifications with clean, testable, type-safe code. Show the right message to the right user at the right time, with impression limits, cooldowns, A/B testing, and analytics - all handled automatically.

Declarative by design

Describe presentations as data. No imperative show/hide logic.

Type-safe

Generics ensure compile-time correctness. No runtime surprises.

Clean architecture

Business logic in guards, UI in outlets, tracking in storage.

Production ready

Eligibility rules, A/B tests, cooldowns, impression tracking built-in.

Quick example

// 1. Define surfaces
enum AppSurface with PresentumSurface {
  homeTopBanner,
  popup;
}

// 2. Create payload
class CampaignPayload extends PresentumPayload<AppSurface, CampaignVariant> {
  final String id;
  final int priority;
  final Map<String, Object?> metadata;
  final List<PresentumOption> options;
}

// 3. Initialize
final presentum = Presentum(
  storage: MyStorage(),
  guards: [CampaignGuard()],
);

// 4. Render
PresentumOutlet(
  surface: AppSurface.homeTopBanner,
  builder: (context, item) => BannerWidget(item),
)
That’s it! Presentum handles eligibility, impressions, cooldowns, and state automatically.

Get started

What you can build

Check out the comprehensive example application source code.

Guides

Recipes

Community

Ready to start?

Start with the quickstart guide

Build your first Presentum presentation in 5 minutes