This project is a Flutter implementation of the Adaptive Cards specification. The Adaptive Cards project was originally developed by Microsoft and is now an open source project. You can find more information about Adaptive Cards at https://adaptivecards.io/. This particular implementation is a fork of the original project that was created to add support for Flutter. This project is not affiliated with Microsoft. The project was originally created by Neohelden.
Adaptive Cards is a way of implementing Server Driven UI (SDUI) using a JSON based schema to deliver user interfaces specifications across platforms.
- See the AdaptiveCards Getting Started page for more information about the core AdaptiveCards library.
- See the AdaptiveTemplating Getting Started for more info about the templating library that can sit in front of adaptive cards.
The default branch has been renamed from the original repository. master is now named main
If you have a local clone, you can update it by running the following commands.
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a-
Libraries
- The Adaptive Card library is in packages/flutter_adaptive_cards_fs
- The Adaptive Card library CHANGELOG is in packages/flutter_adaptive_cards_fs/CHANGELOG.md
-
The Adaptive Card Host library is an optional backend invoke bridge (PlainJson and Teams-shaped request/response adapters, HTTP client, and
AdaptiveCardBackendHandlerswiring). packages/flutter_adaptive_cards_host_fs- The Adaptive Card Host library CHANGELOG is in packages/flutter_adaptive_cards_host_fs/CHANGELOG.md
-
Adaptive Card Charting is an extension that adds charting capabilities and is implemented in its own package so that its third party dependencies are isolated from the core library. packages/flutter_adaptive_charts_fs
- The Adaptive Card Charting library CHANGELOG is in packages/flutter_adaptive_charts_fs/CHANGELOG.md
-
The Adaptive Card Template library supports merging json data into an Adaptive Card template. It is implemented in its own package packages/flutter_adaptive_template_fs
- The Adaptive Card Template library CHANGELOG is in packages/flutter_adaptive_template_fs/CHANGELOG.md
- Adaptive Cards Template specification
-
azure bot service expressions are not currently supported.
The widgetbook app is a component gallery for this project. It renders Adaptive Card JSON samples grouped by element and action type so you can browse layouts, inputs, actions, v1.6 extensions, and chart samples without writing a host app.
- Browse use cases in the Widgetbook sidebar (TextBlock, inputs, actions, tables, charts, and more).
- Switch light / dark themes and viewport sizes from the Widgetbook toolbar.
- Inspect rendered cards from JSON under
widgetbook/lib/samples/(each use case points at a sample file). - Try interactive host demos that go beyond static JSON: TextBlock → Text overlay (knob-driven
setText) and Input.ChoiceSet → dependent country/city (valueChangedActionreset + hostonChange/applyUpdates) — see form-inputs.md.
cd widgetbook
fvm flutter pub get
fvm flutter runPick a desktop, web, or mobile device when prompted. On macOS, enable outgoing network connections in Runner signing if samples load remote images.
Use cases are declared in widgetbook/lib/adaptive_cards_use_cases.dart. Regenerate the Widgetbook directory tree, then restart the app:
cd widgetbook
fvm dart run build_runner build
fvm flutter run- Place files under
widgetbook/lib/samples/(mirror the existing folder layout). - Register the folder in
widgetbook/pubspec.yamlunderflutter: assets:if you create a new directory. - Add a
@widgetbook.UseCaseinadaptive_cards_use_cases.dartand runbuild_runneras above.
More detail: widgetbook/README.md.
The adaptive_explorer app is a desktop design studio for authoring and previewing Adaptive Cards. It combines a live preview with JSON editors for template, data, and merged output—useful when you are editing card JSON in an external editor or testing templating.
- Open Template — load an Adaptive Card template or fully resolved card JSON.
- Open Data (optional) — load a data file; the app merges template + data with
flutter_adaptive_template_fsand previews the result. - Edit template, data, or merged JSON in tabs (
json_editor_flutter) and save changes. - Watch the filesystem: when the open template or data file changes on disk, the preview refreshes automatically.
- Resize the split between preview and editor with the divider (preview above editor in portrait, side-by-side in landscape).
macOS, Windows, and Linux (desktop only).
cd adaptive_explorer
fvm flutter pub get
fvm flutter runOn macOS, the app uses file_picker and needs appropriate signing and entitlements for file access and network images (see adaptive_explorer/README.md).
- Start the app.
- Click Open Template and choose a
.jsonfile (template or resolved card). - Optionally click Open Data and choose a companion data file.
- Use the Template / Data / Merged tabs to edit; the preview updates as you work or when files change externally.
More detail: adaptive_explorer/README.md.
| Platform | Status | Notes |
|---|---|---|
| Android | ✅ | |
| iOS | ✅ | |
| Web | ✅ | |
| Linux | ✅ | Only tested on build agents |
| macOS | ✅ | |
| Windows | ✅ | Video Player not supported |
- Flutter versions are managed using fvm.
- This repository is managed using flutter workspaces via the
pubspec.yaml
Many!
- See Defects
- Microsoft learning authoring cards text features may not all be implemented
This repo is configured for Cursor, Antigravity, Claude Code, and other coding agents. Full setup, install commands, and update procedures are in doc/AI-Agent-Support.md.
Always-on rules — AGENTS.md
Always-on project guardrails (FVM, monorepo hygiene, Very Good Analysis, Riverpod document overlays, semantic labels, localization). Derived from the Flutter team AI rules, trimmed for Antigravity’s ~12K character limit.
Task playbooks — .agents/skills/
Modular skills loaded when a task matches. Vendored upstream skills are tracked in skills-lock.json.
| Source | Repository | Count |
|---|---|---|
| Dart team | dart-lang/skills | 9 |
| Flutter team | flutter/skills | 10 |
| Superpowers | obra/superpowers | 14 |
| Project-specific | (authored in-repo) | 11 |
Project-specific skills: adaptive-cards-dart-flutter-fvm, adaptive-cards-monorepo-workspace, adaptive-cards-element-registry, adaptive-cards-flutter-standard-practices, adaptive-cards-hostconfig-theme, adaptive-cards-spec-compliance, adaptive-cards-templating, adaptive-cards-testing, code-review, release-engineer, release-flutter-upgrade-sdk.
Superpowers highlights: brainstorming, writing-plans, test-driven-development, systematic-debugging, subagent-driven-development, and related collaboration workflows.
npx skills add dart-lang/skills --skill '*' --agent universal --yes
npx skills add flutter/skills --skill '*' --agent universal --yes
npx skills add obra/superpowers --skill '*' --agent universal --yesUpdate vendored skills: npx skills update. For Cursor user-level Superpowers and the optional /add-plugin superpowers hook, see doc/AI-Agent-Support.md.
- Adaptive Cards learning and specification site
- Partners using adaptive cards
- Adaptive Cards for Android is available as a maven artifact
- Adaptive Cards for ios is available as a pod
- Adaptive Cards for javascript is available via npm
- Adaptive Cards for Windows WPF
- Adaptives Cards for Image renders into a png
- Adaptive Cards for Windows UWP
- A community supported Adaptive Cards for ReactNative
There is also
- A React Native designer SDK
- A Javascript Templating SDK that can be used as a designer