Every one of us has been here.
The designer opens Figma and changes the primary color from #6C63FF to #5B52E8. A small update (they think).
Our release cycle: create a branch, update the color, build, test, submit to App Store, wait for store review, for just a hex code.
This is the tax Flutter developers pay for a compile-time theming system. It's powerful and type-safe and beautiful β and completely frozen the moment your app ships.
flutter_skin
flutter_skin is a runtime skin engine. Instead of hardcoding your color values, you define them as named tokens. Those tokens are managed from a dashboard and delivered to your app.
When you publish a new skin, every connected device updates instantly.
How it works in 2 lines
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterSkin.init(apiKey: 'fsk_your_key_here');
runApp(const MyApp());
}
// In your MaterialApp:
theme: FlutterSkin.toThemeData()
That's the integration. FlutterSkin.init() fetches the active skin from the FSkin backend and opens a persistent SSE connection. From that point, any skin you publish reaches the app in about 2 seconds.
The live update architecture
Here's what happens end to end when you click Publish:
Dashboard: click Publish
β
Skin marked active in PostgreSQL
β
Supabase Realtime detects the UPDATE on skins table
β
Node.js backend receives the Realtime event
β
Backend writes SSE event to all connected Flutter clients
β
flutter_skin package receives the flag
β
Package re-fetches active skin from CDN
β
A stream emits new SkinTokens
β
setState() β MaterialApp rebuilds β app repaints
Total time: ~1β2 seconds. No polling. No App Store. No user action.
The full MaterialApp setup
To react to live updates, wrap your app in a StatefulWidget:
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
FlutterSkin.onSkinChanged.listen((_) {
if (mounted) setState(() {});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: FlutterSkin.toThemeData(),
home: const HomePage(),
);
}
}
What's available today
The alpha supports color tokens β full Material ColorScheme mapping:
-
primary,secondary,background,surface,error - All the
on*counterparts -
brightnessfor light/dark
The dashboard (app.fskin.dev) gives you:
- Project management
- Skin editor with JSON view
- Team collaboration with role-based permissions
- API key management (auto-generated per project)
- Publishing with confirmation + version history
A lot of cool features still coming
Links
- π¦ Package: pub.dev/packages/flutter_skin
- π₯οΈ Dashboard: app.fskin.dev
- π Docs: docs.fskin.dev
- π GitHub: github.com/koukibadr/flutter_skin
It's still on alpha track.
I'd love feedback from anyone who tries it β bug reports, feature requests.
don't forget to thumbs up our package on pub.dev π₯Έ π.
United States
NORTH AMERICA
Related News
π I Built a Dropshipping Automation Pipeline β Here's What I Learned (and What I'd Do Differently)
10h ago
How I Cut My LLM API Bill by 40x: A Freelancer's Migration Story
10h ago

Mattress Firm Coupons: Save up to $600
3h ago
Google Ordered to Pay $2 Billion For Anti-Competitive Practices By Swedish Court
20h ago
The Censorship Wall: Why Every AI Companion App Ends Up Filtering You
20h ago