<?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: Alex Smith</title>
    <description>The latest articles on DEV Community by Alex Smith (@allxsmith).</description>
    <link>https://dev.to/allxsmith</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%2F3344154%2Fe95552f2-ca2e-40b1-a2cc-efb7e2653df9.jpeg</url>
      <title>DEV Community: Alex Smith</title>
      <link>https://dev.to/allxsmith</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/allxsmith"/>
    <language>en</language>
    <item>
      <title>Utility Classes Won 2026. I'm Still Betting on Bulma.</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Fri, 25 Sep 2026 03:27:38 +0000</pubDate>
      <link>https://dev.to/allxsmith/top-5-css-frameworks-in-2025-the-complete-comparison-1a2e</link>
      <guid>https://dev.to/allxsmith/top-5-css-frameworks-in-2025-the-complete-comparison-1a2e</guid>
      <description>&lt;p&gt;It's 2026, and the CSS framework debate is Tailwind vs. Tailwind. shadcn/ui or DaisyUI? Keep your v3 config or move to v4's CSS-first setup? Bootstrap isn't in the conversation anymore. It's the thing still running your admin panel.&lt;/p&gt;

&lt;p&gt;Utility classes won. I'll say it plainly.&lt;/p&gt;

&lt;p&gt;But I think they won &lt;em&gt;this round&lt;/em&gt;. The next one goes to the idea they replaced, object-oriented CSS, and Bulma is already standing where that pendulum is headed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The button test
&lt;/h2&gt;

&lt;p&gt;A primary button in Tailwind:&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;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"inline-flex items-center rounded-md bg-indigo-600 px-4 py-2 text-sm font-semibold text-white shadow-xs hover:bg-indigo-500 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Save
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same button in Bulma:&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;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button is-primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Save&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, you'd wrap the Tailwind version in a component. That's my whole point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Even Tailwind users are rebuilding objects
&lt;/h2&gt;

&lt;p&gt;Back in 2008, Nicole Sullivan's OOCSS laid out a simple idea: separate structure from skin. You build a reusable object (&lt;code&gt;.button&lt;/code&gt;), then layer skins on top (&lt;code&gt;.is-primary&lt;/code&gt;, &lt;code&gt;.is-large&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Now look at what the Tailwind ecosystem built next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DaisyUI&lt;/strong&gt;, one of Tailwind's most popular plugins, exists to give you &lt;code&gt;btn btn-primary&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;shadcn/ui&lt;/strong&gt; hides its utility strings behind a &lt;code&gt;variant&lt;/code&gt; prop. The API everyone actually touches is &lt;code&gt;&amp;lt;Button variant="destructive"&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@apply&lt;/code&gt;&lt;/strong&gt; is still there for every team that wants &lt;code&gt;.card&lt;/code&gt; back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's OOCSS, reinvented in a plugin and a component layer. Bulma's &lt;code&gt;button is-primary&lt;/code&gt; is the same idea, with no build step and nothing to wrap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern CSS fixed what pushed us to utilities
&lt;/h2&gt;

&lt;p&gt;Utilities took off because global CSS was painful. We had specificity wars, styles leaking across the app, and no real way to scope anything.&lt;/p&gt;

&lt;p&gt;Plain CSS has mostly solved that. Cascade layers, native nesting, &lt;code&gt;:where()&lt;/code&gt;, container queries, and custom properties now work in every major browser.&lt;/p&gt;

&lt;p&gt;Bulma v1 was rebuilt for that world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS variables everywhere.&lt;/strong&gt; You can rebrand without a build step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bulma-primary-h&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;262deg&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bulma-primary-s&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bulma-primary-l&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&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;&lt;strong&gt;Dark mode built in.&lt;/strong&gt; It follows &lt;code&gt;prefers-color-scheme&lt;/code&gt; automatically. You can also force it with &lt;code&gt;data-theme="dark"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skeleton loaders.&lt;/strong&gt; A single &lt;code&gt;is-skeleton&lt;/code&gt; class turns an element into a loading placeholder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A smart grid.&lt;/strong&gt; The new &lt;code&gt;grid&lt;/code&gt; and &lt;code&gt;cell&lt;/code&gt; classes sit alongside the classic flexbox &lt;code&gt;columns&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zero JavaScript, verified
&lt;/h2&gt;

&lt;p&gt;Bulma is pure CSS; its npm package doesn't contain a single &lt;code&gt;.js&lt;/code&gt; file. Tailwind is also zero in the browser, since it's a build tool with no runtime. The old guard is a different story.&lt;/p&gt;

