<?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>Forem: Shah Fahid</title>
    <description>The latest articles on Forem by Shah Fahid (@shahfahid).</description>
    <link>https://forem.com/shahfahid</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%2F1202168%2F8bb51d0c-0a45-4b43-a58d-a28d58fb219d.png</url>
      <title>Forem: Shah Fahid</title>
      <link>https://forem.com/shahfahid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shahfahid"/>
    <language>en</language>
    <item>
      <title>Optimizing E-commerce SEO with PLP SSR</title>
      <dc:creator>Shah Fahid</dc:creator>
      <pubDate>Sat, 28 Mar 2026 01:52:02 +0000</pubDate>
      <link>https://forem.com/shahfahid/optimizing-e-commerce-seo-with-plp-ssr-530c</link>
      <guid>https://forem.com/shahfahid/optimizing-e-commerce-seo-with-plp-ssr-530c</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. From Invisible to Indexed: Transitioning an E-commerce PLP from CSR to SSR&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2. SEO for Next.js: How We Fixed Product Crawlability on a Large Scale Storefront&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;3. The Hidden SEO Killer: Why Client-Side Hydration Guards are Hurting Your Rankings&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the world of E-commerce, if Google can't see your products in the initial HTML, they don't exist. We recently tackled a significant challenge on a major storefront where the Product Listing Pages (PLP) were invisible to search engine bots due to a purely client-side architecture. This post breaks down how we moved to a Server-Side Rendered (SSR) model to boost discoverability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: The "Hydration Guard" Trap&lt;br&gt;
Many modern React/Next.js apps use a pattern where components wait for the page to "hydrate" before rendering. While this prevents layout shifts, it leaves the initial HTML empty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: view-source showed 0 product links.&lt;br&gt;
Impact: Crucial Product Detail Page (PDP) links were missing from the search engine's initial pass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; A Technical Deep Dive&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Removing Hydration Blocks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The first step was identifying and removing synchronous guards like if (!isClient) return null. We updated the &lt;br&gt;
ProductCard&lt;br&gt;
 to render its skeletal structure and crawlable links immediately on the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Solving the Klevu API SSR Mismatch
&lt;/h3&gt;

&lt;p&gt;Fetching products on the server (SSR) is different from the browser. We had to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Map Category Paths:&lt;/strong&gt; Aligning Strapi's category data with Klevu’s search engine requirements.&lt;br&gt;
Clean the Input: Handling case-sensitivity and special characters (like &amp;amp;) that caused the server-side API call to return zero results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search Type Logic:&lt;/strong&gt; Switching from specific term searches to CATNAV (Category Navigation) with wildcard queries to ensure the entire catalog is discoverable by bots.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Crawlable Pagination &amp;amp; Navigation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Semantic Links:&lt;/strong&gt; We replaced "Load More" buttons with &lt;a href="?page=N"&gt; tags. Users still get the fast JS experience, but bots now have a clear path to page 2 and beyond.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Category Tree:&lt;/strong&gt; We injected a top-level category navigation component into the SSR HTML, creating 10+ high-value internal links on every PLP.&lt;br&gt;
Verification: Thinking Like a Bot&lt;br&gt;
To test this, we stopped relying on the browser console. We used:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;curl audits:&lt;/strong&gt;&lt;br&gt;
Checking the raw HTML for product-card classes and valid href links.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bot Simulation:&lt;/strong&gt; Tools that fetch the page without executing a single line of JavaScript.&lt;br&gt;
Environment Parity: Ensuring API keys and environment variables were correctly loaded in the Node.js server context.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;SSR isn't just a performance feature; it's an SEO requirement. By ensuring your product grid, breadcrumbs, and navigation are present in the first byte, you give search engines the "map" they need to index your site effectively.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>nextjs</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Just completed Day 7 of my Data Structures and Algorithms challenge!</title>
      <dc:creator>Shah Fahid</dc:creator>
      <pubDate>Sun, 17 Mar 2024 15:43:41 +0000</pubDate>
      <link>https://forem.com/shahfahid/just-completed-day-7-of-my-data-structures-and-algorithms-challenge-4d8n</link>
      <guid>https://forem.com/shahfahid/just-completed-day-7-of-my-data-structures-and-algorithms-challenge-4d8n</guid>
      <description>&lt;p&gt;Just completed Day 7 of my Data Structures and Algorithms challenge! Explored array searching, optimized array merging techniques, and implemented bubble sort.Check out the code and progress on my GitHub &lt;a href="https://github.com/mrfahid/Dsa-with-me-aur-chai-learning.git" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;. Excited for Day 8! #DSA #CodingChallenge #ProgrammingGrowth&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Just completed Day 7 of my Data Structures and Algorithms challenge!</title>
      <dc:creator>Shah Fahid</dc:creator>
      <pubDate>Sun, 17 Mar 2024 15:43:32 +0000</pubDate>
      <link>https://forem.com/shahfahid/just-completed-day-7-of-my-data-structures-and-algorithms-challenge-24md</link>
      <guid>https://forem.com/shahfahid/just-completed-day-7-of-my-data-structures-and-algorithms-challenge-24md</guid>
      <description>&lt;p&gt;Just completed Day 7 of my Data Structures and Algorithms challenge! Explored array searching, optimized array merging techniques, and implemented bubble sort.Check out the code and progress on my GitHub &lt;a href="https://github.com/mrfahid/Dsa-with-me-aur-chai-learning.git" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;. Excited for Day 8! #DSA #CodingChallenge #ProgrammingGrowth&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
