I maintain another_flushbar on pub.dev — one of the more popular Flutter notification packages. After seeing how many developers were pulling in the full Firebase SDK just to show an in-app banner, I decided to build something simpler.
The result is FlushKit: a remote in-app notification SDK for Flutter, powered by Server-Sent Events.
The problem with Firebase for in-app notifications
Firebase Cloud Messaging is excellent for push notifications when your app is closed. But if your app is open and you just want to show an announcement, an alert, or an onboarding tip — you're still carrying google-services.json, Firebase Auth dependencies, and a background service to do it.
That felt like too much for the in-app case.
Why SSE instead of WebSockets
SSE (Server-Sent Events) is a persistent HTTP connection where the server pushes events to the client. One direction only — which is exactly what notifications need. No handshake overhead, no socket management, automatic reconnection built into the browser/HTTP spec.
For Flutter, I built a persistent SSE client that reconnects on drop and replays missed notifications via a ?since= query parameter. If a user had the app closed, they get the notification on next open.
What the integration looks like
// Initialize once in your app
FlushbarRemote.init(apiKey: 'fk_live_••••••••', context: context);
`
That's it. From that point, any notification you create in the FlushKit dashboard streams to every connected instance of your app in real time.
The SDK handles reconnection, offline replay, action buttons, icons, and persistent mode — all built on another_flushbar under the hood.
The backend
Go/Gin with a SSE broadcast layer per app. Each connected Flutter instance holds an open HTTP connection. When you publish a notification, it fans out to all active connections immediately.
The same SSE channel will carry Remote Config events next — one persistent connection, multiple message types.
Where it is today
FlushKit is live at flushkit.dev with a free tier. Early stage — I'm the solo founder. Feedback on the use case, the API design, or the pricing is genuinely welcome.
If you're already using another_flushbar, FlushKit is the hosted layer on top of it.
FlushKit is built on another_flushbar,
which I also maintain. Free tier available at flushkit.dev.
Top comments (0)