appwin_community
appwin_community puts a community feed inside your Flutter app: posts,
comments, member profiles and moderation, all drawn natively. Your app provides
an entry point, a tab or a button, and the SDK draws the rest.
Appwin is an engagement platform for mobile app studios. It puts an in-app support messenger, a community feed and push notifications inside your app, all rendered natively, and gives your team one dashboard to run them.
Features
- ✅ Native feed - SwiftUI on iOS, Compose on Android, embedded in your own layout
- ✅ Posts, comments and reactions without a single screen to build
- ✅ Member profiles, shared with the other Appwin products
- ✅ Moderation from the dashboard, and reporting on the member side
- ✅ Unread badge you can read and show in your own navigation
- ✅ Configured from the dashboard - colours, wording, enabled features, no app release
- ✅ Comes with
appwin_core, so a singleconfigurecovers every product
Installation
flutter pub add appwin_community
That is the only package to install. appwin_core comes with it as a
dependency and is re-exported, so AppwinCore is available under the same
import - do not add it yourself, or you take on a second version
constraint to keep aligned with this one.
Requirements
| Platform | Minimum |
|---|---|
| iOS | 16.0 |
| Android | 7.0 (API 24) |
No repository to add: the plugin declares the native SDKs it needs, from
CocoaPods (or Swift Package Manager) and Maven Central. Your app only has to
meet the minimums: an iOS deployment target of 16.0 (in Xcode, plus
platform :ios, '16.0' in ios/Podfile if you use CocoaPods), and
minSdk = 24 in android/app/build.gradle if yours is lower.
On other platforms, AppwinCommunityView renders a neutral screen rather than
throwing, so a multi-platform app stays launchable.
Getting started
1. Configure the foundation at launch. This step is required, and it is the only one that is: every Appwin product reads the identity and the session it sets up.
import 'package:appwin_community/appwin_community.dart'; // re-exports AppwinCore
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await AppwinCore.instance.configure(appId: 'your-app-id');
runApp(const MyApp());
}
2. Initialise Community and gate your own UI. configure checks nothing;
initialize() asks the server whether Community may open for this app. The SDK
cannot remove your tab, it does not own your navigation.
final community = await AppwinCommunity.instance.initialize();
debugPrint('Appwin Community: $community'); // ready / unavailable(plan) / ...
if (community.isReady) {
// Add your community tab, or render AppwinCommunityView().
}
It answers rather than throwing: not being entitled is a normal outcome. The products share one round trip and the verdict is cached, so being offline falls back to the last known answer instead of closing a product you pay for.
3. Show the feed where you want it, usually a tab:
const AppwinCommunityView()
It takes the room your layout gives it and carries no close button, since there is a tab to leave it. Apps without a dedicated tab present it full screen instead:
await AppwinCommunity.instance.presentCommunity();
4. Attach your own user when someone signs in, so their posts and profile follow them across devices:
await AppwinCore.instance.identify(user.id);
await AppwinCommunity.instance.setUser(
nickname: user.displayName,
avatarUrl: user.photoUrl,
);
setUser pushes the nickname and photo your app already knows, so the member
does not type them twice.
5. Show the unread badge on your tab:
StreamBuilder<int>(
stream: AppwinCommunity.instance.unreadNotificationCountStream,
builder: (context, snapshot) => Badge.count(count: snapshot.data ?? 0),
)
To route Community notification taps yourself (select your tab first), set
AppwinCommunity.instance.onNotificationTap before initialize() and call
openPost from it. To react to what the member does (a first post, a comment),
listen to AppwinCommunity.instance.events.
Documentation
- Community: in-app feed, comments and profiles
- Install the SDK
- Identity: anonymous and signed-in users
License
Proprietary. Use is reserved to studios holding a current Appwin contract.
Libraries
- appwin_community
- In-app community feed for Appwin.
- appwin_community_event
- What the current member does in Community, and the posts the SDK opens.
- appwin_community_method_channel
- Default implementation of AppwinCommunityPlatform, over a method channel.
- appwin_community_platform_interface
- Platform contract behind
AppwinCommunity. - appwin_community_user
- The member profile the Community SDK exposes to the host app.
- appwin_community_view
- The native community feed, as a Flutter widget.