&lt;p&gt;Here's what each framework ships if you use its interactive components (dropdowns, modals, tooltips):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;JS shipped (min + gzip)&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bulma 1.0.4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 KB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pure CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tailwind 4.3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 KB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Build-time only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bootstrap 5.3.8&lt;/td&gt;
&lt;td&gt;~24 KB&lt;/td&gt;
&lt;td&gt;Bundle with Popper (~16 KB without)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UIkit 3.25&lt;/td&gt;
&lt;td&gt;~53 KB&lt;/td&gt;
&lt;td&gt;Plus ~21 KB for the icon set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Foundation 6.9&lt;/td&gt;
&lt;td&gt;~67 KB&lt;/td&gt;
&lt;td&gt;~40 KB, plus the jQuery it requires&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Measured from the latest npm packages, September 2026. Foundation hasn't shipped a release since 2024.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This matters more every year. Server Components are the default in the Next.js App Router, and every kilobyte of client JavaScript has to justify itself. A stylesheet has nothing to hydrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest trade-offs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The full build isn't tiny.&lt;/strong&gt; The all-in &lt;code&gt;bulma.min.css&lt;/code&gt; is about 65 KB gzipped, because it ships every color, every shade, every helper, and the dark theme. Bulma's modular Sass fixes that: import only what you use. A realistic app build (buttons, forms, navbar, cards, modal, dropdown, columns, spacing helpers) came in around 36 KB gzipped in my test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You bring your own interactivity.&lt;/strong&gt; Bulma styles a modal or a dropdown, but it doesn't open one. In vanilla JS that's a few lines. In React, it's where a component library earns its keep. I got tired of rewriting the same &lt;code&gt;is-active&lt;/code&gt; toggles on every project, so I built one: &lt;a href="https://bestax.io" rel="noopener noreferrer"&gt;bestax-bulma&lt;/a&gt;, a fully typed React library for Bulma v1 (full disclosure: I maintain it).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ecosystem is smaller.&lt;/strong&gt; There are fewer themes and fewer plugins, and your AI assistant has seen far more Tailwind than Bulma. The class names are plain enough that it rarely matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I'd still pick Tailwind
&lt;/h2&gt;

&lt;p&gt;Pick Tailwind if your team already thinks in utilities and ships with shadcn/ui; switching costs are real. It's also the better call if you're building a fully bespoke design system where no framework's defaults would survive anyway.&lt;/p&gt;

&lt;p&gt;Bootstrap? Only if you're maintaining something that already uses it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in 30 seconds
&lt;/h2&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;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/bulma@1.0.4/css/bulma.min.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop that into a CodePen, write &lt;code&gt;&amp;lt;button class="button is-primary"&amp;gt;&lt;/code&gt;, and see how far you get before you miss anything.&lt;/p&gt;

&lt;p&gt;Utility classes won this round. The next one goes to CSS that reads like English, and Bulma has been writing it since 2016.&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>tailwindcss</category>
      <category>bulma</category>
    </item>
    <item>
      <title>Me Dealing with AI Training Bias</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Fri, 25 Sep 2026 03:27:11 +0000</pubDate>
      <link>https://dev.to/allxsmith/me-dealing-with-ai-training-bias-4kpm</link>
      <guid>https://dev.to/allxsmith/me-dealing-with-ai-training-bias-4kpm</guid>
      <description>&lt;p&gt;This started for me in 2024, when Bulma v1 came out. I went looking for a React package that supported it. There wasn't one yet.&lt;/p&gt;

&lt;p&gt;The packages people already knew were still on the older Bulma, and from where I sat they looked dormant. So I decided to fill that gap. I worked on it until I had what I considered a minimum viable product, and then I started trying to get the package recognized and used.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Tried First
&lt;/h2&gt;

&lt;p&gt;That effort was 2025. I wrote a real README, for npm and for GitHub, and I treated it like the front door. I posted about the package. I posted on Reddit. Between posts I kept enhancing it, small improvements, the kind of work you do when you figure the next person who comes looking should find something obviously worth using. I was pretty sure people would go looking.&lt;/p&gt;

&lt;p&gt;They mostly didn't. As I write this in September 2026, the repo has &lt;a href="https://github.com/allxsmith/bestax" rel="noopener noreferrer"&gt;eleven GitHub stars&lt;/a&gt;.  This still sucks...!&lt;/p&gt;

&lt;p&gt;I also spent a lot of 2025 on being findable in the usual places. SEO, so Google would surface the site. Cloudflare in front of it, so the docs would be fast. A docs site I put a ridiculous number of hours into, then went back and polished again. Blog posts, here and on dev.to and Medium. I'd publish something, check whether anyone had noticed, and wait. Still not much traction. It was disappointing. I had talked myself into thinking it would take off if I kept doing the work, and it didn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early 2026
&lt;/h2&gt;

&lt;p&gt;In 2026 I revamped how I was approaching the library. Early in the year I started the major redo of the forms. The big release of that work landed in June, but the redo itself started in those first months.&lt;/p&gt;

&lt;p&gt;I kept going, like the tortoise in that race. Slow and steady, and I didn't give up.&lt;/p&gt;

&lt;p&gt;That's when I got serious about not being a dumb wrapper. If someone already knows the classes, a thin package doesn't give them a reason to bother, and I was starting to feel that. I spent those months on the parts a real app needs. The forms redo was the long one. Around it I built things Bulma doesn't ship, a carousel, dialogs, toasts, an avatar, that kind of thing. I was trying to make a full component library, closer to MUI than to a handful of bindings. A lot of nights. I didn't know yet that doing all of that still wouldn't matter to a model.&lt;/p&gt;

&lt;p&gt;I wrote a couple more posts. The dev.to and Medium pieces were part of that. I built more of the docs, and then I went back over them and refined them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asking the Models What They'd Use
&lt;/h2&gt;

&lt;p&gt;By summer I had two explanations, and I still go back and forth on them. One is that people just aren't using Bulma much anymore. I don't think the project is abandoned. The repo still gets fixes. A framework can be maintained and still not be what anyone reaches for. The other explanation is that people have moved over to AI, and if that's how they're picking tools now, then the old ways of getting someone to notice a package don't work the way they used to.&lt;/p&gt;

&lt;p&gt;Articles were coming out about search itself changing. In July 2025 &lt;a href="https://www.pewresearch.org/short-reads/2025/07/22/google-users-are-less-likely-to-click-on-links-when-an-ai-summary-appears-in-the-results/" rel="noopener noreferrer"&gt;Pew Research Center&lt;/a&gt; looked at real Google visits. When the results page had an AI summary, people clicked a normal result 8% of the time, compared with 15% when there was no summary. They were also more likely to end the session on that page, 26% versus 16%. The answer was sitting there, and a lot of people never went further. I don't have a study like that for npm. What I do know is I had been counting on people to search, click, and read, and I don't think they sit down with an article about a library when a model will write the integration. Looking at eleven stars, that felt less like a theory and more like my year.&lt;/p&gt;

