<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Devlog | Tom Grusz | grusz.dev]]></title><description><![CDATA[A personal blog by me, Tom Grusz, a frontend architect, software engineer at Mastercard. Dev updates and tips about frontend, design, 3D, tech writing, and more.
All views are my own. No AI slop.]]></description><link>https://blog.grusz.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 09:51:20 GMT</lastBuildDate><atom:link href="https://blog.grusz.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I tried 6 next-gen browsers - here's what I found]]></title><description><![CDATA[As a frontend architect and a software engineer, my daily work domain remains partly in the browser. That’s why I am always on the lookout for fresh browsers to try out and see how they take into account user’s experience, what new features they impl...]]></description><link>https://blog.grusz.dev/i-tried-6-next-gen-browsers-heres-what-i-found</link><guid isPermaLink="true">https://blog.grusz.dev/i-tried-6-next-gen-browsers-heres-what-i-found</guid><category><![CDATA[Browsers]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Tom Grusz]]></dc:creator><pubDate>Wed, 05 Nov 2025 07:43:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762083871802/38d97bdc-9c26-4f22-8514-c0f817d6eb58.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a frontend architect and a software engineer, my daily work domain remains partly in the browser. That’s why I am always on the lookout for fresh browsers to try out and see how they take into account user’s experience, what new features they implement, and what’s their stance on user privacy.</p>
<p>For the past few years, new browsers started appearing, with promises of supercharged user experience, new features that change how we browse, and some with enhanced privacy improvements.</p>
<p>Over the years, there are glimpses of a new browser war forming, in aims to establish Chrome’s next-gen successor.</p>
<p>Let’s take the journey among the current next-gen browser offerings through the lenses of frontend engineer’s glasses, who spends most of their day working with browser capabilities.</p>
<h2 id="heading-arc-the-first-browser-that-won-me-over">Arc - The first browser that won me over</h2>
<p><a target="_blank" href="https://arc.net/"><strong>Arc</strong></a> was first recommended to me by a fellow dev. It felt like the browser I was looking for but never quite found. The Browser Company released this trendsetter in 2023, and among the frontend and tech community it quickly became the new shiny browser. I joined the trend in December 2023, and Arc became my default browser for more than a year. The browser focuses on user experience and brings minimal but modern design, including a now famous sidebar navigation and workspaces.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762278290865/081f0cd2-7fcf-405a-bea6-9efd706190ea.png" alt class="image--center mx-auto" /></p>
<p>Not only that, it also brings multiple usability features, including:</p>
<ul>
<li><p>auto rename tabs and downloaded files</p>
</li>
<li><p>split-view tabs</p>
</li>
<li><p>tidy tabs</p>
</li>
</ul>
<p>and a bunch more. You won’t even notice how many small features are included. This makes everything feel more organized and accessible.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762278437367/465e5927-2681-4e5c-8199-fe03e32a26fe.png" alt class="image--center mx-auto" /></p>
<p>You can also save your config, themes, bookmarks, and workspaces by creating an account - a handy feature when switching between different devices. You also get one of these nice user profiles:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762278001773/6304ccc1-583a-4271-b815-6ef313d456f5.png" alt /></p>
<h2 id="heading-dia-arcs-little-brother-powered-by-ai">Dia - Arc’s little brother powered by AI</h2>
<p><a target="_blank" href="https://www.diabrowser.com/">Dia</a>, another browser by The Browser Company, was released earlier this year as a closed beta for previous Arc members. The twist? AI-powered workflows.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762279741976/b46c4305-4c53-4371-8d5f-fa0f612450dd.png" alt class="image--center mx-auto" /></p>
<p>As someone who’s careful about using AI as part of my work stream, I doubted I’d see much use of this feature. But having known the success of Arc, I wanted to make use of the opportunity and give it a go. The migration was painless - I was able to import my spaces and extensions from Arc with just a few clicks.</p>
<p>The incentive behind integrating AI into a browser is so that you can “chat” with your tabs - get information about its content, pull in context from multiple pages, and even get suggestions for filling out info based on the website’s structure.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762279069579/6e9a877e-d75e-48ca-b497-3185f8dc7f7e.png" alt class="image--center mx-auto" /></p>
<p>Everything looked like there was a huge potential to be unlocked. I jumped on the hype train besides it missing some Arc features like sidebar (I suspect the newest version adopts it now). Over time though, I started catching myself switching between Arc and Dia, using one when I needed to focus, and the other when I wanted to play with AI.</p>
<p>I started to lose hope about AI-powered browsers… until a new kid showed up to the block.</p>
<h2 id="heading-comet-a-browser-that-browses-for-you">Comet - a browser that browses for you</h2>
<p><a target="_blank" href="https://www.perplexity.ai/comet">Comet</a>, another AI-powered browser released out of nowhere by Perplexity, one of the big guys for LLM interaction, was supposed to enhance the prompting experience by allowing the users to ask the browser to search and interact with pages directly.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762279941226/c1f17d8f-d266-4c91-b17e-502def91a58d.png" alt class="image--center mx-auto" /></p>
<p>Fortunately, I was (and still am) a heavy user of Perplexity with a Pro subscription at that time, so I got early access to limited beta only available for subscribed users. Knowing how much I had enjoyed using Perplexity for research, I HAD to look into the inviting premise of having my favorite AI available anywhere I’m searching.</p>
<p>The news had spread fast, and Comet became the talking point among next-gen browsers. Compared to the UX-focused nature of Arc and Dia, this browser was much closer to the vanilla experience of Chromium-based browsers. It had the default tab bar, bookmarks, and anything else you’re comfortable with. Plus the chat window to the right, of course!</p>
<p>“I’m already using Perplexity, so why not have it already in the browser” - I told myself, excited to experiment with what was possible with this new technology.</p>
<p>So how much did I achieve with the ability to let my AI browse for me?</p>
<p>Honestly? I didn’t really use it. It is fair to point out that I still made use of the chat window, but it wasn’t really different to doing one more click to switch my tab to perplexity.ai’s website. Besides some very unique situations, or showing it off to friends, there really isn’t much to do here.</p>
<p>Despite sacrificing the user experience Arc offered, I stayed with Comet as my default browser for a few more months, until a new browser caught my eye…</p>
<h2 id="heading-zen-the-browser-that-almost-has-it-all">Zen - the browser that almost has it all</h2>
<p>I was in the market for a new browser that would persuade me to switch from Comet’s underlying UX sacrifices. This is when I stumbled upon <a target="_blank" href="https://zen-browser.app/">Zen</a>. Zen is much like Arc, designed to be a minimal, modern, user-friendly browser.</p>
<p>The difference? It’s powered by Firefox’s Quantum browser engine, unlike the others’ Chromium engine. It’s also open-source - a core value that always excites developers of my kind.</p>
<p>If I had to describe Zen in one sentence, it would be:</p>
<p><strong><em>Zen is an open-source, Firefox-based, privacy focused counterpart to Arc.</em></strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762281564724/6115a695-1cf4-4e58-972a-9b1cc8e486ab.png" alt class="image--center mx-auto" /></p>
<p>The UI looks like Arc, the UX feels like Arc, yet it feels a bit more… zen? I quickly got hooked - always wanted to try out a browser not based on Chromium, embrace the open-source nature, and this felt like the perfect option. I don’t have to sacrifice usability that I get with Arc, and I can support a project that supports my values - open-source, privacy, and user experience.</p>
<p>Unknowingly, I had to sacrifice three things though:</p>
<ol>
<li><p>Extensions - even though this is not the Zen’s fault, it’s just underwhelming to see that Firefox is missing some of my favorite extensions that are available in Chrome. Others are just worse versions.</p>
</li>
<li><p>Config backup - unlike Arc, I was unable to sync my setup between devices as Zen does not currently allow it (maybe an opportunity for future?)</p>
</li>
<li><p>Some styles are handled differently by Firefox, and Chrome being the gold standard these days, I must default to what is rendered there <em>(some new features also take longer to adopt in Firefox)</em></p>
</li>
</ol>
<p>Ultimately, after weeks of trying to stay with Zen, some of these things were too deal-breaking to keep using it. It was honestly the saddest I felt when switching from a browser, because everything else is there. The browser is still in Beta, so I’m definitely keeping an eye out on any future updates to see if I can one day switch to Zen permanently.</p>
<h2 id="heading-atlas-openais-copy-of-other-ai-browsers">Atlas - OpenAI’s copy of other AI browsers</h2>
<p>To compete with Perplexity’s Comet and The Browser Company’s Dia browsers with AI integrations, OpenAI released their own solution - <a target="_blank" href="https://chatgpt.com/atlas/">Atlas</a>, available for everyone (as of now, all three browsers are now available to anyone).</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762282642229/b50c6e06-c04f-430b-ab9e-e34511b55c59.png" alt class="image--center mx-auto" /></p>
<p>The browser is still quite new (only a few weeks old at the point of writing this), so it’s difficult to get a long-term experience with it to properly review it. From my limited experimentation though, I’d defer to the same premises of Comet. Atlas copies most of what the other AI browsers offer, for now it’s mostly a play to secure an AI-browser audience on their own, and have their cards on the table too.</p>
<p>I am not the biggest fan of OpenAI nor ChatGPT, so I’ll cautious around the potential privacy consequences. In terms of features, the grass is as green as with Comet, and I don’t suspect OpenAI will focus on UX anytime soon.</p>
<h2 id="heading-vivaldi-an-established-browser-with-a-promising-future">Vivaldi - an established browser with a promising future</h2>
<p>Last, but not least in my journey to find the perfect browser for me is <a target="_blank" href="https://vivaldi.com/">Vivaldi</a>. This browser was developed back in 2015 by a former Opera co-founder and markets itself to primarily power users. The browser strives to be the all-in-one solution, fully customizable per every user’s needs.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1762283570368/d2ee95a7-b731-4681-af7f-2347ce139774.png" alt class="image--center mx-auto" /></p>
<p>Vivaldi offers a big amount of features, including its own email client, calendar, note-taking app, embedded translations, and much more. It also uses Proton VPN by default when you create a Vivaldi account; this also allows for syncing browser data, similarly to Arc.</p>
<p>On top of that, you can customize Vivaldi to your liking. This includes themes, shortcuts, different flows, tiles stacking, workspaces, and other interfaces.</p>
<p>For some, this can be an overwhelming amount of features. For me, I like the premise of a browser designed for power users. However, I tend to lean into minimal interfaces though. Moreover, I couldn’t find a valuable use case for most of its unique features. I also like to use my own solutions for calendar and email, so using Vivaldi would just add extra bloat that I don’t need - and frankly, don’t belong to a minimal setup.</p>
<h2 id="heading-side-by-side-comparison">Side-by-side comparison</h2>
<p>Having mentioned my experience with all six browsers, I’d like to organize my thoughts into a side-by-side comparison so you can decide what each browser offers.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td></td><td><strong>🌈 Arc</strong></td><td><strong>🌤️ Dia</strong></td><td><strong>☄️ Comet</strong></td><td><strong>🧘‍♂️ Zen</strong></td><td><strong>🌎 Atlas</strong></td><td><strong>🎶 Vivaldi</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Developer</td><td>The Browser Company</td><td>The Browser Company</td><td>Perplexity</td><td>Zen Browser team (OSS)</td><td>OpenAI</td><td>Vivaldi Technologies</td></tr>
<tr>
<td>Main features</td><td>Minimal UI, auto-rename tabs/files, split-view, tidy tabs, sidebar, workspaces</td><td>AI chat with tabs, sidebar, workspaces + other Arc features</td><td>AI chat window with web content browser-AI interaction</td><td>Minimal UI much like Arc, privacy-focused</td><td>AI chat window with web content browser-AI interaction</td><td>Built-in email, calendar, notes, VPN, multiple interface customizations</td></tr>
<tr>
<td>Browser Engine</td><td>🌐 Chromium</td><td>🌐 Chromium</td><td>🌐 Chromium</td><td>🦊 Firefox</td><td>🌐 Chromium</td><td>🌐 Chromium</td></tr>
<tr>
<td>Performance</td><td>Smooth and fast</td><td>Standard, but AI processing</td><td>Standard</td><td>Smooth, occasional Firefox quirks</td><td>Standard, but AI processing, sometimes longer loads</td><td>Robust, but heavy</td></tr>
<tr>
<td>User experience</td><td>Intuitive, feels nice</td><td>Intuitive, feels nice, rarely used AI chat features</td><td>Standard, rarely used AI chat features</td><td>Intuitive, feels nice, lacks some Chromium feats</td><td>Standard, rarely used AI chat features</td><td>Feature overload for minimalists, good for power users</td></tr>
<tr>
<td>Privacy</td><td>Commitment to privacy</td><td>Commitment to privacy</td><td>Data shared with Perplexity</td><td>Privacy-focused + OSS</td><td>Data shared with OpenAI</td><td>Privacy-focused + VPN</td></tr>
<tr>
<td>Open-source</td><td>❌</td><td>❌</td><td>❌</td><td>✅</td><td>❌</td><td>❌</td></tr>
<tr>
<td>Sync Support</td><td>✅</td><td>✅</td><td>❌</td><td>❌</td><td>❌</td><td>✅</td></tr>
<tr>
<td>Sidebar</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td><td>❌</td><td>✅</td></tr>
<tr>
<td>Split-view</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td><td>❌</td><td>✅</td></tr>
<tr>
<td>Workspaces</td><td>✅</td><td>✅</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td></tr>
<tr>
<td>Ad blocker</td><td>✅</td><td>❌</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td></tr>
<tr>
<td>AI integration</td><td>❌</td><td>✅</td><td>✅</td><td>❌</td><td>✅</td><td>❌</td></tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td><strong>Overall score</strong></td><td><strong>8/10</strong></td><td><strong>6/10</strong></td><td><strong>5/10</strong></td><td><strong>7/10</strong></td><td><strong>3/10</strong></td><td><strong>5/10</strong></td></tr>
</tbody>
</table>
</div><h2 id="heading-how-to-choose-your-browser">How to choose your browser</h2>
<p>If you’re a minimalist who appreciates user experience, I recommend using:</p>
<ul>
<li><p>Arc, if you prefer Chromium features</p>
</li>
<li><p>Zen, if you don’t mind sacrificing sync or you value Zen’s propositions</p>
</li>
</ul>
<p>If you’re a frequent AI user, who wants to explore how chatting with tabs works, I recommend using:</p>
<ul>
<li><p>Dia, if you also appreciate minimal design and UX features</p>
</li>
<li><p>Comet or Atlas, based on your LLM subscription or preference</p>
</li>
</ul>
<p>If you’re a power user, who wants an established browser that will deliver robust features and customization, you won’t regret trying out Vivaldi.</p>
<h2 id="heading-what-im-currently-using">What I’m currently using</h2>
<p>I recently switched back to using Arc for its minimal design and user-friendly features.</p>
<p>At the current state of AI browsers, I don’t see much value in them for my use cases, so I’ll only stay watching how they evolve over time.</p>
<p>Recently, The Browser Company (developer of Arc and Dia) was bought by Atlassian (company behind popular work tools like Jira and Confluence), and Arc’s developments were discontinued beyond just security updates to focus solely on Dia. Due to this questionable move, I will be on the lookout for upcoming browsers with similar premises and style as Arc.</p>
<p>I will also stay up to date with Zen’s development, to see if it’s worth switching to in the future.</p>
<hr />
<p>Thanks for reading!</p>
<p>I’m <a target="_blank" href="https://grusz.dev">Tom</a>, a frontend architect &amp; software engineer based in Prague, with years of experience from companies like Mastercard and Make. I write dev updates and tips about frontend, design, 3D, tech writing, &amp; more.</p>
<p>I believe the bridge between designers and developers is crucial. I work to strengthen it, jumping into both worlds to create better products by applying 3D, visual art, and code - a skill not many embrace yet. 🎨</p>
<p>You can find more about me at 🔗 <a target="_blank" href="http://grusz.dev">grusz.dev</a> or find my projects on ✨ <a target="_blank" href="https://github.com/tomasgrusz">GitHub</a>.</p>
]]></content:encoded></item><item><title><![CDATA[5 Sass features now available in CSS (2025)]]></title><description><![CDATA[Sass is one of the most popular CSS extension language and pre-processors, with over 18 million downloads on npm. Sass has been actively developed since 2006 and boasts countless quality of life features, some of which have become an integral part of...]]></description><link>https://blog.grusz.dev/5-sass-features-now-available-in-css-2025</link><guid isPermaLink="true">https://blog.grusz.dev/5-sass-features-now-available-in-css-2025</guid><category><![CDATA[CSS]]></category><category><![CDATA[Sass]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Tom Grusz]]></dc:creator><pubDate>Thu, 09 Oct 2025 07:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759993117511/f2ab8219-a131-4400-87f8-fc6a92a40c1e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sass is one of the most popular CSS extension language and pre-processors, with over 18 million downloads on <a target="_blank" href="https://www.npmjs.com/package/sass">npm</a>. Sass has been actively developed since 2006 and boasts countless quality of life features, some of which have become an integral part of my own styling development.</p>
<p>Some of these features have become so popular that the developers and researchers behind vanilla CSS have taken notice and decided to adopt them in a standardized way, to be used by any frontend devs. Here’s a list of 5 Sass features that you can use in vanilla CSS in 2025:</p>
<h2 id="heading-1-nesting">1. Nesting</h2>
<p>One of the best features of Sass has been the ability to nest selectors. This resulted in less selector duplicity with the outcome being more readable and manageable code.</p>
<p>Without nesting:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.profile-card</span> {
    <span class="hljs-comment">/* styles for profile card */</span>
}

