<?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: Syed Ahmed Mohi Uddin Hasan</title>
    <description>The latest articles on DEV Community by Syed Ahmed Mohi Uddin Hasan (@syedahmedx3).</description>
    <link>https://dev.to/syedahmedx3</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3814417%2Fe2a31af2-6f0c-4306-8038-f6cae0ff0ee3.jpg</url>
      <title>DEV Community: Syed Ahmed Mohi Uddin Hasan</title>
      <link>https://dev.to/syedahmedx3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/syedahmedx3"/>
    <language>en</language>
    <item>
      <title>Why Git Mastery is Non-Negotiable</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Mon, 13 Apr 2026 13:45:18 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/why-git-mastery-is-non-negotiable-1d2b</link>
      <guid>https://dev.to/syedahmedx3/why-git-mastery-is-non-negotiable-1d2b</guid>
      <description>&lt;p&gt;The Complete Git &amp;amp; GitHub Workflow Reference for Modern Developers&lt;/p&gt;

&lt;p&gt;Every developer knows the basic commands: add, commit, and push. But when a merge conflict breaks the build, or you need to recover lost work from three days ago, the difference between a junior and a senior developer is how deeply they understand their version control system.&lt;/p&gt;

&lt;p&gt;I’ve compiled the "Ultimate Git &amp;amp; GitHub Workflow Cheat Sheet" to bridge that gap. This isn't just a list of commands; it’s a comprehensive guide to the professional developer’s daily workflow.&lt;/p&gt;

&lt;p&gt;What this guide covers:&lt;/p&gt;

&lt;p&gt;Foundational Architecture: Understanding the three-stage workflow between your working directory, staging area, and local repository.&lt;/p&gt;

&lt;p&gt;The "Parallel Universe" Strategy: How to use branching to experiment fearlessly without ever touching your production-ready code.&lt;/p&gt;

&lt;p&gt;History Management: The critical differences between merging and rebasing, and the "Golden Rule" of when to use each.&lt;/p&gt;

&lt;p&gt;Emergency Recovery: Step-by-step instructions for undoing uncommitted changes, amending mistakes, and using "selective surgery" through cherry-picking.&lt;/p&gt;

&lt;p&gt;Team Collaboration: Mastering the Pull Request (PR) workflow, forking open-source projects, and managing remote-tracking branches.&lt;/p&gt;

&lt;p&gt;Automation &amp;amp; Efficiency: A deep dive into the GitHub CLI to speed up your terminal work and the basics of CI/CD with GitHub Actions.&lt;/p&gt;

&lt;p&gt;Why every developer should have this:&lt;/p&gt;

&lt;p&gt;Git is essentially a time machine for your code. Using it correctly ensures that your project history remains linear, clean, and most importantly, reversible. &lt;/p&gt;

&lt;p&gt;Whether you are prepping for your first job or looking to lead a team, these are the fundamental insights required to work at scale.&lt;/p&gt;

&lt;p&gt;A few core habits to start today:&lt;/p&gt;

&lt;p&gt;Commit early and often to make changes easier to understand and revert.&lt;/p&gt;

&lt;p&gt;Always pull before you push to stay in sync with your team and avoid unnecessary conflicts.&lt;/p&gt;

&lt;p&gt;Never work directly on your main branch—branches are your safest friend.&lt;/p&gt;

&lt;p&gt;Check out the link below for the full PDF for the complete breakdown and copy-paste command sequences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/syedahmedhasanx3_git-github-workflow-reference-for-modern-ugcPost-7449415719093477376-jyGM?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAFy4nBMBEXY_M_LnIgAHcQzG1OYyMdMvpYE" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/syedahmedhasanx3_git-github-workflow-reference-for-modern-ugcPost-7449415719093477376-jyGM?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAFy4nBMBEXY_M_LnIgAHcQzG1OYyMdMvpYE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Created by Syed Ahmed Mohi Uddin Hasan&lt;br&gt;
Full-Stack Web Developer&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>coding</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Is your "Clean Code" actually Production-Grade?</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Wed, 08 Apr 2026 12:35:17 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/is-your-clean-code-actually-production-grade-26i4</link>
      <guid>https://dev.to/syedahmedx3/is-your-clean-code-actually-production-grade-26i4</guid>
      <description>&lt;p&gt;We are often taught that clean code is readable code. But in high-performance enterprise systems, readability is only half the battle. &lt;br&gt;