&lt;p&gt;So I started testing it. If people are mostly using AI, then maybe the AI is the thing finding libraries, and maybe people aren't trying new ones because the model picks for them. I opened chats and asked what it would use to build a web app, and what it would start a new project with.&lt;/p&gt;

&lt;p&gt;It surprised me. React, still, which was good. That's what I built for. Then it steered me toward Tailwind. Then toward shadcn/ui. I'd close the chat, phrase it a different way, and it would steer me there again. MUI and Mantine weren't the default either, which was interesting, because I'd been building toward that kind of library all year.&lt;/p&gt;

&lt;p&gt;When I asked for a new Bulma project, it recommended &lt;a href="https://www.npmjs.com/package/react-bulma-components" rel="noopener noreferrer"&gt;&lt;code&gt;react-bulma-components&lt;/code&gt;&lt;/a&gt;. That package last published 4.1.0 in February 2022, and it still targets Bulma 0.9. It recommended that over mine, and over newer libraries like &lt;a href="https://www.npmjs.com/package/reactive-bulma" rel="noopener noreferrer"&gt;&lt;code&gt;reactive-bulma&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/trunx" rel="noopener noreferrer"&gt;&lt;code&gt;trunx&lt;/code&gt;&lt;/a&gt;. Both of those were still publishing releases in September 2026. The models were reaching for the old name.&lt;/p&gt;

&lt;p&gt;Then it got weirder, and maybe "weirder" is the wrong word, but it felt weird to me. A lot of the answers said to skip the component library. Use Bulma's classes. Wrappers might be a dead end. Most people have a perfectly fine time writing the classes straight into the markup. And bestax-bulma often wasn't in the answer at all. It didn't seem to know the package existed.&lt;/p&gt;

&lt;p&gt;I asked what I could do so it would at least see bestax as a choice. The answer was the unexciting one. Keep doing the things you'd do for people in a world before this. The README, the posts, the docs. I was already doing that. I kept at it.&lt;/p&gt;

&lt;p&gt;What I kept hearing, when I asked again, was that training data on the popular stuff is why one-shotting and few-shotting works. The model has seen that library so many times that it already knows what a decent file looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Source Code Was the Shock
&lt;/h2&gt;

&lt;p&gt;I tried some prompts of my own. The sites looked sort of okay. Not polished, not really attractive, and I know it can look better than that because I've built the screens. The shock was the source. It was messy. A lot of it was Bulma classes, written out by hand, instead of my components. A tooltip built from scratch. An avatar that was basically a div with a background. I don't think it was rejecting the library. The training data is thin, so it doesn't really know what to use.&lt;/p&gt;

&lt;p&gt;There's a stale version of the same problem. A model trained in the spring has never seen a component I shipped in July. And even a model that met bestax once met an older bestax. The package has grown since then.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Summer of Trying Things
&lt;/h2&gt;

&lt;p&gt;I asked what I could do to help. It suggested a few things. &lt;code&gt;llms.txt&lt;/code&gt;, since I already had the docs on Docusaurus. Skills. And an MCP server. So, still in the summer, I started building those. I was tired, and I did it anyway.&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%2Fc4m7q2dsl9dtl9x3tb7w.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%2Fc4m7q2dsl9dtl9x3tb7w.png" alt="The LLM docs pipeline, drawn as pixel art: a dot matrix printer feeds a long perforated sheet labeled llms-full.txt, a card index box labeled llms.txt sits on the desk beside it, and a docs page marked button stands next to its glowing twin marked button.md" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;llms.txt&lt;/code&gt; was the easy one, and I was grateful, because nothing else that year had been easy. I turned on &lt;a href="https://www.npmjs.com/package/docusaurus-plugin-llms" rel="noopener noreferrer"&gt;&lt;code&gt;docusaurus-plugin-llms&lt;/code&gt;&lt;/a&gt;. The build writes a short index, the docs as one big file, and a markdown copy of each page, and it does that again on every deploy, so this particular thing can't drift away from me. That was the whole win. It did not make the models know the library.&lt;/p&gt;

&lt;p&gt;I also made sure &lt;a href="https://bestax.io/robots.txt" rel="noopener noreferrer"&gt;&lt;code&gt;robots.txt&lt;/code&gt;&lt;/a&gt; was set up. It carries a content signal, &lt;code&gt;search=yes, ai-input=yes, ai-train=yes&lt;/code&gt;. Search means building an index. ai-input means a model can use the page when it's answering. ai-train means training. Some people would turn the training one off. I want this library in the next round of training data, so I left all three on.&lt;/p&gt;

