A mobile Twitch client for iOS and Android with 7TV, BTTV, and FFZ support. Built with Flutter.
Motivation
The official Twitch mobile app doesn’t support emotes from 7TV, BetterTTV (BTTV), and FrankerFaceZ (FFZ) — third-party services and extensions for Twitch used by millions of viewers and many top channels. This results in a poor mobile chat experience since only emote codes render rather than their image or GIF counterpart.
Features
Support for 7TV, BetterTTV, and FrankerFaceZ emotes and badges
Browse followed streams, top streams, and top categories
Autocomplete for emotes and user mentions
Light, dark, and black (OLED) themes
Search for channels and categories
See and filter chatters in a channel
Local chat user message history
Theater and fullscreen mode
Watch live streams with chat
Picture-in-picture mode
Block and report users
Emote menu
Sleep timer
And more…
For a more detailed overview, visit frostyapp.io.
Development setup
Go to the Twitch dev console and register a new application to retrieve a Client ID and Client Secret.
Clone the repo to a directory (e.g., git clone https://github.com/tommyxchow/frosty.git).
Navigate to lib/constants.dart and replace the clientId and secret constants with your client ID and client secret from step 1 (if using VSCode, use --dart-define to define them as environment variables).
Run flutter pub get to fetch all the dependencies.
Choose an emulator or device and run the app!
Note
Frosty uses MobX for state management. Please refer to the documentation about code generation, otherwise your changes within MobX stores may not be applied.
Warning
I built Frosty while learning Flutter, so some of the code may not be optimal. I’m working on refactoring, documenting, and cleaning up various parts as much as I can.
Feature requests and issues
If you have a feature request, found a bug, or have a general issue, you can submit it here on the issues tab. Doing so makes it easier for me to keep track of them and makes it publicly visible for others to review.
Note: I work on Frosty in my free time and take occasional breaks, so I may not respond immediately.
If you decide to support me monetarily, it is extremely appreciated and further motivates me to continue improving and maintaining Frosty.