<span class="hljs-selector-class">.profile-card</span> <span class="hljs-selector-class">.name</span> {
    <span class="hljs-comment">/* styles for profile name */</span>
}

<span class="hljs-selector-class">.profile-card</span> <span class="hljs-selector-class">.avatar</span> {
    <span class="hljs-comment">/* styles for profile avatar */</span>
}
</code></pre>
<p>With nesting:</p>
<pre><code class="lang-scss"><span class="hljs-selector-class">.profile-card</span> {
    <span class="hljs-comment">/* styles for profile card */</span>
    <span class="hljs-selector-class">.name</span> {
        <span class="hljs-comment">/* styles for profile name */</span>
    }
    <span class="hljs-selector-class">.avatar</span> {
        <span class="hljs-comment">/* styles for profile avatar */</span>
    }
}
</code></pre>
<p>The nesting feature was previously only available only in Sass. However, as of December 2023, we can nest selectors in vanilla CSS too. The feature is now <a target="_blank" href="https://caniuse.com/?search=nesting">widely supported</a> across all modern browsers.</p>
<p>That also includes the <code>&amp;</code> selector for parent attributes:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.profile-card</span> {
    <span class="hljs-comment">/* styles for profile card */</span>
    &amp;.friend {
        <span class="hljs-comment">/* styles for a friend's profile card */</span>
    }
}
</code></pre>
<h2 id="heading-2-custom-variables">2. Custom variables</h2>
<p>Custom variables allow us to assign a value to a name and refer to the name elsewhere, without needing to specify the value again (similarly to any programming language).</p>
<p>Variables have actually been in CSS for a long time now, so it’s surprising to see them being one of the top reasons developers mention for why they switched to Sass.</p>
<p>This is how variables work in Sass:</p>
<pre><code class="lang-scss"><span class="hljs-variable">$base-color</span>: <span class="hljs-number">#c6538c</span>;
<span class="hljs-variable">$border-dark</span>: rgba(<span class="hljs-variable">$base-color</span>, <span class="hljs-number">0.88</span>);