&lt;p&gt;Then I turned on Cloudflare's &lt;a href="https://blog.cloudflare.com/markdown-for-agents/" rel="noopener noreferrer"&gt;Markdown for Agents&lt;/a&gt;. The switch is under AI Crawl Control. When a client sends &lt;code&gt;Accept: text/markdown&lt;/code&gt;, Cloudflare converts the HTML and answers with &lt;code&gt;content-type: text/markdown&lt;/code&gt;. Their writeup says agents like Claude Code already send that header. I checked this site, and the LLMs guide does come back as markdown. The plugin's files are the clean docs, which is what I want sitting in a context window. Cloudflare's conversion is the rendered page, nav and everything. A little messy. I kept both, because different agents show up in different ways.&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%2Fp43kpyxmju5ce3a19yf5.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%2Fp43kpyxmju5ce3a19yf5.png" alt="Agent skills as pixel art game cartridges: a robot snaps a glowing cartridge labeled form into its open chest slot while six more cartridges labeled layout, theming, icons, custom, optimize, and migrate wait in a wall rack" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Skills were harder, and they stung more, because I could watch them almost work. I wrote them, generated a site, and the result was still wrong. So I did that again, and again, rewriting the skill each time. A skill is just a folder of instructions an agent can load. I ended up with a &lt;a href="https://dev.to/docs/skills/intro"&gt;handful&lt;/a&gt;, layout, forms, theming, icons, and a few others. Knowing the props is not the same as knowing how you actually want a page built. The early ones taught me that by failing. The loop did help. It just never helped all the way.&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%2Fe9jmi7loatct1cy14p5g.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%2Fe9jmi7loatct1cy14p5g.png" alt="The component catalog as a pixel art inventory screen: item slots labeled Button, Tooltip, Avatar, and Badge with the Tooltip slot glowing, a robot hand at a crafting bench lowering a half built duplicate tooltip, and a shield stamped with a check marked ci guard at the corner of the grid" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing I watched more than once was an agent happily building its own tooltip while mine was already there, shipped and documented. That one hurt. A wrong prop at least shows up in the type checker. A homemade component kind of works, and then you own it. I started putting a generated list of every component at the front of one of the skills, just the name and a line about what it's for. CI fails now if something ships without a docs page, because that's what the list is built from. I learned the hard way that if the agent can't see it, the agent will rebuild it.&lt;/p&gt;

&lt;p&gt;Even with the skills, it didn't always use them. I'd ask it to build something and it would just go off on its own. I asked what it was actually using. It said the types.&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%2F5ow0wyhzepay6cmii137.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%2F5ow0wyhzepay6cmii137.png" alt="Meeting agents in node_modules, drawn as pixel art: a robot holding a lantern kneels in a dark mine of stacked crates labeled node_modules before three glowing files labeled llms.txt, AGENTS.md, and CLAUDE.md, beside a signpost pointing to a lit doorway labeled bestax.io" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That sent me back into the code, which was a humbling place to end up after all the docs work. The comments on the types weren't very good, so an agent reading TypeScript was reading a weak version of the library. I rewrote them. On this project those comments also generate the props tables, so fixing them fixed both, and I wish I had noticed sooner. If you maintain a package, this is the part that got me. The comments ship inside &lt;code&gt;node_modules&lt;/code&gt;. An agent will open that and never read your post.&lt;/p&gt;

&lt;p&gt;Since 5.8.0 the published tarball also has &lt;code&gt;llms.txt&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and &lt;code&gt;CLAUDE.md&lt;/code&gt; sitting at the root. They're short pointers back to the site, named that way because that's what a lot of the tools look for by filename. The guide's section on &lt;a href="https://dev.to/docs/guides/llms#in-the-npm-package"&gt;what the npm package carries&lt;/a&gt; is the list. I didn't want a second copy of the docs in the tarball, going stale between releases.&lt;/p&gt;

&lt;p&gt;I put the skills in the scaffolder too, and a &lt;code&gt;CLAUDE.md&lt;/code&gt; that remembers the choices someone just made. CSS flavor, class prefix, icon library. Almost nobody was starting a new app with it. I did the work anyway. Field of Dreams, a little. If you build it, they will come. When an agent is the one building, those files do seem to help. When a person is, I still don't know. There haven't been many people.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.npmjs.com/package/bestax-mcp" rel="noopener noreferrer"&gt;MCP server&lt;/a&gt; came later in the summer. Same hope, another way for an agent to ask instead of guess. What I got was about the same as the skills. Not a breakthrough. Better-looking sites, and the source finally using my components instead of a pile of custom markup. I was glad, and I was also tired.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some of Them Started Recommending It
&lt;/h2&gt;

&lt;p&gt;I kept asking. Silly prompts, the kind where you just want to see which name comes back. Eventually it started to change. It would recommend mine in some cases, mostly when the effort was high or higher, and when it searched the web.&lt;/p&gt;

&lt;p&gt;My Cloudflare numbers started going up around then. AI bots, and some of it might be people. Hard to tell which is which. The one-shot web apps started to look better, and the agent started using my components instead of making its own.&lt;/p&gt;

&lt;p&gt;I asked again later, plain questions this time. The wording mattered, and so did the effort setting.&lt;/p&gt;

&lt;p&gt;This one only brought my package up when I turned the effort up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What react library would you recommend for a new web app that uses Bulma
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With effort up, Grok's first few sentences were: "For a new React app on Bulma, I'd use &lt;a class="mentioned-user" href="https://dev.to/allxsmith"&gt;@allxsmith&lt;/a&gt;/bestax-bulma. It targets Bulma v1 and it's still being worked on. react-bulma-components is the older package people remember, and it hasn't shipped a release since 2022."&lt;/p&gt;

&lt;p&gt;This one did better, and I didn't have to turn anything up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What is the best react bulma library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grok opened with: "The best React library for Bulma right now is &lt;a class="mentioned-user" href="https://dev.to/allxsmith"&gt;@allxsmith&lt;/a&gt;/bestax-bulma. It's still maintained, and it targets Bulma v1. The other name that comes up a lot is react-bulma-components, which last published in 2022."&lt;/p&gt;

&lt;p&gt;Claude was pickier. I have to turn the effort up to extra before it recommends bestax. Unless I do that, it feels like the model is sitting on older data, and even then it often still names react-bulma-components and lands on plain classes as the honest advice. ChatGPT and Gemini have recommended mine too. And Google, for the search "what's the best Bulma React library", has been recommending mine.&lt;/p&gt;