If it isn't performant, it isn't professional.&lt;/p&gt;

&lt;p&gt;True Senior Engineering lives in the micro-details that most developers overlook:&lt;/p&gt;

&lt;p&gt;1️⃣Dependency Hygiene: Stop passing objects into React hooks. Reference equality issues lead to "silent" re-render loops that kill mobile performance. &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%2Fjhi6xcog517vfh8y29a9.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%2Fjhi6xcog517vfh8y29a9.png" alt="Primitive vs. Object Dependencies" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2️⃣ The Layout Thrashing Trap: "Clean CSS" can still be slow. If your JavaScript is fighting the browser's rendering engine by constantly reading and writing geometry, your UI will feel "janky." &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%2Fb7wjczqy71x26y7nvqe5.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%2Fb7wjczqy71x26y7nvqe5.png" alt="Eliminating Layout Thrashing" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3️⃣ Defensive Schema Design: Production-grade apps move the heavy lifting to the database layer. Use SQL Views and Row-Level Security (RLS) to keep the frontend "thin," fast, and secure.&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%2F2rjrsa637btek49wxd1o.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%2F2rjrsa637btek49wxd1o.png" alt="Defensive Schema Design" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the invisible details that separate a standard codebase from a scalable, high-speed architecture.&lt;/p&gt;

&lt;p&gt;Which of these bottlenecks have you encountered in your projects? Let’s talk tech below! 👇&lt;/p&gt;

</description>
      <category>react</category>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Beyond Basic Styling: Why I’m Architecture-First with the Modern CSS Trilogy</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Sat, 28 Mar 2026 18:34:34 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/beyond-basic-styling-why-im-architecture-first-with-the-modern-css-trilogy-2eam</link>
      <guid>https://dev.to/syedahmedx3/beyond-basic-styling-why-im-architecture-first-with-the-modern-css-trilogy-2eam</guid>
      <description>&lt;p&gt;The*&lt;em&gt;Wall of Text&lt;/em&gt;*era of CSS is over. If you’re still fighting specificity wars or using useEffect to toggle a parent class, you’re fighting the browser engine rather than leveraging it.&lt;/p&gt;

&lt;p&gt;In my latest project work, I’ve moved away from "manual" styling toward a philosophy of Efficiency, Weightlessness, and Relationships. &lt;/p&gt;

&lt;p&gt;This shift is mandatory for anyone building professional-grade component libraries today. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Strategic Shift:&lt;/strong&gt; Efficiency through Consolidation: Moving beyond redundant repetition to create "forgiving" selector blocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weightless Defaults:&lt;/strong&gt; Setting global resets that never "fight" your components, eliminating the need for !important forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relational Intelligence:&lt;/strong&gt; Letting the container "know" its content. &lt;/p&gt;

&lt;p&gt;This moves UI logic from heavy scripts into the lightning-fast CSS engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get the Technical Blueprint:&lt;/strong&gt; For a deep dive into the implementation details, performance benchmarks, and code refactors mentioned above, download the full whitepaper: &lt;a href="https://github.com/syedahmedx3/modern-css-mastery/raw/main/The-Modern-CSS-Trilogy/The%20Modern%20CSS%20Trilogy.pdf" rel="noopener noreferrer"&gt;https://github.com/syedahmedx3/modern-css-mastery/raw/main/The-Modern-CSS-Trilogy/The%20Modern%20CSS%20Trilogy.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’m curious to hear your insights:&lt;/strong&gt; How has moving your state logic from JS to CSS changed your Cumulative Layout Shift (CLS) or overall performance metrics? Let's talk in the comments! 👇&lt;/p&gt;