<span class="hljs-selector-class">.alert</span> {
  <span class="hljs-attribute">border</span>: <span class="hljs-number">1px</span> solid <span class="hljs-variable">$border-dark</span>;
}
</code></pre>
<p>And this is how we can use variables in vanilla CSS:</p>
<pre><code class="lang-css"><span class="hljs-selector-pseudo">:root</span> {
  <span class="hljs-attribute">--base-color</span>: <span class="hljs-number">#c6538c</span>;
  <span class="hljs-attribute">--border-dark</span>: <span class="hljs-built_in">rgba</span>(var(--base-color), <span class="hljs-number">0.88</span>);
}

<span class="hljs-selector-class">.alert</span> {
  <span class="hljs-attribute">border</span>: <span class="hljs-number">1px</span> solid <span class="hljs-built_in">var</span>(--border-dark);
}
</code></pre>
<p>This <a target="_blank" href="https://caniuse.com/css-variables">feature</a> works across the latest devices and major browser versions since 2017.</p>
<h2 id="heading-3-mixinslayers">3. Mixins/Layers</h2>
<p>Mixins, defined in Sass, allow you to define styles that can be re-used throughout the stylesheets. This is a great and very popular Sass feature, as it allows us to reduce duplicate code or long selectors. Mixins are defined using the <code>@mixin</code> at-rule.</p>
<pre><code class="lang-scss"><span class="hljs-keyword">@mixin</span> card {
    <span class="hljs-attribute">padding</span>: <span class="hljs-number">1rem</span>;
    <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">20px</span>;
    <span class="hljs-attribute">border</span>: <span class="hljs-number">1px</span> solid rgba(<span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0.3</span>);
    <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">8px</span> <span class="hljs-number">32px</span> rgba(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0.1</span>);
}