&lt;p&gt;It does show up now, when the question is about Bulma. But sometimes, and really most of the time, a model still questions why someone would use mine. It recommends react-bulma-components, and then the honest recommendation is to use the plain CSS classes.&lt;/p&gt;

&lt;p&gt;This is just what I was seeing in the chats I ran in September 2026. Ask for a web app with no other hint and it's still React, Tailwind, and shadcn/ui. Bulma only comes up when you ask for Bulma. And even then, a common answer is the 2022 package, followed by "you might be happier with the classes."&lt;/p&gt;

&lt;p&gt;I hope the steady work wasn't wasted. It's still slow, and most days it feels slow. Training bias is real. Ask for a web app and you still get anything but Bulma, unless you force the question. There's a ton of stuff built on Bulma. It's still a tiny fraction of Tailwind, Bootstrap, and Foundation. I feel that every time I open a new chat.&lt;/p&gt;

&lt;p&gt;I pulled the numbers so this wasn't only a feeling. Weekly downloads are &lt;a href="https://api.npmjs.org/downloads/point/2026-09-14:2026-09-20/tailwindcss,bootstrap,bulma,foundation-sites" rel="noopener noreferrer"&gt;npm's public counts&lt;/a&gt; for September 14 to 20, 2026. Stars are the GitHub counts on September 21, linked from the table. GitHub doesn't keep a separate page for a star count on a past day, so the repo is the source.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Weekly downloads&lt;/th&gt;
&lt;th&gt;GitHub stars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/tailwindlabs/tailwindcss" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.npmjs.org/downloads/point/2026-09-14:2026-09-20/tailwindcss" rel="noopener noreferrer"&gt;about 96 million&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/tailwindlabs/tailwindcss" rel="noopener noreferrer"&gt;about 98,000&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/twbs/bootstrap" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.npmjs.org/downloads/point/2026-09-14:2026-09-20/bootstrap" rel="noopener noreferrer"&gt;about 5.1 million&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/twbs/bootstrap" rel="noopener noreferrer"&gt;about 175,000&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/jgthms/bulma" rel="noopener noreferrer"&gt;Bulma&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.npmjs.org/downloads/point/2026-09-14:2026-09-20/bulma" rel="noopener noreferrer"&gt;about 279,000&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/jgthms/bulma" rel="noopener noreferrer"&gt;about 50,000&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/foundation/foundation-sites" rel="noopener noreferrer"&gt;Foundation&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.npmjs.org/downloads/point/2026-09-14:2026-09-20/foundation-sites" rel="noopener noreferrer"&gt;about 87,000&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/foundation/foundation-sites" rel="noopener noreferrer"&gt;about 30,000&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tailwind did about 96 million downloads that week. Bootstrap about 5.1 million. Bulma about 279,000. Foundation about 87,000. So Tailwind was somewhere around 340 times Bulma, and Bootstrap around 18 times. Stars are a different pile, because they add up over years. Bootstrap has about 175,000, Tailwind about 98,000, Bulma about 50,000, Foundation about 30,000. Foundation's last release on npm was &lt;a href="https://www.npmjs.com/package/foundation-sites/v/6.9.0" rel="noopener noreferrer"&gt;September 2024&lt;/a&gt;. Bulma on npm is still &lt;a href="https://www.npmjs.com/package/bulma/v/1.0.4" rel="noopener noreferrer"&gt;1.0.4&lt;/a&gt;, from April 2025, but the &lt;a href="https://github.com/jgthms/bulma" rel="noopener noreferrer"&gt;repository&lt;/a&gt; took fixes on September 21, 2026. I don't think people have given up on it. It's small, and that size is what I keep running into.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I'm Still on Bulma
&lt;/h2&gt;

&lt;p&gt;I really do think Bulma is the most eloquently designed of these. I know some people will bounce off that word. Tailwind is useful, genuinely. To me it looks like an inline style that exploded into word spaghetti. Bootstrap is closer to Bulma. Older, and the conventions aren't bad, they just don't feel as considered. Bulma is wordy. I know some people don't like that. I still think it's the one I'd rather come back to in six months and be able to read.&lt;/p&gt;

&lt;p&gt;When a model talks about those numbers, it treats them like one framework is better than the others. I don't buy that. The numbers are mostly a record of what people have written down the most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Get Discouraged
&lt;/h2&gt;

&lt;p&gt;I hope the labs training these models do something about how one-note the training data is, and the bias that comes out of it. Otherwise I think the internet, and a lot of what we know how to build, converges on a single kind of answer. One CSS approach, one component library, and the rest fade out. Diversity dies. I don't want that, and I don't think it has to go that way, but it will if the training data stays this lopsided and nobody pushes the other direction.&lt;/p&gt;

&lt;p&gt;This is me trying anyway. I'm still building, and I'm still hoping a model can name more than the one popular answer. It's a work in progress. There's a long, long way to go. If you're maintaining a package the models don't know, I hope you keep going too. The quiet is awful. Don't take it as a verdict. It doesn't happen overnight. If you keep at it, you will see it move. Slowly. Some days that is a very small comfort.&lt;/p&gt;

&lt;p&gt;I might be inconsequential. The model might only recommend my package to the few people who ask in a particular way. Heck, it's a start.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>bulma</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Future is httpyac, Not Postman