</description>
      <category>moderncss</category>
      <category>webperf</category>
      <category>frontendchallenge</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Why Your React Scroll is Lagging (and how to fix it with Locomotive v5</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Wed, 25 Mar 2026 11:40:18 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/why-your-react-scroll-is-lagging-and-how-to-fix-it-with-locomotive-v5-2dp8</link>
      <guid>https://dev.to/syedahmedx3/why-your-react-scroll-is-lagging-and-how-to-fix-it-with-locomotive-v5-2dp8</guid>
      <description>&lt;p&gt;The Problem: The "Jank" Struggle&lt;br&gt;
In traditional web development, scrolling is a passive browser event. When the Main Thread is busy with heavy React renders or API calls, your scroll stutters. This is Jank, and it kills the premium feel of high-end sites.&lt;/p&gt;

&lt;p&gt;The Solution: Virtual Scroll Paradigm&lt;br&gt;
I recently built a mastery framework to solve this. Version 5 of Locomotive Scroll (built on the Lenis engine) changes the game. Here is the theoretical core:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Virtual vs. Main Thread&lt;br&gt;
Native scrolling relies on the browser's main thread. If your JS execution is heavy, the scroll lags. Locomotive v5 intercepts wheel events and calculates a custom trajectory, ensuring a consistent 60 FPS experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sub-Pixel Precision&lt;br&gt;
Native scrolling moves in whole pixels, creating a "staircase effect." By moving in decimals (e.g., 1.1px), we achieve "buttery" smoothness on 120Hz displays.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The "Saudi Web" Standard (RTL)&lt;br&gt;
Working in the KSA market, I realised most animation libraries break with Arabic localisation. In this repo, I demonstrate how to use Logical Properties (margin-inline-start), so your parallax effects work seamlessly in both English and Arabic.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🚀 Show Me The Code&lt;br&gt;
The heart of this repo is the optimised useLocomotive hook. It includes a ResizeObserver to handle dynamic React content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/hooks/useLocomotive.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;useLocomotive&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&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="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;scrollRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&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="nx"&gt;scrollRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;LocomotiveScroll&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;autoStart&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="na"&gt;lenisOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;lerp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;options&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="nx"&gt;resizeObserver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ResizeObserver&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;scrollRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

    &lt;span class="nx"&gt;resizeObserver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&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="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;scrollRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;destroy&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="nx"&gt;resizeObserver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;scrollRef&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;Get the Full Framework&lt;br&gt;
I've open-sourced the entire setup, including a 4-page Technical Masterclass PDF covering GSAP syncing and performance math.&lt;/p&gt;

&lt;p&gt;🔥 GitHub Repo: &lt;a href="https://github.com/AhmedHasanx3/locomotive-scroll-react-mastery" rel="noopener noreferrer"&gt;https://github.com/AhmedHasanx3/locomotive-scroll-react-mastery&lt;/a&gt;&lt;br&gt;
💼 Portfolio: &lt;a href="https://ahmedhasanx3.github.io/Portfolio/" rel="noopener noreferrer"&gt;https://ahmedhasanx3.github.io/Portfolio/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If this helps your project, please give the repo a Star ⭐! I am also currently open to new opportunities in Front-End/Full-Stack roles—feel free to reach out!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Boosted Page Load Speeds by 25% Using Modern Asset Delivery</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Mon, 16 Mar 2026 12:57:22 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/how-i-boosted-page-load-speeds-by-25-using-modern-asset-delivery-37fd</link>
      <guid>https://dev.to/syedahmedx3/how-i-boosted-page-load-speeds-by-25-using-modern-asset-delivery-37fd</guid>
      <description>&lt;p&gt;We’ve all been there: You build a "pixel-perfect" UI with smooth GSAP animations, only to watch your Lighthouse score tank because of heavy assets. In a high-stakes market like Saudi Arabia, where mobile-first indexing and varying network speeds are the norm, a 2-second delay can result in a 20% drop in conversions.&lt;/p&gt;

&lt;p&gt;Recently, I reduced the initial load time of a production real estate platform by 25%. Here’s the "no-fluff" breakdown of the modern asset delivery strategy I used.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The "Next-Gen" Format Pivot
Standard JPEGs and PNGs are the silent killers of performance. I moved the entire asset pipeline to WebP and AVIF.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Result: We saw a 30-40% reduction in file size without visible quality loss.&lt;/p&gt;

&lt;p&gt;Pro Tip: Don't just convert them; serve them conditionally using the  tag so legacy browsers don't break.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Implementing Priority Hints
Not all assets are created equal. I used fetchpriority to tell the browser exactly what to focus on.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LCP Hero Image: Added fetchpriority="high" to the main banner.&lt;/p&gt;

&lt;p&gt;Non-Critical Scripts: Used defer and fetchpriority="low" for third-party tracking pixels.&lt;br&gt;
This ensured the "Above the Fold" content was interactive while the rest of the app hydrated in the background.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The GSAP Optimisation Trick
I love using GSAP for cinematic effects, but it can be heavy if not managed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of loading the entire library, I imported only the necessary plugins (ScrollTrigger, Flip).&lt;/p&gt;

&lt;p&gt;I initialised animations only after the main thread was free, ensuring the initial "First Contentful Paint" was lightning-fast.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Edge Delivery (CDN) &amp;amp; KSA Specifics
Since the target audience was in Al Khobar and Riyadh, using a CDN with local "Edge" nodes was non-negotiable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By caching static assets closer to the user, we reduced the Time to First Byte (TTFB) significantly.&lt;/p&gt;

&lt;p&gt;We also implemented aggressive Cache-Control headers for assets that rarely change (fonts, brand logos).&lt;/p&gt;

&lt;p&gt;The Results by the time we were done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lighthouse Performance Score: Jumped from 78 to 100.&lt;/li&gt;
&lt;li&gt;Page Load Speed: 25% faster on average on 4G connections.&lt;/li&gt;
&lt;li&gt;User Retention: Noticeable improvement in session duration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key Takeaway: Performance isn't a one-time task; it's a series of small, intentional architectural choices. If you aren't auditing your network tab daily, you're leaving speed on the table.&lt;/p&gt;

&lt;p&gt;What’s your go-to "quick win" for web performance? Let’s swap tips in the comments!&lt;/p&gt;

</description>
      <category>webperf</category>
      <category>productivity</category>
      <category>frontend</category>
      <category>react</category>
    </item>
    <item>
      <title>RTL Mastery: Beyond Just dir="rtl"</title>
      <dc:creator>Syed Ahmed Mohi Uddin Hasan</dc:creator>
      <pubDate>Mon, 09 Mar 2026 10:01:55 +0000</pubDate>
      <link>https://dev.to/syedahmedx3/rtl-mastery-beyond-just-dirrtl-2m1h</link>
      <guid>https://dev.to/syedahmedx3/rtl-mastery-beyond-just-dirrtl-2m1h</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
When building for the KSA market, many developers think adding dir="rtl" to the  tag is the finish line. In reality, that is just the starting blocks. Truly high-performance, localised apps require a "mirror-first" mindset to ensure a "pixel-perfect" experience for Arabic-speaking users.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my experience launching production sites like DarElite, I've found that deep RTL support is what separates a translated site from a truly localised one. Here is a guide on going beyond the basics.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use CSS Logical Properties&lt;/li&gt;
&lt;li&gt;Stop thinking in "left" and "right." Use logical properties to let the browser handle the heavy lifting based on the document direction.&lt;/li&gt;
&lt;li&gt;Margin/Padding: Use margin-inline-start instead of margin-left.&lt;/li&gt;
&lt;li&gt;Borders: Use border-end-start-radius for specific corners.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tailwind Strategy: If you use Tailwind CSS, leverage the start and end utilities (e.g., ps-4 instead of pl-4).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Icons: To Mirror or Not to Mirror?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This is where most UI/UX bugs hide. Not every icon should be flipped.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mirror these: Progress bars, directional arrows (back/forward), and icons representing movement (like a bicycle).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't mirror these: Checkmarks, clock faces, and media playback buttons (Play/Pause/Seek) generally stay the same.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handling Bidirectional (BiDi) Text&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In technical or business apps, you will often have "Mixed Direction" content—like an English email address or a phone number inside an Arabic sentence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Fix: Use the  (Bi-Directional Isolation) tag for user-generated content to prevent the layout from breaking when different scripts collide.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance in RTL Layouts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Localised apps often struggle with layout shifts during the "direction swap."&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tip: Ensure your CSS architecture is "direction-agnostic" from the start. By refining component architecture, I’ve managed to maintain 100% Lighthouse scores while supporting complex RTL layouts.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>tailwindcss</category>
      <category>react</category>
    </item>
  </channel>
</rss>