<span class="hljs-selector-class">.profile-card</span> {
    <span class="hljs-keyword">@include</span> card; <span class="hljs-comment">// all styles from card applied here</span>
    <span class="hljs-attribute">background</span>: rgba(<span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0.15</span>);
    <span class="hljs-comment">/* other styles */</span>
}
</code></pre>
<p>Now unfortunately, we will have to wait for mixins support in vanilla CSS. As of October 2025, the idea is currently in the draft stage (see <a target="_blank" href="https://www.w3.org/TR/css-mixins-1/">W3C’s draft</a>), however it is great to see that it is in the works. Let’s stay tuned on the development updates, and hopefully, we’ll see major browsers adopting the new feature later in 2026.</p>
<h2 id="heading-4-color-mixing">4. Color-mixing</h2>
<p>Despite the great suite that Sass offers, there’s also a bunch of built-in modules, which contain useful functions, and can be loaded with the <code>@use</code> rule. One of the modules is <code>sass:color</code>, which allows for manipulatin, adjusting, and mixing colors.</p>
<pre><code class="lang-scss"><span class="hljs-keyword">@use</span> <span class="hljs-string">'sass:color'</span>;
<span class="hljs-comment">/* Increases or decreases one or more channels of $color by fixed amounts */</span>
<span class="hljs-attribute">color</span><span class="hljs-selector-class">.adjust</span>(<span class="hljs-variable">$color</span>,
  <span class="hljs-variable">$red</span>: null, <span class="hljs-variable">$green</span>: null, <span class="hljs-variable">$blue</span>: null,
  <span class="hljs-variable">$hue</span>: null, <span class="hljs-variable">$saturation</span>: null, <span class="hljs-variable">$lightness</span>: null,
  <span class="hljs-variable">$whiteness</span>: null, <span class="hljs-variable">$blackness</span>: null,
  <span class="hljs-variable">$x</span>: null, <span class="hljs-variable">$y</span>: null, <span class="hljs-variable">$z</span>: null,
  <span class="hljs-variable">$chroma</span>: null,
  <span class="hljs-variable">$alpha</span>: null,
  <span class="hljs-variable">$space</span>: null)