AI writes .http files in seconds. Plain text, version controlled, no context switching. Postman? GUI clicks AI can’t touch. Bruno tries but httpyac’s pure text approach wins. Text-based tools dominate the AI era. 🔥</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Sat, 24 Jan 2026 16:50:46 +0000</pubDate>
      <link>https://dev.to/allxsmith/the-future-is-httpyac-not-postman-ai-writes-http-files-in-seconds-plain-text-version-ap0</link>
      <guid>https://dev.to/allxsmith/the-future-is-httpyac-not-postman-ai-writes-http-files-in-seconds-plain-text-version-ap0</guid>
      <description></description>
    </item>
    <item>
      <title>AI is Killing COTS Software
Hot take: AI one-shots open source problems because it trained on millions of examples. COTS? Zero training data, sparse examples, cold start every time. Your AI assistant is basically guessing. OSS + AI wins. 🤖</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Sat, 24 Jan 2026 16:48:02 +0000</pubDate>
      <link>https://dev.to/allxsmith/ai-is-killing-cots-software-hot-take-ai-one-shots-open-source-problems-because-it-trained-on-1285</link>
      <guid>https://dev.to/allxsmith/ai-is-killing-cots-software-hot-take-ai-one-shots-open-source-problems-because-it-trained-on-1285</guid>
      <description></description>
    </item>
    <item>
      <title>The fastest and easiest way to setup React with Bulma and Vite.</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Sun, 16 Nov 2025 19:56:14 +0000</pubDate>
      <link>https://dev.to/allxsmith/the-fastest-and-easiest-way-to-setup-react-with-bulma-and-vite-37b</link>
      <guid>https://dev.to/allxsmith/the-fastest-and-easiest-way-to-setup-react-with-bulma-and-vite-37b</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/allxsmith" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3344154%2Fe95552f2-ca2e-40b1-a2cc-efb7e2653df9.jpeg" alt="allxsmith"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/allxsmith/install-bulma-and-react-in-30-seconds-33ic" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Install Bulma and React in 30 Seconds&lt;/h2&gt;
      &lt;h3&gt;Alex Smith ・ Nov 16&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bulma&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#vite&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#cli&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>react</category>
      <category>bulma</category>
      <category>vite</category>
      <category>cli</category>
    </item>
    <item>
      <title>Install Bulma and React in 30 Seconds</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Sun, 16 Nov 2025 04:28:52 +0000</pubDate>
      <link>https://dev.to/allxsmith/install-bulma-and-react-in-30-seconds-33ic</link>
      <guid>https://dev.to/allxsmith/install-bulma-and-react-in-30-seconds-33ic</guid>
      <description>&lt;p&gt;Want to build a React app with &lt;strong&gt;Bulma&lt;/strong&gt; CSS in 2025? Forget the 10-step tutorials. Skip the configuration hell. Just run one command and start coding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One command. Under 30 seconds. You're building.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR - The Fastest Way
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create bestax@latest my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Select Javascript or Typescript
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fafo1uxa0yp18nih1ag8x.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.amazonaws.com%2Fuploads%2Farticles%2Fafo1uxa0yp18nih1ag8x.png" alt="Select Javascript or Typescript" width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Select your bulma flavor
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fjwctmmcrtyp0c6waapdh.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.amazonaws.com%2Fuploads%2Farticles%2Fjwctmmcrtyp0c6waapdh.png" alt="Select the Bulma Flavor" width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Select your favorite Icon library
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2Fu3fuyy5zccu38wqao4sh.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.amazonaws.com%2Fuploads%2Farticles%2Fu3fuyy5zccu38wqao4sh.png" alt="Choose from an Icon framework" width="800" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Just about done...
&lt;/h3&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.amazonaws.com%2Fuploads%2Farticles%2F9n9nzhwg4oe3w1qkcnmx.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.amazonaws.com%2Fuploads%2Farticles%2F9n9nzhwg4oe3w1qkcnmx.png" alt="CLI is done" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Wait, that's it?
&lt;/h2&gt;

&lt;p&gt;Okay there is one other thing, you have to install your dependencies and start the dev server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-app
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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.amazonaws.com%2Fuploads%2Farticles%2Fu1lbozwxg3x6bcfnncet.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.amazonaws.com%2Fuploads%2Farticles%2Fu1lbozwxg3x6bcfnncet.png" alt="The end result" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with src/App.tsx or src/App.js, and begin your journey!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;That's it. You now have a production-ready React + Bulma application powered by Vite, with Javascript/TypeScript support, icon libraries, and the full power of &lt;a href="https://bestax.io" rel="noopener noreferrer"&gt;@allxsmith/bestax-bulma&lt;/a&gt; at your fingertips.&lt;/p&gt;

&lt;p&gt;Or, if you want even less interaction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create bestax@latest my-app &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-y&lt;/code&gt; flag uses all the defaults and gets you up and running in literal seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want your AI agent to do it for you?&lt;/strong&gt; Just tell Claude, ChatGPT, or your favorite coding assistant:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Use create-bestax to scaffold a new React + Bulma project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;And watch it happen.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  NPM
&lt;/h2&gt;

&lt;p&gt;Checkout package on NPM [&lt;a href="https://www.npmjs.com/package/create-bestax" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/create-bestax&lt;/a&gt;]&lt;/p&gt;




&lt;h2&gt;
  
  
  That was quick!
&lt;/h2&gt;

&lt;p&gt;👤 Follow me &lt;a href="https://github.com/allxsmith" rel="noopener noreferrer"&gt;@allxsmith&lt;/a&gt; for updates!&lt;/p&gt;

&lt;p&gt;⭐ Feel free to star the &lt;a href="https://github.com/allxsmith/bestax" rel="noopener noreferrer"&gt;repository&lt;/a&gt; if you find it helpful!&lt;/p&gt;

