# britannio/in_app_review architecture

> Architecture diagram of the GitHub repository britannio/in_app_review, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/britannio/in_app_review
- Repository: https://github.com/britannio/in_app_review

## Overview

in_app_review is a Flutter plugin for checking review availability, requesting an in-app review, or opening a store listing. The documented workflow starts in the app-facing Dart API and reaches platform-specific implementations; the native excerpts show method dispatch and calls to Android Play Core, Apple StoreKit, and store-opening APIs. The Dart platform-interface implementation and Windows code were not sampled, so those connections are shown as unverified or omitted rather than inferred as confirmed calls.

Main entry points: [`in_app_review_platform_interface/lib/method_channel_in_app_review.dart`](https://github.com/britannio/in_app_review/blob/master/in_app_review_platform_interface/lib/method_channel_in_app_review.dart) (Method channel), [`in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt`](https://github.com/britannio/in_app_review/blob/master/in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt) (Android plugin), [`in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`](https://github.com/britannio/in_app_review/blob/master/in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift) (iOS plugin), [`in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`](https://github.com/britannio/in_app_review/blob/master/in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift) (macOS plugin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_flutter["Flutter API"]
  node_dart_api["Review API<br/>[in_app_review.dart]"]
  node_platform_iface["Platform interface"]
  node_method_channel["Method channel"]
end

subgraph group_native["Native adapters"]
  node_android_plugin["Android plugin"]
  node_ios_plugin["iOS plugin"]
  node_macos_plugin["macOS plugin"]
end

subgraph group_stores["Review and stores"]
  node_play_core["Play review API"]
  node_play_store["Google Play listing"]
  node_storekit["StoreKit review"]
  node_apple_store["Apple store listing"]
  node_windows_store["Microsoft Store"]
end

node_app(("Flutter app"))

node_app -->|"calls"| node_dart_api
node_dart_api -.->|"delegates to"| node_platform_iface
node_platform_iface -.->|"uses"| node_method_channel
node_method_channel -.->|"dispatches to"| node_android_plugin
node_method_channel -.->|"dispatches to"| node_ios_plugin
node_method_channel -.->|"dispatches to"| node_macos_plugin
node_android_plugin -->|"requests review"| node_play_core
node_android_plugin -->|"opens listing"| node_play_store
node_ios_plugin -->|"requests review"| node_storekit
node_ios_plugin -->|"opens listing"| node_apple_store
node_macos_plugin -->|"requests review"| node_storekit
node_macos_plugin -->|"opens listing"| node_apple_store
node_app -.->|"opens listing"| node_windows_store

click node_dart_api "https://github.com/britannio/in_app_review/blob/master/in_app_review/lib/in_app_review.dart"
click node_platform_iface "https://github.com/britannio/in_app_review/blob/master/in_app_review_platform_interface/lib/in_app_review_platform_interface.dart"
click node_method_channel "https://github.com/britannio/in_app_review/blob/master/in_app_review_platform_interface/lib/method_channel_in_app_review.dart"
click node_android_plugin "https://github.com/britannio/in_app_review/blob/master/in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt"
click node_ios_plugin "https://github.com/britannio/in_app_review/blob/master/in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift"
click node_macos_plugin "https://github.com/britannio/in_app_review/blob/master/in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dart_api,node_platform_iface,node_method_channel toneBlue
class node_android_plugin,node_ios_plugin,node_macos_plugin toneAmber
class node_play_core,node_play_store,node_storekit,node_apple_store,node_windows_store toneMint
class node_app toneIndigo
```

## Components

### Flutter API

- [Review API](https://github.com/britannio/in_app_review/blob/master/in_app_review/lib/in_app_review.dart): `in_app_review/lib/in_app_review.dart`
- [Platform interface](https://github.com/britannio/in_app_review/blob/master/in_app_review_platform_interface/lib/in_app_review_platform_interface.dart): `in_app_review_platform_interface/lib/in_app_review_platform_interface.dart`
- [Method channel](https://github.com/britannio/in_app_review/blob/master/in_app_review_platform_interface/lib/method_channel_in_app_review.dart): `in_app_review_platform_interface/lib/method_channel_in_app_review.dart`

### Native adapters

- [Android plugin](https://github.com/britannio/in_app_review/blob/master/in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt): `in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt`
- [iOS plugin](https://github.com/britannio/in_app_review/blob/master/in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift): `in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`
- [macOS plugin](https://github.com/britannio/in_app_review/blob/master/in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift): `in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`

### Review and stores

- **Play review API**
- **Google Play listing**
- **StoreKit review**
- **Apple store listing**
- **Microsoft Store**

### Other components

- **Flutter app**

## Connections

- Flutter app → Review API: calls (evidence: `README.md`)
- Review API → Platform interface: delegates to
- Platform interface → Method channel: uses
- Method channel → Android plugin: dispatches to
- Method channel → iOS plugin: dispatches to
- Method channel → macOS plugin: dispatches to
- Android plugin → Play review API: requests review (evidence: `in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt`)
- Android plugin → Google Play listing: opens listing (evidence: `in_app_review/android/src/main/kotlin/dev/britannio/in_app_review/InAppReviewPlugin.kt`)
- iOS plugin → StoreKit review: requests review (evidence: `in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`)
- iOS plugin → Apple store listing: opens listing (evidence: `in_app_review/ios/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`)
- macOS plugin → StoreKit review: requests review (evidence: `in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`)
- macOS plugin → Apple store listing: opens listing (evidence: `in_app_review/macos/in_app_review/Sources/in_app_review/InAppReviewPlugin.swift`)
- Flutter app → Microsoft Store: opens listing (evidence: `README.md`)