/* Mix two colors together */
color.mix(<span class="hljs-number">#036</span>, <span class="hljs-number">#d2e1dd</span>, <span class="hljs-variable">$method</span>: rgb); <span class="hljs-comment">// #698aa2</span>
</code></pre>
<p>Fortunately, since September 2024, the “relative colors” feature in vanilla CSS has been <a target="_blank" href="https://caniuse.com/css-relative-colors">baselined</a> across major browsers. The feature works by allowing a color to be defined relative to another color using the <code>from</code> keyword and optionally <code>calc()</code> for any of the color values.</p>
<pre><code class="lang-scss"><span class="hljs-comment">/* color is darkened by cutting its lightness in half */</span>
--<span class="hljs-attribute">color</span>: green;
--darker-accent: lch(from var(--color) calc(l / <span class="hljs-number">2</span>) c h);

<span class="hljs-comment">/* opacity is set to 80% to make it slightly transparent */</span>
<span class="hljs-selector-class">.overlay</span> {
  <span class="hljs-attribute">background</span>:  rgb(from var(--color) r g b / <span class="hljs-number">80%</span>);
}

<span class="hljs-comment">/* grayscaling a color */</span>
--blue-into-gray: rgb(from var(--color)
                    calc(r * .<span class="hljs-number">3</span> + g * .<span class="hljs-number">59</span> + b * .<span class="hljs-number">11</span>)
                    calc(r * .<span class="hljs-number">3</span> + g * .<span class="hljs-number">59</span> + b * .<span class="hljs-number">11</span>)
                    calc(r * .<span class="hljs-number">3</span> + g * .<span class="hljs-number">59</span> + b * .<span class="hljs-number">11</span>));
</code></pre>
<h2 id="heading-5-math-functions">5. Math functions</h2>
<p>We as frontend devs use math functions in styles to calculate sizes, whitespace, and even animations and colors. Sass provides its own built-in module <code>sass:math</code>, which offers a variety of math functions and constants, such as <code>abs()</code> for getting the absolute value, <code>round()</code> for rounding numbers, or <code>$pi</code> for getting the Pi number.</p>
<pre><code class="lang-scss"><span class="hljs-keyword">@use</span> <span class="hljs-string">'sass:math'</span>;

<span class="hljs-selector-class">.circle</span> {
    <span class="hljs-attribute">width</span>: (math.<span class="hljs-variable">$pi</span>)px; <span class="hljs-comment">// 3.1415926536</span>
    <span class="hljs-attribute">height</span>: (math.<span class="hljs-variable">$pi</span>)px; <span class="hljs-comment">// 3.1415926536</span>
    <span class="hljs-attribute">margin</span>: math.round(<span class="hljs-number">4.2</span>)px + <span class="hljs-number">3px</span>; <span class="hljs-comment">// 4</span>
}
</code></pre>
<p>Since 2015, CSS supports the <code>calc()</code> function which allows numerical operations, like additions, division, etc., which has been the standard for a long time.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.article-content</span> {
    <span class="hljs-attribute">width</span>: <span class="hljs-number">100%</span>;
    <span class="hljs-attribute">height</span>: <span class="hljs-number">42rem</span>;
    <span class="hljs-attribute">margin</span>: <span class="hljs-built_in">calc</span>(<span class="hljs-number">42</span> * <span class="hljs-number">0.1</span>)<span class="hljs-built_in">rem</span>;
    <span class="hljs-attribute">border</span>: <span class="hljs-built_in">calc</span>(<span class="hljs-number">0.25rem</span> + <span class="hljs-number">1px</span>);
}
</code></pre>
<p>Even though the <code>sass:math</code> module offers undeniably more capabilities, the developments in math calculations for vanilla CSS have been progressing. With baseline in May 2024, there are three newly available math functions - <code>round()</code> for rounding number, and <code>mod()</code> and <code>rem()</code> for working with the remainder of two number divisions.</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.avatar</span> {
    <span class="hljs-attribute">--size</span>: <span class="hljs-built_in">calc</span>(<span class="hljs-number">2.4rem</span> + <span class="hljs-number">2px</span>);
    <span class="hljs-attribute">width</span>: <span class="hljs-built_in">round</span>(down, var(--size)); <span class="hljs-comment">/* rounding down */</span>
    <span class="hljs-attribute">height</span>: <span class="hljs-built_in">round</span>(up, var(--size)); <span class="hljs-comment">/* rounding up */</span>
    <span class="hljs-attribute">border</span>: <span class="hljs-built_in">rem</span>(--size, <span class="hljs-number">2.4px</span>) solid white;
}
</code></pre>
<h2 id="heading-summary">Summary</h2>
<p>It is great to see that popular third-party features raise demand for standardization in vanilla CSS. I am looking forward to more features being adapted from popular CSS pre-processors as time goes on. Even though we see more styling libraries every year, it is important to continue developments at the default layer of CSS. Therefore, I am excited to see what innovations 2026 will bring forward in terms of styling.</p>
<hr />
<p>Thanks for reading!</p>
<p>I’m <a target="_blank" href="https://grusz.dev">Tom</a>, a frontend architect &amp; software engineer based in Prague, with years of experience from companies like Mastercard and Make. I write dev updates and tips about frontend, design, 3D, tech writing, &amp; more.</p>
<p>I believe the bridge between designers and developers is crucial. I work to strengthen it, jumping into both worlds to create better products by applying 3D, visual art, and code - a skill not many embrace yet. 🎨</p>
<p>You can find more about me at 🔗 <a target="_blank" href="http://grusz.dev">grusz.dev</a> or find my projects on ✨ <a target="_blank" href="https://github.com/tomasgrusz">GitHub</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Arc vs. Dia: A frontend dev’s take on two browsers]]></title><description><![CDATA[As someone who spends most of my day in a browser, I’m always on the lookout for tools that make my workflow smoother, neater, and if I’m honest, a bit more enjoyable. That’s how I ended up deep in Arc and more recently, Dia. Both are products of The...]]></description><link>https://blog.grusz.dev/arc-vs-dia-a-frontend-devs-take-on-two-browsers</link><guid isPermaLink="true">https://blog.grusz.dev/arc-vs-dia-a-frontend-devs-take-on-two-browsers</guid><category><![CDATA[Browsers]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[UX]]></category><dc:creator><![CDATA[Tom Grusz]]></dc:creator><pubDate>Fri, 11 Jul 2025 22:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759994943583/2f64440f-6f37-4ffa-a117-c93244a21801.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As someone who spends most of my day in a browser, I’m always on the lookout for tools that make my workflow smoother, neater, and if I’m honest, a bit more enjoyable. That’s how I ended up deep in <strong>Arc</strong> and more recently, <strong>Dia</strong>. Both are products of <a target="_blank" href="https://thebrowser.company/">The Browser Company</a>, but they approach the web in noticeably different ways. Here’s my experience comparing the two.</p>
<h2 id="heading-arc-the-ux-first-browser-that-won-me-over">Arc: The UX-First Browser that won me over</h2>
<p><a target="_blank" href="https://arc.net/">Arc</a> was first recommended to me by a fellow developer, and it immediately felt like <strong>the browser I’d always wanted but never quite found</strong>. I’m a sucker for clean interfaces, and as both a frontend developer and a designer, I notice the details - beautiful UI, intuitive flows, and features that actually solve daily annoyances.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a07fyvv0mmslhit3kcwv.png" alt="View of the Arc browser" /></p>
<p>Everything just felt more organized. I loved being able to rename and auto-sort tabs, merge tabs into one view, rename downloads <em>(a small but surprisingly satisfying feature)</em>, and take screenshots of tabs right from the browser. <a target="_blank" href="http://Localhost">Localhost</a> <strong>testing tools are built in</strong>, which is a huge plus for anyone working in web development.</p>
<p>The sidebar is a game-changer. Moving away from the traditional top bar made everything feel more organized and accessible. I liked it so much that I started nudging colleagues to try it.</p>
<p>Since December 2023, Arc has been my browser of choice.</p>
<h2 id="heading-stumbling-into-dia">Stumbling into Dia</h2>
<p>When I heard The Browser Company had a new browser in the works, my curiosity was piqued. Thanks to my Arc usage, I got immediate access to <a target="_blank" href="https://www.diabrowser.com/">Dia</a>’s beta. The migration was painless; I was able to import my spaces and extensions with a few clicks.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0v47vhh36u8bjmsrqh14.png" alt="View of the Dia browser" /></p>
<p>Dia’s headline feature is its AI integration. I’ll admit, I’m someone who tries to limit my reliance on AI, but the way Dia weaves it into the browser is promising. You can chat with your tabs, pull in context from different pages, and even get <strong>writing or coding suggestions</strong> right where you’re working. There’s a lot of potential here, especially for anyone juggling research, writing, or code across multiple tabs.</p>
<p>However, there are some drawbacks. The biggest for me is the <strong>return to a topbar layout</strong> instead of Arc’s sidebar. It’s not a dealbreaker, but after getting used to the sidebar, it feels like a step back in terms of organization and flow. I’m also not sure how much I’ll actually use the AI features, or whether the regular, non-AI browsing experience will feel as smooth and user-friendly as I want.</p>
<h2 id="heading-which-browser-would-i-recommend">Which browser would I recommend?</h2>
<p>If you’re a developer or someone who loves a tidy, customizable workspace, Arc still feels like the more mature, polished option. Especially with its focus on sorting, spaces, and UI details. For writers, students, or anyone curious about integrating AI directly into their browsing flow, Dia is definitely worth a look. The seamless migration between the two makes it easy to try both.</p>
<p>Honestly, I’m still in the thick of testing Dia. I haven’t picked a side yet. There’s a lot I like, and a few things I’m not sure about. I want to give it a few more weeks - see how the AI holds up, whether I adapt to the topbar, and if it actually changes my day-to-day productivity.</p>
<p>For now, <strong>I’m keeping both browsers in rotation</strong>. Either way, I’ll be keeping a close eye on how both evolve.</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1dj7q9monrfvapa2utc.png" alt="Dia download screen view" /></p>
<h2 id="heading-how-to-get-access-to-arc-and-dia">How to get access to Arc and Dia</h2>
<p>If you’re curious to try out Arc or Dia for yourself, here’s how you can jump in:</p>
<ul>
<li><p>Arc is <strong>available by invite</strong>, but you can skip the waitlist using my <a target="_blank" href="https://arc.net/gift/8af9fdcf"><strong>signup link ↗</strong></a>.</p>
</li>
<li><p>Dia is also <strong>invite-only</strong> for now, but you can get instant access with this <a target="_blank" href="https://diabrowser.com/invite/U18PSC"><strong>signup link ↗</strong></a>.</p>
</li>
</ul>
<p>Both browsers make it easy to migrate from your current setup, so you can experiment without losing your bookmarks, tabs, or extensions. Give them a spin and see which one fits your workflow best!</p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ycjh5oyvy8u020seqb53.png" alt="Arc download screen view" /></p>
<hr />
<p>Thanks for reading!</p>
<p>I’m <a target="_blank" href="https://grusz.dev">Tom</a>, a frontend architect &amp; software engineer based in Prague, with years of experience from companies like Mastercard and Make. I write dev updates and tips about frontend, design, 3D, tech writing, &amp; more.</p>
<p>I believe the bridge between designers and developers is crucial. I work to strengthen it, jumping into both worlds to create better products by applying 3D, visual art, and code - a skill not many embrace yet. 🎨</p>
<p>You can find more about me at 🔗 <a target="_blank" href="http://grusz.dev">grusz.dev</a> or find my projects on ✨ <a target="_blank" href="https://github.com/tomasgrusz">GitHub</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Apple’s Liquid Glass trend (with CSS code example)]]></title><description><![CDATA[What Is Apple’s Liquid Glass? Key Features and Design Philosophy
Apple's introduction of Liquid Glass at WWDC 2025 marks a shift in their interface design. This translucent, adaptive design language now unifies iOS 26, iPadOS 26, and macOS Tahoe 26 i...]]></description><link>https://blog.grusz.dev/apples-liquid-glass-glassmorphism-is-shaping-ui-design-in-2025-with-css-code-examples</link><guid isPermaLink="true">https://blog.grusz.dev/apples-liquid-glass-glassmorphism-is-shaping-ui-design-in-2025-with-css-code-examples</guid><category><![CDATA[Apple]]></category><category><![CDATA[glassmorphism]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[UI]]></category><dc:creator><![CDATA[Tom Grusz]]></dc:creator><pubDate>Wed, 11 Jun 2025 08:51:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759995450713/82b24673-9add-4885-8d0f-affca6f31dd7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-apples-liquid-glass-key-features-and-design-philosophy">What Is Apple’s Liquid Glass? Key Features and Design Philosophy</h2>
<p>Apple's introduction of <strong>Liquid Glass</strong> at WWDC 2025 marks a shift in their interface design. This translucent, adaptive design language now unifies iOS 26, iPadOS 26, and macOS Tahoe 26 in aims to create a cohesive experience across Apple's ecosystem. While it might be groundbreaking for Apple's native apps, for us, web developers, it's a recognition of the <strong>glassmorphism</strong> trend that's been evolving since 2020.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0_DjDdfqtUE&amp;pp=ygUHd3dkYyAyNQ%3D%3D">https://www.youtube.com/watch?v=0_DjDdfqtUE&amp;pp=ygUHd3dkYyAyNQ%3D%3D</a></div>
<p> </p>
<p>At its core, Liquid Glass combines:</p>
<ul>
<li><p><strong>Dynamic material properties</strong> that adjust opacity/color based on content</p>
</li>
<li><p><strong>Real-time rendering</strong> creating specular highlights on UI elements</p>
</li>
<li><p><strong>Context-aware transformations</strong> for navigation controls and widgets</p>
</li>
</ul>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ki7z2cagk8s8ib4wttv.webp" alt="Apple's Liquid Glass design unifies iOS 26, iPadOS 26, and macOS Tahoe 26" /></p>
<p>What Apple's VP of Human Interface Design, Alan Dye, emphasizes:</p>
<blockquote>
<p>"It's not just visual polish - we're redefining how digital surfaces interact with light and user intent"</p>
</blockquote>
<h2 id="heading-user-testing-results-how-people-react-to-apples-liquid-glass-ui">User Testing Results: How People React to Apple’s Liquid Glass UI</h2>
<p>The initial reactions show both excitement, but also concerns. Beta test users report issues with menu legibility, while some struggle navigating due to its <em>"distracting glossy nature"</em>.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://x.com/XorDev/status/1932429551256101328?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1932429551256101328%7Ctwgr%5E52f08878da2cb50532a5817c3baa8e1c7213507d%7Ctwcon%5Es1_c10&amp;ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Furl%3Dhttps%3A%2F%2Ftwitter.com%2FXorDev%2Fstatus%2F1932429551256101328">https://x.com/XorDev/status/1932429551256101328?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1932429551256101328%7Ctwgr%5E52f08878da2cb50532a5817c3baa8e1c7213507d%7Ctwcon%5Es1_c10&amp;ref_url=https%3A%2F%2Fpublish.twitter.com%2F%3Furl%3Dhttps%3A%2F%2Ftwitter.com%2FXorDev%2Fstatus%2F1932429551256101328</a></div>
<p> </p>
<h2 id="heading-how-to-create-glassmorphic-effects-in-css">How to Create Glassmorphic Effects in CSS</h2>
<p>You can create a glassmorphic effect in 3 easy steps.</p>
<p><strong>Step 1:</strong> Add a <code>&lt;div&gt;</code> HTML element in your document with a class <code>glass-card</code>:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"glass-card"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>Glassmorphism Card<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
</code></pre>
<p><strong>Step 2:</strong> Add a CSS style that applies glassmorphism to your card:</p>
<pre><code class="lang-css"><span class="hljs-selector-class">.glass-card</span> {
  <span class="hljs-attribute">background</span>: <span class="hljs-built_in">rgba</span>(<span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0.2</span>);
  <span class="hljs-attribute">backdrop-filter</span>: <span class="hljs-built_in">blur</span>(<span class="hljs-number">4px</span>);
  <span class="hljs-attribute">-webkit-backdrop-filter</span>: <span class="hljs-built_in">blur</span>(<span class="hljs-number">4px</span>);
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">8px</span> <span class="hljs-number">32px</span> <span class="hljs-number">0</span> <span class="hljs-built_in">rgba</span>(<span class="hljs-number">31</span>, <span class="hljs-number">38</span>, <span class="hljs-number">135</span>, <span class="hljs-number">0.35</span>);
  <span class="hljs-attribute">border-radius</span>: <span class="hljs-number">10px</span>;
  <span class="hljs-attribute">border</span>: <span class="hljs-number">1px</span> solid <span class="hljs-built_in">rgba</span>(<span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">255</span>, <span class="hljs-number">0.2</span>);

  // optional - white centered text
  <span class="hljs-attribute">color</span>: white;
  <span class="hljs-attribute">text-align</span>: center;

  // optional - card whitespace
  <span class="hljs-attribute">width</span>: <span class="hljs-number">300px</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">40px</span>;
}

// <span class="hljs-selector-tag">optional</span> <span class="hljs-selector-tag">body</span> <span class="hljs-selector-tag">styles</span> <span class="hljs-selector-tag">for</span> <span class="hljs-selector-tag">demo</span>
<span class="hljs-selector-tag">body</span> {
  <span class="hljs-attribute">margin</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">padding</span>: <span class="hljs-number">0</span>;
  <span class="hljs-attribute">font-family</span>: <span class="hljs-string">"Segoe UI"</span>, sans-serif;
  <span class="hljs-attribute">height</span>: <span class="hljs-number">100vh</span>;
  <span class="hljs-attribute">display</span>: flex;
  <span class="hljs-attribute">justify-content</span>: center;
  <span class="hljs-attribute">align-items</span>: center;
  <span class="hljs-attribute">background</span>: black;
  <span class="hljs-attribute">position</span>: relative;
}
</code></pre>
<p><strong>Step 3:</strong> You can customize the glass effect by modifying these values:</p>
<ul>
<li><p><strong>Transparency</strong> - modify the last value in <code>background</code> between 0 and 1 to increase/decrease its transparency</p>
</li>
<li><p><strong>Backdrop Blur</strong> - increase/decrease the pixel <code>px</code> values in <code>backdrop-filter</code> and <code>-webkit-backdrop-filter</code> to change how text and elements behind the glass are blurred</p>
</li>
<li><p><strong>Glass Tint</strong> - modify the first three numeric values in <code>background</code> to change the color tint of the glass in <a target="_blank" href="https://www.w3schools.com/colors/colors_rgb.asp">RGB format</a></p>
</li>
</ul>
<p><strong>Congrats! Your card should now look like similar to this:</strong></p>
<p><img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/baz17jxwnv7l7npfiyho.png" alt="Glassmorphism card result" /></p>
<p>Now you can play around with more glassmorphic elements and see how they interact.</p>
<h2 id="heading-accessibility-and-performance-tips-for-glassmorphic-web-design">Accessibility and Performance Tips for Glassmorphic Web Design</h2>
<p>While glassmorphism offers a great visual effect, it's important to keep in mind its accessibility and performance challenges. Here are a few tips to ensure a glassmorphic design is beautiful and usable:</p>
<p><strong>1. Prioritize Contrast and Readability</strong></p>
<ul>
<li><p>Always maintain high contrast between text and glassmorphic backgrounds. Use neutral text colors (white, black, or gray) and test your color combinations with tools like the WebAIM Contrast Checker to meet or exceed <a target="_blank" href="https://www.w3.org/TR/">WCAG guidelines</a></p>
</li>
<li><p>Consider adding subtle text shadows to enhance legibility, especially over busy or colorful backgrounds</p>
</li>
</ul>
<p><strong>2. Use Glassmorphism Sparingly</strong></p>
<ul>
<li><p>Limit glassmorphism to non-critical elements if you can’t guarantee readability</p>
</li>
<li><p>Overusing blur and transparency can clutter your UI and confuse users</p>
</li>
</ul>
<p><strong>3. Ensure Cross-Browser Compatibility</strong></p>
<ul>
<li>The backdrop-filter property is well-supported in modern browsers (Chrome, Safari, Firefox, Edge), but not in older ones</li>
</ul>
<hr />
<p>Thanks for reading!</p>
<p>I’m <a target="_blank" href="https://grusz.dev">Tom</a>, a frontend architect &amp; software engineer based in Prague, with years of experience from companies like Mastercard and Make. I write dev updates and tips about frontend, design, 3D, tech writing, &amp; more.</p>
<p>I believe the bridge between designers and developers is crucial. I work to strengthen it, jumping into both worlds to create better products by applying 3D, visual art, and code - a skill not many embrace yet. 🎨</p>
<p>You can find more about me at 🔗 <a target="_blank" href="http://grusz.dev">grusz.dev</a> or find my projects on ✨ <a target="_blank" href="https://github.com/tomasgrusz">GitHub</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Will AI make new "Frontend Architect" roles?]]></title><description><![CDATA[Introduction
AI is fundamentally transforming the frontend web ecosystem. The boundaries between designers and developers are blurring as new tools empower designers to generate code and developers to generate designs. It’s not just about speeding up...]]></description><link>https://blog.grusz.dev/will-ai-make-new-frontend-architect-roles</link><guid isPermaLink="true">https://blog.grusz.dev/will-ai-make-new-frontend-architect-roles</guid><dc:creator><![CDATA[Tom Grusz]]></dc:creator><pubDate>Thu, 22 May 2025 22:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759994513748/0d96c7c2-9fc2-4fe0-91c7-ad543d79283e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>AI is fundamentally transforming the frontend web ecosystem. The boundaries between designers and developers are blurring as new tools empower designers to generate code and developers to generate designs. It’s not just about speeding up workflows- AI is changing what it means to build for the web. In this article, I’ll explore how AI is reshaping both roles and why we’re likely to see the rise of a new kind of professional - the <strong>Frontend Architect</strong>.</p>
<h2 id="heading-designers-generating-code">🎨 Designers Generating Code</h2>
<p>AI-powered tools like <a target="_blank" href="http://Builder.io">Builder.io</a> and <a target="_blank" href="https://www.codia.ai/design-to-code">Codia</a> can now convert designs (e.g. from Figma) into working code. The quality of the code can be debated - and I've seen the drawbacks (the code is often messy, and you can forget about the usage of proper HTML elements) - but we can only expect the models to get better over time.</p>
<p>If you'd like to learn more about the code generation process, I recommend taking a look at <a target="_blank" href="https://www.builder.io/blog/ai-code-generation">Vishwas Gopinath's article</a> about <a target="_blank" href="http://Builder.io">Builder.io</a>'s Visual Copilot.</p>
<h2 id="heading-developers-generating-designs">⌨️ Developers Generating Designs</h2>
<p>On the other side of the isle we have the developers. I think most of us have tried generating images using AI. Unsurprisingly, AI is also really good at generating designs for UI - landing pages, dashboards, and even individual views. You can see design websites drowning in these, almost like a disease. But what's the downside of AI-generated designs?</p>
<p>Well, there are couple. First of all, the job of a designer is not merely crafting a beautiful design. It's much more - user experience, structuring, user research, understanding pain points, design consistency, and even accessibility. Skills that are sometimes shared by developers as well. Skills that are quite difficult for a model to recognize.</p>
<h2 id="heading-the-rise-of-hybrid-or-architect-roles">🪄 The Rise of Hybrid or "Architect" Roles</h2>
<p>AI-generated designs can serve as a great source of inspiration; though we shouldn't rely on that only - <em>but that's a topic for a different day</em>.</p>
<p>The evolution of AI in both design and development fields leads us to a need of evolving our designer and developer roles. Instead of two different roles, where one describes technical downfalls, the other creates effective designs, which are then pushed to the developer to implement, we will probably see the rise of hybrid designer-developer roles - <strong>Frontend Architects</strong>.</p>
<p>The <strong>Frontend Architect</strong> role entails understanding both development and design on a deeper level, and utilizing AI to create inspiration and avoid mundane tasks such as component initialization.</p>
<blockquote>
<p>The "architect" takes what AI is good at - generating design inspiration and code - and modify the outcome with user experience, efficiency, and accessibility in mind.</p>
</blockquote>
<p>Not only that, but we will no longer rely on successful design handover and no miscommunication between the developers and designers - leading to a more cohesive product in the long run. The <em>"designer"</em> part of the role does not waste time creating something that's later found to be infeasible for implementation, while the "developer" mindset can already prepare for how to optimally choose technologies relevant to the UX requirements.</p>
<h2 id="heading-summary">📝 Summary</h2>
<p>The rise of AI in frontend development is dissolving the wall between designers and developers. Designers can now generate code with tools like <a target="_blank" href="http://Builder.io">Builder.io</a> and Codia, while developers are leveraging AI to create and refine UI designs. However, true design is more than visuals - it’s about user experience, structure, and accessibility, aspects that AI still struggles to master.</p>
<p>As these technologies mature, we will see the emergence of new, hybrid roles - <strong>Frontend Architects</strong> - who combine the strengths of both design and development. The future of frontend is not about choosing sides, but about bridging the gap for better, smarter product creation.</p>
<hr />
<p>Thanks for reading!</p>
<p>I’m <a target="_blank" href="https://grusz.dev">Tom</a>, a frontend architect &amp; software engineer based in Prague, with years of experience from companies like Mastercard and Make. I write dev updates and tips about frontend, design, 3D, tech writing, &amp; more.</p>
<p>I believe the bridge between designers and developers is crucial. I work to strengthen it, jumping into both worlds to create better products by applying 3D, visual art, and code - a skill not many embrace yet. 🎨</p>
<p>You can find more about me at 🔗 <a target="_blank" href="http://grusz.dev">grusz.dev</a> or find my projects on ✨ <a target="_blank" href="https://github.com/tomasgrusz">GitHub</a>.</p>
]]></content:encoded></item></channel></rss>