&lt;p&gt;Have questions or feedback? &lt;a href="https://github.com/allxsmith/bestax/issues" rel="noopener noreferrer"&gt;Create an issue&lt;/a&gt; or &lt;a href="https://github.com/allxsmith/bestax/discussions" rel="noopener noreferrer"&gt;start a discussion&lt;/a&gt; on GitHub for new ideas!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://bestax.io/blog/2025/11/12/installing-bulma-react-super-fast" rel="noopener noreferrer"&gt;bestax.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>bulma</category>
      <category>vite</category>
      <category>cli</category>
    </item>
    <item>
      <title>Meet bestax-bulma: Modern React Components for Bulma CSS v1</title>
      <dc:creator>Alex Smith</dc:creator>
      <pubDate>Sun, 09 Nov 2025 00:48:00 +0000</pubDate>
      <link>https://dev.to/allxsmith/meet-bestax-bulma-modern-react-components-for-bulma-css-v1-4bf2</link>
      <guid>https://dev.to/allxsmith/meet-bestax-bulma-modern-react-components-for-bulma-css-v1-4bf2</guid>
      <description>&lt;p&gt;Hey React developers! 👋 Are you looking for a modern, actively maintained component library for Bulma CSS? Let me introduce you to &lt;strong&gt;bestax-bulma&lt;/strong&gt; (pronounced "bee-stacks"), a TypeScript-first React component library that brings the full power of Bulma v1 to your React applications.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opensource! Free as in beer🍺&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Another Bulma React Library?
&lt;/h2&gt;

&lt;p&gt;Great question! While there are other Bulma React libraries out there, many haven't been updated for Bulma v1 or are no longer actively maintained. bestax-bulma fills this gap with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎯 &lt;strong&gt;Full Bulma v1 Support&lt;/strong&gt;: Built specifically for the latest Bulma version&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;99% Test Coverage&lt;/strong&gt;: Every component thoroughly tested with React Testing Library&lt;/li&gt;
&lt;li&gt;🔷 &lt;strong&gt;TypeScript-First&lt;/strong&gt;: Complete type safety with comprehensive TypeScript definitions&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Modern Build&lt;/strong&gt;: Tree-shakeable ESM and CJS builds for optimal bundle sizes&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Rich Documentation&lt;/strong&gt;: Comprehensive &lt;a href="https://bestax.io/docs/api" rel="noopener noreferrer"&gt;API docs&lt;/a&gt; and &lt;a href="https://bestax.io/docs/guides/getting-started" rel="noopener noreferrer"&gt;getting started guides&lt;/a&gt; available at bestax.io&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Active Development&lt;/strong&gt;: Regular updates and responsive maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start in 2 Minutes
&lt;/h2&gt;

&lt;p&gt;Getting started is as simple as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @allxsmith/bestax-bulma bulma
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then import and use components:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fy8x1i4acu5na6vkl3945.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.amazonaws.com%2Fuploads%2Farticles%2Fy8x1i4acu5na6vkl3945.png" alt="Welcome bestax-bulma example" width="800" height="250"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Hero&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@allxsmith/bestax-bulma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bulma/css/bulma.min.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Hero&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Hero&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Welcome to bestax-bulma!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Modern React components for Bulma CSS v1&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Get Started&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Hero&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Hero&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;🚀 &lt;strong&gt;&lt;a href="https://stackblitz.com/github/allxsmith/bestax-stackblitz-welcome-to-bestax" rel="noopener noreferrer"&gt;Try this live on StackBlitz →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Showcasing Bulma v1's New Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🦴 Skeleton Loading States
&lt;/h3&gt;

&lt;p&gt;Bulma v1 introduced the Skeleton component for beautiful loading states.&lt;/p&gt;

&lt;p&gt;First you will see a pulsing skeleton:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fhchv4pbc4igzdesidppj.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.amazonaws.com%2Fuploads%2Farticles%2Fhchv4pbc4igzdesidppj.png" alt="Loading Skeleton" width="800" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then the skeleton is replaced with the content:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fwvs6blvxda0ngq6smpyn.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.amazonaws.com%2Fuploads%2Farticles%2Fwvs6blvxda0ngq6smpyn.png" alt="Loaded, skeleton replaced with content" width="800" height="71"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@allxsmith/bestax-bulma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;LoadingCard&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setIsLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;clearInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;timer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt; &lt;span class="na"&gt;skeleton&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isLoading&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Your content here!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;🚀 &lt;strong&gt;&lt;a href="https://stackblitz.com/github/allxsmith/bestax-stackblitz-welcome-to-bestax-skeleton" rel="noopener noreferrer"&gt;Try this live on StackBlitz →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 CSS Grid Support
&lt;/h3&gt;

&lt;p&gt;Take advantage of Bulma's new CSS Grid components for modern layouts:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fcx0rbuuqoqi1h9lkwkh4.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.amazonaws.com%2Fuploads%2Farticles%2Fcx0rbuuqoqi1h9lkwkh4.png" alt="Bestax-bulma Grid example" width="800" height="154"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Grid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Card&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@allxsmith/bestax-bulma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Dashboard&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Grid&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 1&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 2&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 3&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 4&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 5&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 6&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 7&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 8&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Cell 9&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Cell&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Grid&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;🚀 &lt;strong&gt;&lt;a href="https://stackblitz.com/github/allxsmith/bestax-stackblitz-welcome-to-bestax-grid" rel="noopener noreferrer"&gt;Try this live on StackBlitz →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌈 Dynamic HSL Theming
&lt;/h3&gt;

&lt;p&gt;Bulma v1's HSL color system enables dynamic theming:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fdq1vf4mdunxxhyv1uuw7.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.amazonaws.com%2Fuploads%2Farticles%2Fdq1vf4mdunxxhyv1uuw7.png" alt="Bestax-bulma theming example" width="800" height="38"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Theme&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@allxsmith/bestax-bulma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ThemedApp&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Theme&lt;/span&gt; &lt;span class="na"&gt;primaryH&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"280"&lt;/span&gt; &lt;span class="na"&gt;primaryS&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"100%"&lt;/span&gt; &lt;span class="na"&gt;primaryL&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"45%"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Themed Button&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Theme&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;🚀 &lt;strong&gt;&lt;a href="https://stackblitz.com/github/allxsmith/bestax-stackblitz-welcome-to-bestax-theme" rel="noopener noreferrer"&gt;Try this live on StackBlitz →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Developers Love bestax-bulma
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Compound Components Pattern
&lt;/h3&gt;

&lt;p&gt;We use the compound components pattern for intuitive, readable code:&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2F9vy8mzsodlrhjgdf5sjg.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.amazonaws.com%2Fuploads%2Farticles%2F9vy8mzsodlrhjgdf5sjg.png" alt="Bestax-bulma compound components" width="800" height="333"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@allxsmith/bestax-bulma&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ModalExample&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;showModal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setShowModal&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;closeModal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setShowModal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setShowModal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        Open Modal
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt; &lt;span class="na"&gt;isActive&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;showModal&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Background&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;closeModal&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Intuitive API&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Close&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;closeModal&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            Components that make sense!
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Foot&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;closeModal&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
              Close
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Foot&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Card&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Modal&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&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;🚀 &lt;strong&gt;&lt;a href="https://stackblitz.com/github/allxsmith/bestax-stackblitz-welcome-to-bestax-compound-components" rel="noopener noreferrer"&gt;Try this live on StackBlitz →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. TypeScript Autocomplete Heaven
&lt;/h3&gt;

&lt;p&gt;Every prop is fully typed, giving you incredible IDE support:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Full autocomplete for colors, sizes, and more&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;
  &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"primary"&lt;/span&gt;  &lt;span class="c1"&gt;// 'primary' | 'link' | 'info' | 'success' | ...&lt;/span&gt;
  &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"large"&lt;/span&gt;     &lt;span class="c1"&gt;// 'small' | 'normal' | 'medium' | 'large'&lt;/span&gt;
  &lt;span class="na"&gt;isLoading&lt;/span&gt;
  &lt;span class="na"&gt;isOutlined&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Zero Configuration
&lt;/h3&gt;

&lt;p&gt;Unlike many CSS-in-JS solutions, bestax-bulma works with standard Bulma CSS. No build configuration, no CSS extraction, just import and go!&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Live
&lt;/h2&gt;

&lt;p&gt;Want to see bestax-bulma in action? Check out &lt;a href="https://bestax.io" rel="noopener noreferrer"&gt;bestax.io&lt;/a&gt; for comprehensive examples and interactive documentation. Storybook is also available for browsing individual component variations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison with Alternatives
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;bestax-bulma&lt;/th&gt;
&lt;th&gt;react-bulma-components&lt;/th&gt;
&lt;th&gt;rbx&lt;/th&gt;
&lt;th&gt;bulma-react&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bulma v1 Support&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;✅ Built-in&lt;/td&gt;
&lt;td&gt;⚠️ Separate&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Coverage&lt;/td&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;~70%&lt;/td&gt;
&lt;td&gt;~100%&lt;/td&gt;
&lt;td&gt;Unknown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active Maintenance&lt;/td&gt;
&lt;td&gt;✅ 2025&lt;/td&gt;
&lt;td&gt;⚠️ 2021&lt;/td&gt;
&lt;td&gt;❌ 2019&lt;/td&gt;
&lt;td&gt;❌ 2015&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tree Shaking&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compound Components&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comprehensive Docs&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;⚠️ Partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real CSS Grids&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configurable&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Theme Support&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quick Start CLI&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Get Started Today
&lt;/h2&gt;

&lt;p&gt;Ready to modernize your Bulma React experience?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;npm install @allxsmith/bestax-bulma bulma&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explore&lt;/strong&gt;: Check our &lt;a href="https://bestax.io" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build&lt;/strong&gt;: Start creating beautiful UIs with modern React patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribute&lt;/strong&gt;: Join us on &lt;a href="https://github.com/allxsmith/bestax" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This is just the beginning! In the next parts of this series, we'll dive deep into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Part 2: Building Beautiful UIs with Bestax Components&lt;/li&gt;
&lt;li&gt;Part 3: Forms, Data Display, and Advanced Patterns&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;👤 Follow me &lt;a href="https://github.com/allxsmith" rel="noopener noreferrer"&gt;@allxsmith&lt;/a&gt; for updates!&lt;/p&gt;

&lt;p&gt;⭐ Feel free to star the &lt;a href="https://github.com/allxsmith/bestax" rel="noopener noreferrer"&gt;repository&lt;/a&gt; if you find it helpful!&lt;/p&gt;

&lt;p&gt;Have questions or feedback? &lt;a href="https://github.com/allxsmith/bestax/issues" rel="noopener noreferrer"&gt;Create an issue&lt;/a&gt; or &lt;a href="https://github.com/allxsmith/bestax/discussions" rel="noopener noreferrer"&gt;start a discussion&lt;/a&gt; on GitHub for new ideas!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://bestax.io/blog/2025/09/24/meet-bestax-bulma" rel="noopener noreferrer"&gt;bestax.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>bulma</category>
    </item>
  </channel>
</rss>
