<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fossui</title>
    <description>The latest articles on DEV Community by fossui (@fossui).</description>
    <link>https://dev.to/fossui</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4051806%2Fa2205a84-1408-4197-b34e-a5a606759498.png</url>
      <title>DEV Community: fossui</title>
      <link>https://dev.to/fossui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fossui"/>
    <language>en</language>
    <item>
      <title>Material vs fossui: an honest, component-by-component comparison</title>
      <dc:creator>fossui</dc:creator>
      <pubDate>Thu, 13 Aug 2026 11:57:32 +0000</pubDate>
      <link>https://dev.to/fossui/material-vs-fossui-an-honest-component-by-component-comparison-2ljg</link>
      <guid>https://dev.to/fossui/material-vs-fossui-an-honest-component-by-component-comparison-2ljg</guid>
      <description>&lt;p&gt;Material wins on maturity, breadth, and accessibility depth. fossui wins on&lt;br&gt;
default look, API shape, and footprint. We wrote up exactly where each of&lt;br&gt;
those is true.&lt;/p&gt;

&lt;p&gt;The gist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Look&lt;/strong&gt;: Material's tinted seeded color scheme and rounded-pill buttons vs
fossui's neutral palette and superellipse corners. Same screens rendered
both ways in the full post, so you judge it, not us.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API shape&lt;/strong&gt;: Material spreads emphasis across five button classes,
fossui folds it into one widget with a variant. Same pattern repeats
across tabs, badges, dialogs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Footprint&lt;/strong&gt;: one runtime dependency, zero icon package, fossui paints
its own glyphs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;32 components mapped&lt;/strong&gt; against their Material counterpart, six with no
Material equivalent at all (OTP field, number field, skeleton, meter,
toggle, toggle group).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where Material actually wins, no spin: raw accessibility depth on dialogs,&lt;br&gt;
selects, sliders; broader built-in variants (RangeSlider, DataTable,&lt;br&gt;
fullscreen dialogs); and the entire ecosystem gravity, every tutorial and&lt;br&gt;
Stack Overflow answer assumes Material.&lt;/p&gt;

&lt;p&gt;Full scorecard, every screenshot, and the complete component map:&lt;br&gt;
&lt;a href="https://fossui.org/blogs/minimal-flutter-ui-kits-compared-2026" rel="noopener noreferrer"&gt;fossui.org/blogs/minimal-flutter-ui-kits-compared-2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>opensource</category>
      <category>dart</category>
      <category>uidesign</category>
    </item>
    <item>
      <title>Migrating from Material to fossui, without a rewrite</title>
      <dc:creator>fossui</dc:creator>
      <pubDate>Tue, 04 Aug 2026 12:16:26 +0000</pubDate>
      <link>https://dev.to/fossui/migrating-from-material-to-fossui-without-a-rewrite-f68</link>
      <guid>https://dev.to/fossui/migrating-from-material-to-fossui-without-a-rewrite-f68</guid>
      <description>&lt;p&gt;Do you have to rewrite your app to try fossui? No. You swap widgets one screen at a time and let Material and fossui sit side by side until you're done.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;Keep your &lt;code&gt;MaterialApp&lt;/code&gt;, point its theme at fossui's:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;MaterialApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;theme:&lt;/span&gt; &lt;span class="n"&gt;FossThemeData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;light&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toThemeData&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="nl"&gt;darkTheme:&lt;/span&gt; &lt;span class="n"&gt;FossThemeData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;dark&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toThemeData&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="nl"&gt;home:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;HomePage&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your existing Material widgets keep working, so a half-migrated screen is fine.&lt;/p&gt;

&lt;h3&gt;
  
  
  A couple of the swaps
&lt;/h3&gt;

&lt;p&gt;Material spreads buttons across five classes. fossui has one, with a&lt;br&gt;
&lt;code&gt;variant&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;FossButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;variant:&lt;/span&gt; &lt;span class="n"&gt;FossButtonVariant&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;onPressed:&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;TextField&lt;/code&gt; + &lt;code&gt;InputDecoration&lt;/code&gt; folds into named params:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;FossTextField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;label:&lt;/span&gt; &lt;span class="s"&gt;'Email'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;helperText:&lt;/span&gt; &lt;span class="s"&gt;'Work address'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;leading:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LucideIcons&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;mail&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same pattern for cards, dialogs, tabs, checkboxes, and the rest, the full guide has the whole map.&lt;/p&gt;

&lt;h3&gt;
  
  
  The one real change
&lt;/h3&gt;

&lt;p&gt;Styling moves to the theme, not the call site. No &lt;code&gt;color:&lt;/code&gt; or&lt;br&gt;
&lt;code&gt;borderRadius:&lt;/code&gt; on the widgets. Retheme once at the root, and it moves everywhere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FossThemeData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;light&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;retheme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;FossThemeSpec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;primary:&lt;/span&gt; &lt;span class="n"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xFF16A34A&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nl"&gt;radius:&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A sensible order: register the theme, swap leaf widgets first (buttons, fields, badges), then containers and flows (cards, dialogs, tabs), then delete the Material styling you no longer need. Stop at any step and ship.&lt;/p&gt;

&lt;p&gt;Full widget-by-widget map and the rest of the setup &lt;a href="https://fossui.org/blogs/migrating-from-material-to-fossui" rel="noopener noreferrer"&gt;fossui.org/blogs/migrating-from-material-to-fossui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>ui</category>
      <category>opensource</category>
    </item>
    <item>
      <title>fossui components work the same under MaterialApp, CupertinoApp, or a bare WidgetsApp</title>
      <dc:creator>fossui</dc:creator>
      <pubDate>Wed, 29 Jul 2026 18:50:58 +0000</pubDate>
      <link>https://dev.to/fossui/fossui-components-work-the-same-under-materialapp-cupertinoapp-or-a-bare-widgetsapp-143l</link>
      <guid>https://dev.to/fossui/fossui-components-work-the-same-under-materialapp-cupertinoapp-or-a-bare-widgetsapp-143l</guid>
      <description>&lt;p&gt;Most Flutter UI kits assume you're on MaterialApp. fossui doesn't. Every component reads its own theme first, so the same button, switch, and text field render identically whether your app root is MaterialApp, CupertinoApp, or a bare WidgetsApp. This isn't an anti-Material stance, most fossui apps will still run on MaterialApp. It's about not locking the components to it.&lt;/p&gt;

&lt;p&gt;Registering the theme takes one line under each shell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// MaterialApp&lt;/span&gt;
&lt;span class="n"&gt;MaterialApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;theme:&lt;/span&gt; &lt;span class="n"&gt;FossThemeData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;light&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toThemeData&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// CupertinoApp or bare WidgetsApp&lt;/span&gt;
&lt;span class="n"&gt;FossTheme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;data:&lt;/span&gt; &lt;span class="n"&gt;FossThemeData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;light&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;MyApp&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything else comes from one accessor, &lt;code&gt;context.fossTheme&lt;/code&gt;, so a component never needs to know which shell it's under:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Colors&lt;/strong&gt;: 26 semantic roles (background, primary, destructive, and so on), light and dark&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Radii&lt;/strong&gt;: a five-step scale, from small controls to fully rounded&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spacing&lt;/strong&gt;: one base unit, scaled consistently across every component&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typography&lt;/strong&gt;: a six-step type scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadows&lt;/strong&gt;: four elevation levels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Motion&lt;/strong&gt;: named durations for the things that animate (overlays, drawers, toasts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Retheme once at the root and the whole app follows, no per-component color or radius props to keep in sync.&lt;/p&gt;

&lt;p&gt;fossui is young and mobile-first. Web and desktop compile and should work, but they're less exercised than mobile, so verify on the platforms you ship.&lt;/p&gt;

&lt;p&gt;Full breakdown, resolution order, and a working three-shell example: &lt;a href="https://fossui.org/docs/theming" rel="noopener noreferrer"&gt;the theming docs&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>opensource</category>
      <category>ui</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Introducing fossui: a Flutter UI kit that doesn't look like Material</title>
      <dc:creator>fossui</dc:creator>
      <pubDate>Tue, 28 Jul 2026 17:35:33 +0000</pubDate>
      <link>https://dev.to/fossui/introducing-fossui-a-flutter-ui-kit-that-doesnt-look-like-material-nh9</link>
      <guid>https://dev.to/fossui/introducing-fossui-a-flutter-ui-kit-that-doesnt-look-like-material-nh9</guid>
      <description>&lt;p&gt;Every Flutter app looks like Material, because Material is what you get for free. For the last few months we've been building an alternative.&lt;/p&gt;

&lt;p&gt;It's called &lt;a href="https://fossui.org" rel="noopener noreferrer"&gt;&lt;strong&gt;fossui&lt;/strong&gt;&lt;/a&gt;: a small, open-source Flutter UI kit for the apps that would rather not look like every other Flutter app.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it is
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;30+ components&lt;/strong&gt;, one dependency, no icon package&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework-agnostic&lt;/strong&gt;: it reads its own theme, so it drops into a
MaterialApp, a CupertinoApp, or a bare WidgetsApp&lt;/li&gt;
&lt;li&gt;A neutral look with &lt;strong&gt;superellipse (squircle) corners&lt;/strong&gt;, light and dark out of the box&lt;/li&gt;
&lt;li&gt;Built for the AI era: an &lt;strong&gt;MCP server and skills&lt;/strong&gt;, so coding agents write it with the right variants instead of guessing the API&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why
&lt;/h3&gt;

&lt;p&gt;Most Flutter component libraries ask you to buy into their world, wrap your app, or drive ThemeData directly. We wanted the opposite: components that respect a theme you already control, whether or not you're on MaterialApp. Retheme once at the root, and the whole set follows.&lt;/p&gt;

&lt;h3&gt;
  
  
  What ships around it
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt; at fossui.org, with a rendered light and dark preview for every component&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;playground and theme builder&lt;/strong&gt; at play.fossui.org, recolor the whole set live and copy the theme out&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;MCP server&lt;/strong&gt; so coding agents scaffold and theme fossui correctly on the first try&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where it stands
&lt;/h3&gt;

&lt;p&gt;Young, mobile-first, and built by a team of two. Web and desktop compile and should work, but they're less exercised than mobile.&lt;/p&gt;

&lt;p&gt;What would make or break fossui for your next Flutter app?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://fossui.org" rel="noopener noreferrer"&gt;https://fossui.org&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Package:&lt;/strong&gt; &lt;a href="https://pub.dev/packages/fossui" rel="noopener noreferrer"&gt;https://pub.dev/packages/fossui&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/fossui/fossui" rel="noopener noreferrer"&gt;https://github.com/fossui/fossui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>ui</category>
      <category>dart</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
