finds.dev← search

// the find

tommyxchow/frosty

★ 1,018 · Dart · AGPL-3.0 · updated Jun 2026

A mobile Twitch client for iOS and Android with 7TV, BetterTTV (BTTV), and FrankerFaceZ (FFZ) support.

Frosty is a Flutter-based Twitch mobile client that fills the gap left by Twitch's official app: it renders 7TV, BTTV, and FFZ emotes natively on iOS and Android. If you're a Twitch viewer who lives in chat, the official app is basically broken for you — Frosty is the fix. It's a real, shipped product on both app stores, not a demo.

MobX for state management is a reasonable call in Flutter — the observable/reaction model fits streaming chat well, where you have continuous updates and multiple independent UI slices reacting to the same data. The CI/CD setup is mature for a solo project: GitHub Actions driving Fastlane for both stores, with separate dry-run and release workflows. The IRC chat implementation handles a genuinely tricky protocol (Twitch's IRC dialect with its custom tags is not standard IRC) and supports reply threads and shared chat sessions, which are recent Twitch features many third-party clients skip. The dev setup is clean — one `.env` file, standard Flutter tooling, VS Code launch configs already wired.

Firebase is baked in for analytics and performance monitoring, which is a meaningful privacy tradeoff the README doesn't mention. Swapping it out isn't trivial given how deep `firebase_performance_interceptor.dart` likely sits in the HTTP layer. The GraphQL API (`twitch_gql_api.dart`) is Twitch's internal undocumented GQL endpoint — Twitch can break or restrict it at any time with no notice and no deprecation path. There are no automated tests visible in the directory tree; for an app that parses IRC messages and renders custom emotes, that's a real gap — emote parsing bugs are subtle and a regression suite would pay for itself. MobX's required code generation (`*.g.dart` files everywhere) adds friction to contributions — new developers hit the 'why don't my store changes do anything' wall before they read the warning in the README.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →