<?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: Saad Alsaree</title>
    <description>The latest articles on DEV Community by Saad Alsaree (@saadalsaree).</description>
    <link>https://dev.to/saadalsaree</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%2F4230221%2F618556da-ffbd-4f8a-a463-c5ae78c85834.jpg</url>
      <title>DEV Community: Saad Alsaree</title>
      <link>https://dev.to/saadalsaree</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saadalsaree"/>
    <language>en</language>
    <item>
      <title>Building a modern Blazor UI without leaving .NET: introducing RaxUI</title>
      <dc:creator>Saad Alsaree</dc:creator>
      <pubDate>Fri, 06 Nov 2026 10:53:43 +0000</pubDate>
      <link>https://dev.to/saadalsaree/building-a-modern-blazor-ui-without-leaving-net-introducing-raxui-2kbh</link>
      <guid>https://dev.to/saadalsaree/building-a-modern-blazor-ui-without-leaving-net-introducing-raxui-2kbh</guid>
      <description>&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I'm a full-stack developer. My backends are .NET, and for years my frontends were React and Next.js.&lt;/p&gt;

&lt;p&gt;I tried Blazor more than once, because I wanted one platform from the database to the browser. Each time a project needed a modern, highly customized interface, I ended up reaching for React and its component ecosystem again.&lt;/p&gt;

&lt;p&gt;So I started building the components I was missing, in Blazor, with the look and the developer experience I was used to. That work became &lt;strong&gt;RaxUI&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RaxUI is
&lt;/h2&gt;

&lt;p&gt;RaxUI is a set of 68 open-source components for Blazor and React that share one theme. A CLI copies each component's source into your app, so you own the code and can change any of it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your code, not a dependency.&lt;/strong&gt; &lt;code&gt;raxui add&lt;/code&gt; copies &lt;code&gt;.razor&lt;/code&gt; files and their CSS into your project. Installed components run without the CLI, and there is no runtime package to upgrade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern components out of the box.&lt;/strong&gt; Buttons and forms, but also a data grid, charts, a kanban board, a calendar, a command palette, chat and AI conversation parts, and a rich text editor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One theme, full control.&lt;/strong&gt; Three appearances (&lt;code&gt;default&lt;/code&gt;, &lt;code&gt;flat&lt;/code&gt;, &lt;code&gt;glass&lt;/code&gt;), light and dark mode, accent colours and density, all set with HTML attributes on any element.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right-to-left built in.&lt;/strong&gt; Every component supports RTL, including keyboard navigation, charts and overlays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built on Bootstrap 5.3.&lt;/strong&gt; It works with the default Blazor template without extra setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The React components share the same theme, so a team with both stacks gets one design system.&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in a real app
&lt;/h2&gt;

&lt;p&gt;The best test of a UI library is a full application, so I built an admin dashboard with nothing but Blazor and RaxUI: &lt;a href="https://blazor.raxui.com/" rel="noopener noreferrer"&gt;blazor.raxui.com&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Three dashboards:&lt;/strong&gt; e-commerce, CRM and analytics, with KPI cards, sparklines, area, bar and doughnut charts, and paged order tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Working pages:&lt;/strong&gt; customers, tasks on a kanban board, a calendar, an AI assistant and settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live theming:&lt;/strong&gt; switch appearance, accent, light and dark mode, and Arabic right-to-left from the top bar, and every component follows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It runs on Blazor Server, with no JavaScript framework. The only JavaScript is the small modules that ship with the components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdai3h7aavmebhxy5ywo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbdai3h7aavmebhxy5ywo.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The e-commerce dashboard in dark mode, glass appearance, indigo accent.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn5ttiirx8koesuh3azc9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn5ttiirx8koesuh3azc9.gif" alt=" " width="720" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One set of components: default, glass and flat appearances, indigo, emerald, amber and blue accents, light and dark mode, then Arabic right-to-left.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in a minute
&lt;/h2&gt;

&lt;p&gt;RaxUI works with Blazor Web Apps on .NET 8, 9 and 10. Install the CLI, create an app, and add the components you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--global&lt;/span&gt; RaxUI &lt;span class="nt"&gt;--prerelease&lt;/span&gt;
dotnet new blazor &lt;span class="nt"&gt;--interactivity&lt;/span&gt; Server &lt;span class="nt"&gt;-n&lt;/span&gt; MyApp
&lt;span class="nb"&gt;cd &lt;/span&gt;MyApp
raxui init
raxui add button dialog chart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;raxui init&lt;/code&gt; asks for an appearance and an accent. Then use the components like any Razor component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Button OnClick="@(() =&amp;gt; count++)"&amp;gt;Clicked @count times&amp;lt;/Button&amp;gt;

&amp;lt;Chart Type="area" Label="Revenue" Labels="months" Series="series" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any element can set the theme for the components inside it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;data-rax-appearance=&lt;/span&gt;&lt;span class="s"&gt;"glass"&lt;/span&gt; &lt;span class="na"&gt;data-bs-theme=&lt;/span&gt;&lt;span class="s"&gt;"dark"&lt;/span&gt; &lt;span class="na"&gt;data-rax-accent=&lt;/span&gt;&lt;span class="s"&gt;"emerald"&lt;/span&gt; &lt;span class="na"&gt;dir=&lt;/span&gt;&lt;span class="s"&gt;"rtl"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  ...
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How it is built
&lt;/h2&gt;

&lt;p&gt;A few decisions shape how RaxUI behaves in a Blazor app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native browser features first.&lt;/strong&gt; Dialogs and popovers use the platform's &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt; element and &lt;code&gt;popover&lt;/code&gt; attribute, with small JavaScript modules for focus, keyboard and positioning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every render mode.&lt;/strong&gt; Components work with static SSR, Interactive Server, Interactive WebAssembly and Interactive Auto. They never set &lt;code&gt;@rendermode&lt;/code&gt;; your page or &lt;code&gt;App.razor&lt;/code&gt; decides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No hidden dependencies.&lt;/strong&gt; Third-party engines, such as Chart.js for charts, are copied into the component folder unchanged, with their licences. Your project gets no new NuGet packages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe installs.&lt;/strong&gt; The CLI never silently overwrites your edits. Interrupted installs roll back, and &lt;code&gt;raxui update&lt;/code&gt; shows conflicts before it changes anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tested in real apps.&lt;/strong&gt; Components are installed into freshly generated Blazor apps on .NET 8, 9 and 10 and checked in a real browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it stands, and how to help
&lt;/h2&gt;

&lt;p&gt;RaxUI is open source under the MIT licence and still in preview (&lt;code&gt;0.1.0-preview.4&lt;/code&gt;). APIs and file layouts can still change between releases.&lt;/p&gt;

&lt;p&gt;I'd be glad to have developers join in, through issues, ideas or pull requests, to help it mature and keep pace with the platform. Bug reports from real projects are especially valuable: the dashboard alone surfaced six fixes before this release.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Documentation and live examples: &lt;a href="https://raxui.com/" rel="noopener noreferrer"&gt;raxui.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dashboard demo: &lt;a href="https://blazor.raxui.com/" rel="noopener noreferrer"&gt;blazor.raxui.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source and issues: &lt;a href="https://github.com/raxui/RaxUI" rel="noopener noreferrer"&gt;github.com/raxui/RaxUI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to contribute: &lt;a href="https://github.com/raxui/RaxUI/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Packages: &lt;a href="https://www.nuget.org/packages/RaxUI" rel="noopener noreferrer"&gt;NuGet&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/@raxui/react" rel="noopener noreferrer"&gt;npm&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build something with it, I'd love to see it.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>opensource</category>
      <category>blazor</category>
      <category>react</category>
    </item>
  </channel>
</rss>
