<?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: Garvit Sharda</title>
    <description>The latest articles on DEV Community by Garvit Sharda (@garvit_sharda).</description>
    <link>https://dev.to/garvit_sharda</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%2F3884309%2F61966954-410a-4107-ab36-0b9d3df9ebf3.jpg</url>
      <title>DEV Community: Garvit Sharda</title>
      <link>https://dev.to/garvit_sharda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/garvit_sharda"/>
    <language>en</language>
    <item>
      <title>SEO in Abu Dhabi in 2026: A Local Playbook for the UAE Capital</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Wed, 12 Aug 2026 09:16:50 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/seo-in-abu-dhabi-in-2026-a-local-playbook-for-the-uae-capital-3dkb</link>
      <guid>https://dev.to/garvit_sharda/seo-in-abu-dhabi-in-2026-a-local-playbook-for-the-uae-capital-3dkb</guid>
      <description>&lt;p&gt;For years, businesses in the UAE capital quietly sent their search marketing budgets to Dubai. In 2026 that no longer makes sense. Abu Dhabi's economy â€” government, energy, real estate, healthcare, education, tourism â€” is its own distinct market with its own buyers, its own search behaviour, and its own competitive landscape. If you run a business here, ranking well in Abu Dhabi is a different job from ranking in Dubai, and it deserves a strategy built for it.&lt;/p&gt;

&lt;p&gt;Here is what genuinely moves the needle for SEO in Abu Dhabi in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local intent is the whole game
&lt;/h2&gt;

&lt;p&gt;Someone searching "clinic near Al Reem Island" or "office fit-out contractor Abu Dhabi" is not a generic lead â€” they are a local buyer with immediate intent. Winning that search comes down to a few local signals done consistently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A complete, accurate &lt;strong&gt;Google Business Profile&lt;/strong&gt; with the right primary category, real photos, and steady reviews.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NAP consistency&lt;/strong&gt; â€” your business name, Abu Dhabi address and phone number identical everywhere they appear online (your site, directories, social profiles).&lt;/li&gt;
&lt;li&gt;Location-specific landing pages that actually talk about Abu Dhabi neighbourhoods and areas you serve, not a generic "we cover the UAE" paragraph.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local SEO compounds: the more consistently your business shows up across the local web, the more Google â€” and increasingly AI answer engines â€” treat you as the obvious local choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bilingual search is not optional here
&lt;/h2&gt;

&lt;p&gt;Abu Dhabi searches happen in both English and Arabic, and the two audiences phrase things differently. A serious SEO strategy accounts for Arabic keywords, right-to-left content, and â€” if you run separate language versions â€” correct &lt;code&gt;hreflang&lt;/code&gt; tagging so Google serves the right page to the right user. Ignoring Arabic search leaves a large, high-intent slice of the market to competitors who bothered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Answer engines are the new front door
&lt;/h2&gt;

&lt;p&gt;More Abu Dhabi buyers now ask ChatGPT, Google's AI Mode, or Perplexity "who is the best [service] in Abu Dhabi?" and act on the single answer they get back. To be that answer you need the same fundamentals that win classic SEO â€” fast, crawlable, well-structured pages â€” plus structured data (Organization, LocalBusiness, FAQ schema) and consistent mentions across the web so the model is confident recommending you. Local SEO and AI-search optimisation are now the same project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content that matches how locals actually search
&lt;/h2&gt;

&lt;p&gt;Thin, generic pages don't rank. What does: genuinely useful, locally-relevant content â€” a guide to choosing a contractor in Abu Dhabi, an explainer on a regulation that affects local businesses, an FAQ that mirrors the questions real customers ask. Each strong page is both a ranking asset and a citation an AI engine can quote.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical basics still decide winners
&lt;/h2&gt;

&lt;p&gt;None of the above matters if the site is slow or hard to crawl. Core Web Vitals (especially INP), mobile performance, clean internal linking, a valid sitemap and https are the price of entry. Get these right and the content and local signals actually get rewarded.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;SEO in Abu Dhabi in 2026 is local intent + bilingual reach + AI-answer readiness, all sitting on a technically sound site. It is very winnable, because many competitors are still running Dubai-shaped strategies in an Abu Dhabi market. Move deliberately on the local signals and you build a lead that is hard to unseat.&lt;/p&gt;

&lt;p&gt;If you want specialists to run this for you, this is exactly what an &lt;a href="https://www.com8.io/services/seo-agency-abu-dhabi" rel="noopener noreferrer"&gt;SEO agency in Abu Dhabi&lt;/a&gt; like COM8 STUDIO does day to day â€” and the wider team is a &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;digital marketing agency in Dubai&lt;/a&gt; serving the whole UAE. If you just want to see where your site stands right now, start with a &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Author: Garvit Sharda, COM8 STUDIO â€” helping Abu Dhabi and Dubai businesses get found in search.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>International SEO in 2026: How to Serve Two Markets (UAE + US) From One Site Without Cannibalizing Yourself</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Sat, 08 Aug 2026 06:21:35 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/international-seo-in-2026-how-to-serve-two-markets-uae-us-from-one-site-without-cannibalizing-3078</link>
      <guid>https://dev.to/garvit_sharda/international-seo-in-2026-how-to-serve-two-markets-uae-us-from-one-site-without-cannibalizing-3078</guid>
      <description>&lt;p&gt;For twenty years the hardest part of international SEO was translation. In 2026 the hardest part is telling Google &lt;em&gt;which version of a page belongs to which market&lt;/em&gt; â€” and getting it wrong quietly wastes everything else you do.&lt;/p&gt;

&lt;p&gt;If you run one website that has to win customers in two places at once â€” say the UAE and the United States â€” you have almost certainly hit this. You publish a great page, it ranks, and then Google serves your &lt;code&gt;en-US&lt;/code&gt; page to a searcher in Dubai (wrong currency, wrong phone number, wrong intent) or shows your Gulf page to someone in Chicago. Rankings look fine in a dashboard; conversions leak. This is a technical problem, and it has a technical fix.&lt;/p&gt;

&lt;p&gt;Here is how to serve two markets from one site in 2026 without the two versions cannibalising each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  First decision: URL architecture
&lt;/h2&gt;

&lt;p&gt;Before a single hreflang tag, you choose how the regions live on your domain. There are three options and in 2026 the trade-offs are clearer than they used to be.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ccTLDs&lt;/strong&gt; (&lt;code&gt;example.ae&lt;/code&gt;, &lt;code&gt;example.com&lt;/code&gt;) send the strongest geo-targeting signal, but every ccTLD is a &lt;em&gt;separate domain&lt;/em&gt; in Google's eyes. If your &lt;code&gt;.com&lt;/code&gt; has a Domain Rating of 50, your fresh &lt;code&gt;.ae&lt;/code&gt; starts at &lt;strong&gt;zero&lt;/strong&gt;. You rebuild authority per market.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subdomains&lt;/strong&gt; (&lt;code&gt;ae.example.com&lt;/code&gt;) are the worst of both worlds in 2026: Google treats them as partially separate, so authority transfer is inconsistent, yet you get none of the trust signal a ccTLD gives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subdirectories&lt;/strong&gt; (&lt;code&gt;example.com/ae/&lt;/code&gt;, &lt;code&gt;example.com/us/&lt;/code&gt;) are the recommended default for most non-enterprise sites. They consolidate all your link equity under one domain, are cheaper and faster to run, and you handle geo-targeting with hreflang plus Search Console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unless you are a large enterprise with a market-by-market budget, use &lt;strong&gt;subdirectories&lt;/strong&gt;. One domain, one authority pool, region handled by signals rather than by fragmenting your site.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hreflang actually does
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;hreflang&lt;/code&gt; is a single instruction to search engines: &lt;em&gt;this page has other versions, here they are, and here is who each one is for.&lt;/em&gt; It is a language &lt;strong&gt;and optional region&lt;/strong&gt; signal â€” which is exactly what a two-market business needs.&lt;/p&gt;

&lt;p&gt;The codes matter. Language is ISO 639-1, region is ISO 3166-1 Alpha-2:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;en-US&lt;/code&gt; â€” English, United States&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;en-AE&lt;/code&gt; â€” English, United Arab Emirates&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ar-AE&lt;/code&gt; â€” Arabic, United Arab Emirates&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;x-default&lt;/code&gt; â€” the fallback for everyone you did &lt;strong&gt;not&lt;/strong&gt; explicitly target&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can declare hreflang three ways. Pick one and never mix them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. HTML &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tags&lt;/strong&gt; in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; (simplest for small sites):&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;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"alternate"&lt;/span&gt; &lt;span class="na"&gt;hreflang=&lt;/span&gt;&lt;span class="s"&gt;"en-us"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/us/pricing"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"alternate"&lt;/span&gt; &lt;span class="na"&gt;hreflang=&lt;/span&gt;&lt;span class="s"&gt;"en-ae"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/ae/pricing"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"alternate"&lt;/span&gt; &lt;span class="na"&gt;hreflang=&lt;/span&gt;&lt;span class="s"&gt;"ar-ae"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/ae/ar/pricing"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&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;"alternate"&lt;/span&gt; &lt;span class="na"&gt;hreflang=&lt;/span&gt;&lt;span class="s"&gt;"x-default"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/pricing"&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;&lt;strong&gt;2. HTTP headers&lt;/strong&gt; â€” the only option for non-HTML files like PDFs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. XML sitemap&lt;/strong&gt; â€” the best choice for large sites, because your CMS can auto-generate and update the cluster whenever pages are added or removed, instead of you hand-editing hundreds of heads.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three rules that break everything
&lt;/h2&gt;

&lt;p&gt;This is where an estimated &lt;strong&gt;75% of hreflang implementations go wrong&lt;/strong&gt; â€” and hreflang errors are blamed for &lt;strong&gt;60â€“80% of multi-country SEO failures&lt;/strong&gt;. Almost all of it comes down to three rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reciprocity.&lt;/strong&gt; If page A points to page B, page B must point back to page A. One-directional tags are ignored.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-reference.&lt;/strong&gt; Every page must include a tag pointing to &lt;em&gt;itself&lt;/em&gt;. If you have five localized versions, every page carries &lt;strong&gt;six&lt;/strong&gt; declarations: five variants plus &lt;code&gt;x-default&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One broken link kills the cluster.&lt;/strong&gt; A single wrong or 404 URL, or a typo like &lt;code&gt;en-uae&lt;/code&gt; (not a valid code â€” it's &lt;code&gt;en-ae&lt;/code&gt;), and Google discards the &lt;em&gt;entire&lt;/em&gt; cluster for that page. Not just the bad line â€” all of it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last rule is why "we added hreflang and nothing changed" is such a common story. The tags were there; one URL was wrong; Google ignored the lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Geo-targeting beyond hreflang
&lt;/h2&gt;

&lt;p&gt;hreflang decides &lt;em&gt;which version&lt;/em&gt; shows. It doesn't do the rest of localization for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local signals on the page:&lt;/strong&gt; currency, a local phone number and address (consistent NAP), and content that reflects local intent â€” a UAE VAT line reads very differently from a US sales-tax one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Console â†’ International Targeting&lt;/strong&gt; still lets you confirm Google is reading your hreflang and flags return-tag errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not IP-redirect users automatically.&lt;/strong&gt; Googlebot crawls mostly from US IPs; auto-redirecting by IP can mean Google only ever sees one version. Suggest the right region, let the user choose, keep every version crawlable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A 15-minute audit you can run today
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;View source on a key page. Is there a self-referencing hreflang tag? An &lt;code&gt;x-default&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Click every URL in the cluster. Do any 404 or redirect? Do the return tags exist on the other end?&lt;/li&gt;
&lt;li&gt;Check the ISO codes against the real lists â€” &lt;code&gt;en-ae&lt;/code&gt;, &lt;code&gt;ar-ae&lt;/code&gt;, &lt;code&gt;en-us&lt;/code&gt;, not invented variants.&lt;/li&gt;
&lt;li&gt;Open Search Console's International Targeting report and read the errors.&lt;/li&gt;
&lt;li&gt;Confirm you are not auto-redirecting Googlebot by IP.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fix those five and you are already ahead of three-quarters of multi-region sites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is worth the effort
&lt;/h2&gt;

&lt;p&gt;International SEO done right is a compounding moat. Because most competitors get the technical layer wrong, a clean hreflang setup plus genuinely localized content means you quietly own the right SERP in &lt;em&gt;both&lt;/em&gt; markets while they cannibalise themselves in one. It is unglamorous, it is mostly plumbing, and it wins.&lt;/p&gt;

&lt;p&gt;If you'd rather have specialists run this across both markets, this is exactly the kind of work a &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;digital marketing agency in Dubai&lt;/a&gt; does day to day â€” the technical &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;SEO and AI-search services&lt;/a&gt; that keep a single site ranking cleanly in the UAE and the US (we do the same for &lt;a href="https://www.com8.io/usa/solar-marketing-agency" rel="noopener noreferrer"&gt;US-market campaigns&lt;/a&gt; run out of the Gulf). If you just want to know where your current setup leaks, grab a &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; and start with the five checks above.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Author: Garvit Sharda, COM8 STUDIO â€” a digital marketing agency helping UAE and US businesses rank across markets.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>marketing</category>
    </item>
    <item>
      <title>Google Ads vs SEO: Where Should Your Marketing Budget Go in 2026?</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Thu, 06 Aug 2026 09:10:40 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/google-ads-vs-seo-where-should-your-marketing-budget-go-in-2026-c68</link>
      <guid>https://dev.to/garvit_sharda/google-ads-vs-seo-where-should-your-marketing-budget-go-in-2026-c68</guid>
      <description>&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%2Fcyltvs4t7fgb83gdq3jj.jpg" 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%2Fcyltvs4t7fgb83gdq3jj.jpg" alt="Google Ads vs SEO 2026 - where should your marketing budget go" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every business owner eventually asks the same question: should we put our marketing budget into Google Ads or into SEO? In 2026, with AI reshaping search and paid-media costs still climbing, the answer matters more than ever. The honest response is that these two channels do different jobs — and the smartest brands run them together rather than choosing one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Ads: renting attention
&lt;/h2&gt;

&lt;p&gt;Google Ads buys visibility instantly. The moment your campaign goes live, your business can appear at the very top of the results for the keywords you choose. That speed is paid search's biggest advantage: it's perfect for launching a product, filling a slow month, or testing which offers and landing pages actually convert.&lt;/p&gt;

&lt;p&gt;The catch is simple. The traffic stops the moment you stop paying, and in competitive markets the cost per click has climbed steadily for years. Paid search is renting attention — the rent never ends, and it tends to go up.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO: building an asset you own
&lt;/h2&gt;

&lt;p&gt;SEO works the other way around. It's slow to start, often taking three to six months to show real movement, but it compounds. A page that earns its ranking keeps attracting visitors month after month with no per-click fee. Over a year or two, the cost per acquisition from organic search typically falls far below paid, which is why so many marketers name organic search their single best return-on-investment channel.&lt;/p&gt;

&lt;p&gt;Put another way: good SEO is an investment in an asset you own, not an expense you rent.&lt;/p&gt;

&lt;h2&gt;
  
  
  So where should the budget go?
&lt;/h2&gt;

&lt;p&gt;A practical rule for 2026 is to run both in a deliberate split. Use &lt;strong&gt;Google Ads&lt;/strong&gt; to capture existing high-intent demand and to move fast, while you build &lt;strong&gt;SEO&lt;/strong&gt; as the long-term engine that lowers your blended cost of acquisition over time.&lt;/p&gt;

&lt;p&gt;Early on, a larger share may go to ads simply because SEO hasn't matured yet. As your organic visibility grows, you shift budget away from paid and reinvest the savings. The mix should never be static.&lt;/p&gt;

&lt;h2&gt;
  
  
  The new layer nobody can ignore: AI search
&lt;/h2&gt;

&lt;p&gt;There's a third force this year. Google's AI Overviews and assistants like ChatGPT and Perplexity now answer many queries directly, and a growing share of searches end with &lt;strong&gt;zero clicks&lt;/strong&gt;. This doesn't kill SEO — it changes it. The same strong content and authority that earn rankings also make you the source these AI systems cite. Neither Google Ads nor classic SEO alone covers this shift, which is exactly why an integrated strategy wins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three tips that save money
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never send paid traffic to a weak page.&lt;/strong&gt; A great click-through rate pointed at a slow or unclear landing page just burns budget faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure against qualified leads and revenue, not vanity clicks.&lt;/strong&gt; Impressions don't pay salaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop treating the channels as rivals.&lt;/strong&gt; Keyword data from your ads should inform your SEO, and your SEO wins should let you scale back expensive paid terms.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;Google Ads gives you speed and control. SEO gives you compounding, durable growth. And AI search rewards the brands that invest in genuine authority. A business that funds only ads stays on a treadmill; a business that funds only SEO waits too long for results. The winners fund both, measure ruthlessly, and shift the mix toward whatever produces profitable customers.&lt;/p&gt;

&lt;p&gt;If you're not sure how to divide your own budget, an experienced &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;digital marketing agency in Dubai&lt;/a&gt; can audit your funnel and recommend a split based on your margins and goals. It's the kind of thing our &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;data-driven marketing services&lt;/a&gt; are built around — and a quick &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; is a smart first step, because it shows exactly where your easy organic wins are before you spend another dirham or dollar on ads.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Garvit Sharda of COM8 STUDIO, a digital marketing agency helping businesses in the UAE and the US grow through SEO, AI-search optimization and paid media.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>seo</category>
      <category>googleads</category>
      <category>business</category>
    </item>
    <item>
      <title>The Cookieless Future Is Here: How to Measure Marketing in 2026 Without Third-Party Cookies</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Wed, 05 Aug 2026 08:47:46 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/the-cookieless-future-is-here-how-to-measure-marketing-in-2026-without-third-party-cookies-2c4n</link>
      <guid>https://dev.to/garvit_sharda/the-cookieless-future-is-here-how-to-measure-marketing-in-2026-without-third-party-cookies-2c4n</guid>
      <description>&lt;p&gt;For twenty years, the third-party cookie quietly ran digital marketing. It followed users across the web, stitched together their journeys, and told advertisers exactly which ad produced which sale. In 2026, that era is effectively over — and the businesses that prepared are running the same campaign efficiency they had in 2023, while the ones that didn't are quietly bleeding budget. Here is what actually changed, what it costs, and the practical stack that fixes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changed
&lt;/h2&gt;

&lt;p&gt;The headline is simpler than the noise around it. Third-party cookies are already blocked by default in Safari and Firefox, which together account for a large share of mobile traffic. Google reversed its plan to force-remove them from Chrome and moved instead to a user-choice model — but "user choice" in practice means a growing slice of Chrome users switch tracking off too. On top of that, mobile advertising identifiers (Apple's IDFA, Android's ad ID) are well into their second wave of deprecation. The net effect: the identifiers marketers relied on to connect a click to a conversion are disappearing, and no single browser update will bring them back.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost of doing nothing
&lt;/h2&gt;

&lt;p&gt;This is not a theoretical privacy debate; it shows up directly in the numbers. Teams that never adapted their tracking are commonly absorbing &lt;strong&gt;15–30% gaps in conversion reporting&lt;/strong&gt;. That gap is dangerous precisely because it is invisible: your ad platforms report fewer conversions than actually happened, so their algorithms optimise toward the wrong audiences, your cost-per-acquisition climbs, and no amount of creative refresh fixes a measurement problem. You end up making budget decisions on data that is quietly 20% wrong. For any business spending seriously on paid media, that is the most expensive number on the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three-layer stack that fixes it
&lt;/h2&gt;

&lt;p&gt;The good news is that the fix is well understood in 2026, and it is a stack, not a single tool. It has to be built in order, because each layer depends on the one below it.&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%2Flh1ad1iuq9rq51vakikn.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%2Flh1ad1iuq9rq51vakikn.png" alt="The 3-layer cookieless tracking stack for 2026 — consent, server-side tagging, and server-side conversion APIs" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer one is consent and a first-party foundation.&lt;/strong&gt; Before any clever tracking, you need a Consent Management Platform wired to Google's Consent Mode v2, plus first-party cookies and data you genuinely own. If a user hasn't consented, you have no reliable signal to work with — so consent is not a compliance checkbox bolted on at the end, it is the foundation the whole stack sits on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer two is server-side tagging.&lt;/strong&gt; Instead of firing tracking from the user's browser — where ad blockers, browser restrictions and short-lived cookies eat your data — you move measurement to your own server using server-side Google Tag Manager. This gives you more durable identifiers, fewer points of failure, and a much cleaner dataset. It is the backbone; the third layer is far less effective without it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer three is server-side conversion APIs.&lt;/strong&gt; This is where you recover the lost 15–30%. Rather than relying on a browser pixel to tell Meta or Google that a sale happened, you send that conversion straight from your server through Meta's Conversions API, Google's Enhanced Conversions, and the TikTok and LinkedIn equivalents. The ad platforms get accurate conversion data again, their optimisation improves, and your reported CPA starts telling the truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  First-party data is the real asset
&lt;/h2&gt;

&lt;p&gt;Underneath the technical stack sits a strategic shift: the brands winning in 2026 treat &lt;strong&gt;first-party data as a competitive asset&lt;/strong&gt;, not a byproduct. Email and SMS lists, logged-in customer accounts, loyalty programs, quiz and survey responses, and CRM records are data you own outright — no browser can block them and no platform can take them away. It is not a coincidence that email marketing still returns roughly &lt;strong&gt;$36 for every $1 invested&lt;/strong&gt;: it runs entirely on data you control. Every business should be asking a blunt question this year — what do we know about our customers that we own directly, and how do we ethically collect more of it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't forget your analytics
&lt;/h2&gt;

&lt;p&gt;Your own reporting needs the same treatment. In GA4, that means implementing Consent Mode correctly so that Google's behavioural modelling can estimate the users who decline cookies, rather than simply losing them from your reports. Configured properly, you keep directional accuracy in your dashboards even as raw observable data shrinks. Configured badly — or ignored — your analytics slowly drift from reality, and you won't notice until a quarterly review doesn't add up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start this week
&lt;/h2&gt;

&lt;p&gt;You do not need to rebuild everything at once. Start by auditing the gap: compare the conversions your ad platforms report against what your CRM or backend actually recorded. If the difference is more than about 10%, you have a measurement problem worth money. Then implement Consent Mode v2, stand up server-side tagging, and connect one conversion API — usually Meta's or Google's first — before rolling out the rest. Do it in that order and the improvements compound.&lt;/p&gt;

&lt;p&gt;If that sounds like a lot to coordinate, it is the kind of foundational work a &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;digital marketing agency in Dubai&lt;/a&gt; should own end to end, because the tracking stack, the ad accounts and the analytics all have to agree with each other. It is also exactly what our &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;data-driven marketing services&lt;/a&gt; are built around — measurement first, spend second. And if you just want to know where your current setup is leaking before committing to anything, a &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO and analytics audit&lt;/a&gt; is the fastest way to see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;The cookieless shift is not the end of measurable marketing — it is the end of &lt;em&gt;lazy&lt;/em&gt; measurable marketing. The businesses that treated third-party cookies as a permanent crutch are the ones hurting. The businesses that build a consent-first, server-side, first-party stack get something better than they had before: data they actually own, that no browser policy can switch off. In 2026, that ownership is the real competitive advantage.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written by Garvit Sharda of &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt;, a digital marketing agency helping businesses in the UAE and beyond build measurement that survives whatever the browsers do next.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>analytics</category>
      <category>seo</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Programmatic SEO in 2026: How to Ship 10,000 Pages Without Getting Deindexed</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Tue, 04 Aug 2026 11:51:28 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/programmatic-seo-in-2026-how-to-ship-10000-pages-without-getting-deindexed-485k</link>
      <guid>https://dev.to/garvit_sharda/programmatic-seo-in-2026-how-to-ship-10000-pages-without-getting-deindexed-485k</guid>
      <description>&lt;p&gt;Programmatic SEO is seductive: one template plus a dataset, and suddenly you have ten thousand pages. But here's the uncomfortable 2026 reality — &lt;strong&gt;roughly 80% of programmatic deployments fail&lt;/strong&gt;, and Google's March 2024 "scaled content abuse" policy is the reason most of them get quietly deindexed. Having watched both the wins and the wipeouts, here's what actually separates the sites that rank from the ones that vanish.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one rule that decides everything
&lt;/h2&gt;

&lt;p&gt;Programmatic SEO is just &lt;strong&gt;template + data&lt;/strong&gt;. It works only when each generated page provides unique, useful information that justifies its existence.&lt;/p&gt;

&lt;p&gt;There's a brutally simple test, borrowed from a production 3,887-page Next.js site: &lt;strong&gt;open three of your generated pages and read them. Does each one contain at least one piece of information the other two don't?&lt;/strong&gt; If yes, you're probably fine. If no, Google will eventually drop them.&lt;/p&gt;

&lt;p&gt;Pure variable substitution — "Marketing in Dallas" identical to "Marketing in Fort Worth" except the city name — is &lt;em&gt;exactly&lt;/em&gt; what the 2024 spam update named as scaled content abuse. Templating your structure is fine. Templating your value is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The data layer is where it lives or dies
&lt;/h2&gt;

&lt;p&gt;Most deployments die in the data, not the template. Here are your data sources ranked best to worst:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Original or proprietary research&lt;/strong&gt; — the gold standard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Curated public data + your editorial commentary&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API-sourced data&lt;/strong&gt; (OpenStreetMap, government datasets) &lt;em&gt;with an editorial layer&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-generated + genuine human review&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pure AI-generated content&lt;/strong&gt; → gets deindexed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Invest in the data, not the template. Every page needs at least one unique data point and 30–50 words of genuinely unique context. That single paragraph is often the difference between "indexed" and "crawled, currently not indexed."&lt;/p&gt;

&lt;h2&gt;
  
  
  Internal linking is not optional
&lt;/h2&gt;

&lt;p&gt;Programmatic pages have almost no external backlinks, so they live or die by &lt;strong&gt;internal&lt;/strong&gt; links. Target &lt;strong&gt;20–38 internal links per page&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Link &lt;strong&gt;up&lt;/strong&gt; to the parent hub (e.g. &lt;code&gt;/services/seo&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6–8 siblings&lt;/strong&gt; (same service, different cities)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4–6 cross-category&lt;/strong&gt; links (other services, same city)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pages with fewer than ~10 internal links rarely get indexed by Bing at all. Build a &lt;code&gt;RelatedLinks&lt;/code&gt; component that generates this automatically for every page — don't hand-wire it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting indexed — the part everyone skips
&lt;/h2&gt;

&lt;p&gt;"Crawled — currently not indexed" is programmatic purgatory, and it's where thin sites go to die. Three layers get you out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;sitemap.xml&lt;/code&gt;&lt;/strong&gt; — one file is fine up to 50,000 URLs; segment by category above that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexNow&lt;/strong&gt; — ping &lt;code&gt;bing.com/indexnow&lt;/code&gt; + &lt;code&gt;yandex.com/indexnow&lt;/code&gt; on every deploy. Bing typically indexes within 24 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSC URL Inspection API&lt;/strong&gt; — request indexing for your highest-priority new URLs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On the framework side, &lt;code&gt;generateStaticParams&lt;/code&gt; prerenders one HTML file per entry at build time, and &lt;code&gt;generateMetadata&lt;/code&gt; gives each page a unique title + description. If build time explodes (50,000 pages × 30s = 17 hours), fall back to &lt;strong&gt;ISR&lt;/strong&gt; or per-category builds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 failure modes to memorize
&lt;/h2&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%2Fila6g0h8rb01qbafxcqc.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%2Fila6g0h8rb01qbafxcqc.png" alt="Why 80% of programmatic pages get deindexed — 5 failure modes and their fixes" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Thin content&lt;/strong&gt; — variable substitution only. → Fix: one unique data point per page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Near-duplicate pages&lt;/strong&gt; — same boilerplate, different noun. → Fix: 30–50 unique words of context each.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No search intent&lt;/strong&gt; — building pages for queries nobody types. → Fix: validate real volume &lt;em&gt;before&lt;/em&gt; building.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indexation never starts&lt;/strong&gt; — stuck in purgatory. → Fix: internal-link density + IndexNow + GSC.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build time explodes&lt;/strong&gt; — → Fix: ISR / incremental, per-category builds.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;Page count is not the risk; &lt;strong&gt;per-page utility is&lt;/strong&gt;. Sites with 100,000+ programmatic pages rank fine when each one earns its place — Zapier's integrations directory, Realtor's listings, Indeed's job pages. Sites with 500 thin pages get wiped in a single update. Build the data, wire the internal links, ping IndexNow, and only then scale.&lt;/p&gt;

&lt;p&gt;If you're planning a build like this, it's the kind of thing a &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;technical SEO team&lt;/a&gt; should scope &lt;em&gt;before&lt;/em&gt; you generate a single page — and a &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; will quickly tell you whether your existing programmatic pages are actually indexed or quietly stuck in purgatory.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Garvit Sharda of &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt;, a digital marketing and web agency focused on technical SEO and scalable content architecture.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>JavaScript SEO in 2026: The "Two Waves of Indexing" Myth, and What Googlebot Actually Keeps</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Fri, 31 Jul 2026 09:31:18 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/javascript-seo-in-2026-the-two-waves-of-indexing-myth-and-what-googlebot-actually-keeps-20lm</link>
      <guid>https://dev.to/garvit_sharda/javascript-seo-in-2026-the-two-waves-of-indexing-myth-and-what-googlebot-actually-keeps-20lm</guid>
      <description>&lt;p&gt;If you build with React, Vue, or any JavaScript framework and you care about organic traffic, there's a good chance you're still optimizing for a Google that no longer exists.&lt;/p&gt;

&lt;p&gt;For years the mental model was &lt;strong&gt;"two waves of indexing"&lt;/strong&gt;: Google reads your HTML in wave one, then comes back days or weeks later to run your JavaScript in wave two. That model — which Google itself presented back in 2018 — has quietly disappeared from the official documentation. In 2026, rendering is an &lt;strong&gt;asynchronous queue&lt;/strong&gt;, and Google's own docs now say a page &lt;em&gt;"may stay on this queue for a few seconds, but it can take longer than that."&lt;/em&gt; The famous "5-second JS execution limit"? Also not in the docs. It was never a hard rule.&lt;/p&gt;

&lt;p&gt;So the interesting question in 2026 isn't &lt;em&gt;when&lt;/em&gt; Google will run your JavaScript. It's &lt;strong&gt;what Google actually kept after it rendered your page&lt;/strong&gt; — because that's a very different thing, and it's where most JS sites quietly bleed traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Google actually processes a JS page now
&lt;/h2&gt;

&lt;p&gt;Three stages, in order: &lt;strong&gt;crawl → render → index.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Crawl.&lt;/strong&gt; Googlebot makes an HTTP request, checks &lt;code&gt;robots.txt&lt;/code&gt;, and parses whatever HTML comes back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render.&lt;/strong&gt; Every &lt;code&gt;200&lt;/code&gt; page gets queued for rendering in a headless, evergreen Chromium (it understands modern JS — ES2020+, dynamic &lt;code&gt;import()&lt;/code&gt;, even WebAssembly). Syntax support is &lt;em&gt;not&lt;/em&gt; your problem. Resource and queue constraints are.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index.&lt;/strong&gt; Google indexes the &lt;em&gt;rendered&lt;/em&gt; DOM and re-extracts links from it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One trap worth memorizing: &lt;strong&gt;if a &lt;code&gt;noindex&lt;/code&gt; is present in the initial HTML, Google may skip rendering entirely.&lt;/strong&gt; So the classic "we'll inject the right robots tag with JavaScript" plan can backfire — the script that was supposed to &lt;em&gt;remove&lt;/em&gt; the &lt;code&gt;noindex&lt;/code&gt; never runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure modes nobody warns you about
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable part. A client-side-rendered (CSR) page ships an almost-empty HTML shell; everything real arrives with the JS. When rendering succeeds and the content looks valuable, the page indexes fine. When it doesn't, you land in one of these buckets — all visible in Search Console:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Typical status&lt;/th&gt;
&lt;th&gt;Likely cause&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML is a shell, content from JS&lt;/td&gt;
&lt;td&gt;"Crawled – currently not indexed" &lt;em&gt;(or indexed empty)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Render failed or judged thin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client-side routing, empty states served as 200&lt;/td&gt;
&lt;td&gt;"Soft 404"&lt;/td&gt;
&lt;td&gt;No real error code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large JS site, new pages pending&lt;/td&gt;
&lt;td&gt;"Discovered – currently not indexed"&lt;/td&gt;
&lt;td&gt;Render queue / crawl budget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;title/canonical/robots injected via JS&lt;/td&gt;
&lt;td&gt;Duplicate / canonical conflicts&lt;/td&gt;
&lt;td&gt;Initial HTML disagrees with the render&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most insidious is the &lt;strong&gt;indexed-empty shell&lt;/strong&gt;: the URL is &lt;em&gt;in&lt;/em&gt; the index, but it ranks for nothing because Google kept the pre-JS shell. Nothing looks broken until you compare what got indexed with what should have.&lt;/p&gt;

&lt;p&gt;And "Soft 404" is a pure SPA disease: your router shows a "no results" view but the server still returns &lt;code&gt;200&lt;/code&gt;. Sold-out products, empty search pages, and misconfigured fallback routes generate these at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  CSR vs SSR vs SSG vs ISR, minus the dogma
&lt;/h2&gt;

&lt;p&gt;You don't need to server-render everything. You need SEO-critical content in the &lt;strong&gt;initial HTML response&lt;/strong&gt;. Quick decision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSR&lt;/strong&gt; — browser builds the DOM. Fine for dashboards behind a login; risky for anything you want ranked. Pure CSR can delay indexation enough to cost a large share of organic traffic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSR&lt;/strong&gt; — HTML per request. Best for dynamic or personalized content (e-commerce, feeds).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSG&lt;/strong&gt; — HTML at build time, served from a CDN. Ideal for blogs, docs, landing pages. Fastest TTFB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ISR&lt;/strong&gt; — SSG that revalidates in the background. The pragmatic 2026 default: static speed, fresh-enough data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The non-negotiable, regardless of framework: &lt;strong&gt;your &lt;code&gt;title&lt;/code&gt;, meta description, &lt;code&gt;H1&lt;/code&gt;, canonical, internal links, and structured data must exist in the server HTML&lt;/strong&gt; — not be painted in afterward. That's what lands cleanly in the index with zero dependency on a successful render.&lt;/p&gt;

&lt;p&gt;A few concrete gotchas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;strong&gt;History API&lt;/strong&gt; for SPA routing, not URL fragments — Googlebot can't reliably resolve &lt;code&gt;#/&lt;/code&gt; routes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fingerprint your assets&lt;/strong&gt; (&lt;code&gt;main.2bb85551.js&lt;/code&gt;). Googlebot's Web Rendering Service caches aggressively and may serve stale JS/CSS otherwise.&lt;/li&gt;
&lt;li&gt;Web components get flattened (shadow + light DOM), but only what's in the &lt;em&gt;rendered&lt;/em&gt; HTML is indexable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stop trusting your own crawler
&lt;/h2&gt;

&lt;p&gt;This is the mistake I see most. Teams run Screaming Frog or Sitebulb in render mode, see their content, and conclude "we're fine." But that only proves &lt;em&gt;your&lt;/em&gt; tool rendered it — with its engine, its timeouts, its settings. It says nothing about what &lt;strong&gt;Google&lt;/strong&gt; rendered or chose to keep.&lt;/p&gt;

&lt;p&gt;The source of truth is Search Console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;URL Inspection&lt;/strong&gt; shows Google's &lt;em&gt;own&lt;/em&gt; rendered HTML, the resources it loaded, and any JS exceptions it hit.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Page Indexing report&lt;/strong&gt; gives the verdict per URL, at scale.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On a big JS site the real question isn't "is this one URL rendered right?" — it's &lt;strong&gt;"what share of my JavaScript-dependent pages is actually indexed, and under which exclusion reasons?"&lt;/strong&gt; You answer that by bulk-inspecting your sitemap URLs against the official inspection data, not by re-rendering locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 2026 checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] SEO-critical content (title, H1, canonical, links, schema) is in the &lt;strong&gt;initial HTML&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;[ ] No &lt;code&gt;noindex&lt;/code&gt; in the served HTML that you intend to flip with JS&lt;/li&gt;
&lt;li&gt;[ ] SPA routing uses the History API; missing pages return a real &lt;code&gt;404&lt;/code&gt; server-side&lt;/li&gt;
&lt;li&gt;[ ] Assets are content-fingerprinted&lt;/li&gt;
&lt;li&gt;[ ] You verify indexation in &lt;strong&gt;Search Console&lt;/strong&gt;, not your own crawler&lt;/li&gt;
&lt;li&gt;[ ] Anything ranking-critical uses SSR/SSG/ISR, not pure CSR&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this requires abandoning your framework. It requires being deliberate about &lt;em&gt;where&lt;/em&gt; your HTML is generated for the pages that need to rank.&lt;/p&gt;

&lt;p&gt;If you'd rather have someone pressure-test your stack, this is exactly the kind of thing a &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;technical SEO team&lt;/a&gt; digs into — and running a &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; is a fast way to see which of your JS pages Google is quietly dropping before you refactor anything.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Garvit Sharda. I work with &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt;, a digital marketing and web agency, on technical SEO and front-end performance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>The 2026 AI-Crawler Reality Check: What the Data Says for Developers</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Fri, 24 Jul 2026 09:18:57 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/the-2026-ai-crawler-reality-check-what-the-data-says-for-developers-oh6</link>
      <guid>https://dev.to/garvit_sharda/the-2026-ai-crawler-reality-check-what-the-data-says-for-developers-oh6</guid>
      <description>&lt;p&gt;Everyone's writing think-pieces about "optimizing for AI search." I wanted numbers. So I pulled together the 2025-2026 data from Cloudflare, Vercel/MERJ, Ahrefs and the AI providers' own docs. Some of it genuinely changed how I build sites. Here's the reality check, dev to dev.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The AI crawlers do not run your JavaScript
&lt;/h2&gt;

&lt;p&gt;This is the big one. A Vercel/MERJ analysis of &lt;strong&gt;500M+ crawler fetches&lt;/strong&gt; found that &lt;strong&gt;none&lt;/strong&gt; of the major dedicated AI crawlers execute JavaScript — not OpenAI's &lt;code&gt;GPTBot&lt;/code&gt;/&lt;code&gt;OAI-SearchBot&lt;/code&gt;/&lt;code&gt;ChatGPT-User&lt;/code&gt;, not Anthropic's &lt;code&gt;ClaudeBot&lt;/code&gt;, not &lt;code&gt;PerplexityBot&lt;/code&gt;, not Meta or ByteDance's &lt;code&gt;Bytespider&lt;/code&gt;. They fetch your raw HTML and leave. They &lt;em&gt;do&lt;/em&gt; download JS files (~11.5% of ChatGPT's fetches, ~23.8% of Claude's) — they just never run them.&lt;/p&gt;

&lt;p&gt;The exception is &lt;strong&gt;Google&lt;/strong&gt;: its Web Rendering Service is shared across Search and Gemini, so Google-Extended renders JS the same way Googlebot does.&lt;/p&gt;

&lt;p&gt;Translation: if your content only exists after client-side hydration, every AI engine except Google sees an empty shell.&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="c"&gt;# see what the bots see&lt;/span&gt;
curl &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"GPTBot"&lt;/span&gt; https://yoursite.com/page | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"your headline"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that's empty, you need SSR, SSG, or prerendering.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. AI crawl traffic is exploding — and barely sends anything back
&lt;/h2&gt;

&lt;p&gt;Cloudflare's data shows AI crawler activity up sharply year over year, with &lt;strong&gt;GPTBot's volume up ~305%&lt;/strong&gt; and reaching &lt;strong&gt;~11.7% of all crawler requests&lt;/strong&gt; by mid-2025. But roughly &lt;strong&gt;86% of that crawling is for model training&lt;/strong&gt;, not live search retrieval.&lt;/p&gt;

&lt;p&gt;And the referrals? Lopsided doesn't cover it. Measured crawl-to-referral ratios hit &lt;strong&gt;~38,065:1 for Anthropic&lt;/strong&gt; and &lt;strong&gt;~1,091:1 for OpenAI&lt;/strong&gt;. They read enormously, cite rarely. AI tools still send &lt;strong&gt;under 1%&lt;/strong&gt; of outbound web traffic today.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The SERP is going zero-click
&lt;/h2&gt;

&lt;p&gt;By early 2026, roughly &lt;strong&gt;68% of Google searches ended without a click&lt;/strong&gt;, and pages with an AI Overview above them saw click-through drop by around &lt;strong&gt;60%&lt;/strong&gt;. Being "on page one" is worth less every quarter; being &lt;em&gt;the cited source&lt;/em&gt; is worth more.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Two overhyped tactics, with the data attached
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;llms.txt&lt;/strong&gt;: adoption grew ~8.8x, but in one May 2026 measurement &lt;strong&gt;97% of llms.txt files received zero requests&lt;/strong&gt;. OpenAI, Anthropic and Google all point site owners to &lt;code&gt;robots.txt&lt;/code&gt; instead. Add it if you like — it's a cheap static file — but don't expect it to do the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema/JSON-LD as a citation hack&lt;/strong&gt;: controlled analysis found schema presence &lt;strong&gt;does not independently predict AI citation&lt;/strong&gt; once you correct for content quality. Schema still earns rich results and disambiguates entities — just don't treat it as a magic AI-ranking lever.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What actually moves the needle
&lt;/h2&gt;

&lt;p&gt;Boring, durable engineering:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Server-render your content&lt;/strong&gt; — verify with &lt;code&gt;curl&lt;/code&gt;, not DevTools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow the retrieval bots&lt;/strong&gt; you want cited by in &lt;code&gt;robots.txt&lt;/code&gt;; block only what you must.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Answer-first, semantic HTML&lt;/strong&gt; — clean headings, real lists, a direct answer per section.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core Web Vitals&lt;/strong&gt;, INP included — fast pages get crawled more thoroughly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this is a hack. It's the same discipline as good, crawlable web engineering — which is why developers, not marketers, tend to be the ones who move AI visibility. It's the technical backbone of modern &lt;a href="https://www.com8.io/services/seo-agency-dubai/ai-seo" rel="noopener noreferrer"&gt;AI SEO&lt;/a&gt; and it overlaps almost entirely with classic &lt;a href="https://www.com8.io/services/seo-agency-dubai/technical-seo" rel="noopener noreferrer"&gt;technical SEO&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Build for the crawler that can't run your JavaScript, and you're ready for whatever the answer engines do next.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sources: Cloudflare Radar, Vercel/MERJ crawler study, Ahrefs brand-mentions analysis, and OpenAI/Anthropic/Google bot docs (2025-2026).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>seo</category>
      <category>webperf</category>
    </item>
    <item>
      <title>How AI Crawlers Actually Read Your Site: A Developer's Guide to GEO &amp; llms.txt (2026)</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Mon, 20 Jul 2026 06:19:12 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/how-ai-crawlers-actually-read-your-site-a-developers-guide-to-geo-llmstxt-2026-1d90</link>
      <guid>https://dev.to/garvit_sharda/how-ai-crawlers-actually-read-your-site-a-developers-guide-to-geo-llmstxt-2026-1d90</guid>
      <description>&lt;p&gt;Your users increasingly don't scroll ten blue links anymore. They ask ChatGPT, Perplexity, or Google's AI Overview a question and read one synthesized answer. For that answer to mention &lt;em&gt;your&lt;/em&gt; site, a machine has to crawl it, parse it, and decide your content is worth quoting.&lt;/p&gt;

&lt;p&gt;That whole pipeline is &lt;strong&gt;Generative Engine Optimization (GEO)&lt;/strong&gt; — and a surprising amount of it lives in the part of the stack &lt;em&gt;developers&lt;/em&gt; own, not the marketing team.&lt;/p&gt;

&lt;p&gt;Here's the one-line version: &lt;strong&gt;treat AI crawlers like a browser that never runs your JavaScript, and hand them clean, server-rendered, well-structured HTML.&lt;/strong&gt; Everything below unpacks what that means in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet the bots already hitting your server
&lt;/h2&gt;

&lt;p&gt;Open your access logs and you'll find a new class of user-agents. They fall into two jobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Training / indexing crawlers&lt;/strong&gt; — &lt;code&gt;GPTBot&lt;/code&gt; (OpenAI), &lt;code&gt;ClaudeBot&lt;/code&gt; (Anthropic), &lt;code&gt;PerplexityBot&lt;/code&gt;, and &lt;code&gt;Google-Extended&lt;/code&gt; (a token that controls whether your content is used for Gemini/AI, &lt;em&gt;separate&lt;/em&gt; from Googlebot).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live "user-triggered" fetchers&lt;/strong&gt; — &lt;code&gt;OAI-SearchBot&lt;/code&gt; and &lt;code&gt;ChatGPT-User&lt;/code&gt;, &lt;code&gt;Claude-User&lt;/code&gt;, &lt;code&gt;Perplexity-User&lt;/code&gt;. These hit your page in real time when someone's prompt needs a fresh source.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You control access to all of them from &lt;code&gt;robots.txt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight robot_framework"&gt;&lt;code&gt;User-agent: GPTBot&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Allow:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;User-agent:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Google-Extended&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Disallow:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/private&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Blocking them keeps you out of training data &lt;em&gt;and&lt;/em&gt; out of the answers your customers now read. For most businesses, being cited is the goal — so allow the retrieval bots deliberately.&lt;/p&gt;

&lt;h2&gt;
  
  
  The big one: most AI crawlers don't run your JavaScript
&lt;/h2&gt;

&lt;p&gt;Googlebot renders JavaScript with an evergreen Chromium engine. &lt;strong&gt;Most AI-specific crawlers do not.&lt;/strong&gt; They largely fetch your raw HTML response and move on. If your content only appears &lt;em&gt;after&lt;/em&gt; a client-side framework hydrates in the browser, there's a real chance the bot sees an empty &lt;code&gt;&amp;lt;div id="root"&amp;gt;&lt;/code&gt; and nothing else.&lt;/p&gt;

&lt;p&gt;Test it the way the bot does — no browser, no JS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"GPTBot"&lt;/span&gt; https://yoursite.com/your-page | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"the headline you expect"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your key content isn't in that response, AI engines probably can't read it. The fixes are the ones you already know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSR or SSG&lt;/strong&gt; (Next.js, Nuxt, Astro, SvelteKit) so HTML ships with content in it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prerender / dynamic rendering&lt;/strong&gt; for legacy SPAs you can't fully migrate.&lt;/li&gt;
&lt;li&gt;Keep the important text in the initial HTML, not lazy-loaded behind an interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This single architectural choice separates sites that get quoted from sites that are invisible to the models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure your HTML so a machine can extract answers
&lt;/h2&gt;

&lt;p&gt;Once the bytes arrive, the model has to &lt;em&gt;understand&lt;/em&gt; them. Semantic, answer-first HTML is the highest-leverage, least-hyped tactic here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, then a logical &lt;code&gt;&amp;lt;h2&amp;gt;/&amp;lt;h3&amp;gt;&lt;/code&gt; outline that reads like the questions people actually ask.&lt;/li&gt;
&lt;li&gt;Lead each section with a &lt;strong&gt;direct, self-contained answer&lt;/strong&gt;, then expand. Models lift clean, standalone sentences far more readily than points buried in a wall of text.&lt;/li&gt;
&lt;li&gt;Use real &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt; elements. Structured facts extract cleanly; &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; soup does not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add &lt;strong&gt;JSON-LD structured data&lt;/strong&gt; (&lt;code&gt;Organization&lt;/code&gt;, &lt;code&gt;Article&lt;/code&gt;, &lt;code&gt;FAQPage&lt;/code&gt;, &lt;code&gt;BreadcrumbList&lt;/code&gt;, &lt;code&gt;Product&lt;/code&gt;). Whether schema &lt;em&gt;directly&lt;/em&gt; boosts AI citations is still genuinely debated, and I won't oversell it — but it's cheap, it powers traditional rich results, and it removes ambiguity about what your entities are. Clean signals never hurt.&lt;/p&gt;

&lt;h2&gt;
  
  
  llms.txt: add it, but don't believe the hype
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;llms.txt&lt;/code&gt; is a proposed standard (introduced by Jeremy Howard in late 2024): a Markdown file at &lt;code&gt;/llms.txt&lt;/code&gt; that gives models a curated map of your most important content, minus the nav and cruft.&lt;/p&gt;

&lt;p&gt;The honest status in 2026: &lt;strong&gt;adoption among docs and dev-tool sites is real, but no major AI provider has publicly confirmed they consume it&lt;/strong&gt;, and skeptics (including voices at Google) have compared it to the old &lt;code&gt;keywords&lt;/code&gt; meta tag. Server logs rarely show the big crawlers fetching it.&lt;/p&gt;

&lt;p&gt;My take as a developer: it costs ten minutes and a static file, so add it — but treat it as a nice-to-have, not the thing that gets you cited. Your rendered HTML is still what matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speed is still a ranking &lt;em&gt;and&lt;/em&gt; crawling signal
&lt;/h2&gt;

&lt;p&gt;Core Web Vitals didn't go away. &lt;strong&gt;INP (Interaction to Next Paint) replaced FID in 2024&lt;/strong&gt; as the responsiveness metric, joining LCP and CLS. Fast, server-rendered pages get crawled more thoroughly and are less likely to time out a bot mid-fetch. The performance work you do for users pays off again for machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical GEO checklist
&lt;/h2&gt;

&lt;p&gt;If you do nothing else, ship these:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Server-render your content&lt;/strong&gt; — verify with &lt;code&gt;curl&lt;/code&gt;, not just DevTools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow the AI retrieval bots&lt;/strong&gt; you want to be cited by in &lt;code&gt;robots.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Answer-first sections&lt;/strong&gt; under a clean heading hierarchy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON-LD&lt;/strong&gt; for your core entities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meet Core Web Vitals&lt;/strong&gt;, INP included.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drop an &lt;code&gt;llms.txt&lt;/code&gt;&lt;/strong&gt; — low effort, possible upside.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this is a growth hack. It's the same discipline as good, crawlable web engineering — which is exactly why developers, not marketers, are often the ones who move the needle on it. This groundwork is the technical core of modern &lt;a href="https://www.com8.io/services/seo-agency-dubai/ai-seo" rel="noopener noreferrer"&gt;AI SEO&lt;/a&gt;, and it overlaps almost entirely with classic &lt;a href="https://www.com8.io/services/seo-agency-dubai/technical-seo" rel="noopener noreferrer"&gt;technical SEO&lt;/a&gt;: fast, semantic, server-rendered pages that both humans and machines can actually read.&lt;/p&gt;

&lt;p&gt;Build for the crawler that can't run your JavaScript, and you'll be ready for whatever the answer engines do next.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>ai</category>
      <category>webperf</category>
    </item>
    <item>
      <title>Getting Your Site Cited by AI Search in 2026: A Front-End Developer's Checklist</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Thu, 16 Jul 2026 05:32:53 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/getting-your-site-cited-by-ai-search-in-2026-a-front-end-developers-checklist-3p3j</link>
      <guid>https://dev.to/garvit_sharda/getting-your-site-cited-by-ai-search-in-2026-a-front-end-developers-checklist-3p3j</guid>
      <description>&lt;p&gt;AI answer engines — Google's AI Overviews, ChatGPT Search, Perplexity, Gemini — increasingly answer users without a click. For developers, that shifts the goal: it's no longer only "rank the page," it's "be the source the model quotes." The good news is that a lot of what makes a site citable is squarely front-end and infra work. Here's the checklist my team actually uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Server-render anything you want cited
&lt;/h2&gt;

&lt;p&gt;LLM crawlers are far better at parsing HTML that exists &lt;strong&gt;before&lt;/strong&gt; JavaScript runs. If your key content only appears after client-side hydration, assume it won't be reliably read.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prefer SSR or static generation (Next.js, Astro, Nuxt, etc.) for content pages.&lt;/li&gt;
&lt;li&gt;Verify what the bot actually sees:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://example.com/page | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"your answer text"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your content isn't in that output, a crawler probably can't see it either.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Ship structured data (JSON-LD)
&lt;/h2&gt;

&lt;p&gt;Schema doesn't guarantee a citation, but it makes your page cheaper for a machine to parse and reuse. Add &lt;code&gt;Article&lt;/code&gt;, &lt;code&gt;FAQPage&lt;/code&gt;, &lt;code&gt;HowTo&lt;/code&gt;, &lt;code&gt;Organization&lt;/code&gt;, and &lt;code&gt;BreadcrumbList&lt;/code&gt; where relevant:&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;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;FAQPage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mainEntity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Question&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What is answer-engine optimization?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;acceptedAnswer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Answer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;...&lt;/span&gt;&lt;span class="dl"&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="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate with Google's Rich Results Test before shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Write answer-first, chunk-friendly HTML
&lt;/h2&gt;

&lt;p&gt;Models extract self-contained passages. Structure content so each section stands alone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Put the direct answer in the first one or two sentences of a section, then expand.&lt;/li&gt;
&lt;li&gt;Use real semantic headings (&lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt;) phrased as questions.&lt;/li&gt;
&lt;li&gt;Short paragraphs, genuine lists, and tables beat walls of text.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Actually let the AI crawlers in
&lt;/h2&gt;

&lt;p&gt;You can't be cited if you block the bots. Check your &lt;code&gt;robots.txt&lt;/code&gt; — plenty of teams block these without realizing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight robot_framework"&gt;&lt;code&gt;User-agent: GPTBot&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Allow:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;User-agent:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;PerplexityBot&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Allow:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;User-agent:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Google-Extended&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Allow:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(&lt;code&gt;Google-Extended&lt;/code&gt; governs Gemini/Vertex grounding and training — decide deliberately rather than by accident.)&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Consider an llms.txt
&lt;/h2&gt;

&lt;p&gt;An emerging convention: a root-level &lt;code&gt;/llms.txt&lt;/code&gt; that points models at your cleanest, most important content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Example Co&lt;/span&gt;
&lt;span class="gt"&gt;&amp;gt; One-line description of what we do.&lt;/span&gt;

&lt;span class="gu"&gt;## Docs&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Getting started&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/docs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: setup guide
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;API reference&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/docs/api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: endpoints
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It isn't universally consumed yet, but it's cheap to add and forward-looking.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Keep it fast and stable
&lt;/h2&gt;

&lt;p&gt;Core Web Vitals still matter — for users, for classic SEO, and because slow, unstable pages get crawled less. Aim for LCP &amp;lt; 2.5s, INP &amp;lt; 200ms, CLS &amp;lt; 0.1.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Measure citations, not just clicks
&lt;/h2&gt;

&lt;p&gt;This is the hard part: an AI citation often produces &lt;strong&gt;no&lt;/strong&gt; referral in analytics. Track it directly — run your target prompts across ChatGPT, Perplexity, and Google's AI Mode on a schedule and log whether (and how) you appear. Then watch the small-but-high-intent referral traffic that AI &lt;em&gt;does&lt;/em&gt; send.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this nets out
&lt;/h2&gt;

&lt;p&gt;None of this replaces fundamentals — crawlability, real authority, and genuinely useful content still underpin everything. But the front end is where a surprising amount of "AI visibility" is won or lost. If you want a second pair of eyes on the technical and content side, this is the kind of &lt;a href="https://www.com8.io/services/seo-agency-dubai/ai-seo" rel="noopener noreferrer"&gt;answer-engine optimization work&lt;/a&gt; we do day to day, and a quick &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; tends to surface the crawlability and schema gaps fastest.&lt;/p&gt;

&lt;p&gt;What are you doing to make your sites citable? Curious what's working for others.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>ai</category>
      <category>webperf</category>
    </item>
    <item>
      <title>Conversion Rate Optimization for Developers: Front-End Changes That Actually Move the Needle</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Sat, 11 Jul 2026 19:10:01 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/conversion-rate-optimization-for-developers-front-end-changes-that-actually-move-the-needle-1pbg</link>
      <guid>https://dev.to/garvit_sharda/conversion-rate-optimization-for-developers-front-end-changes-that-actually-move-the-needle-1pbg</guid>
      <description>&lt;p&gt;Marketing teams obsess over conversion rate. Developers usually treat it as somebody else's metric. That is a mistake — a huge share of what decides whether a visitor converts is settled in the front-end: how fast the page paints, how the form behaves, and how little friction stands between intent and action.&lt;/p&gt;

&lt;p&gt;Here are the front-end changes that, in my experience, actually move conversion — not vanity tweaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Speed is a conversion feature, not just an SEO one
&lt;/h2&gt;

&lt;p&gt;Every study on this says the same thing: conversion rate drops as load time climbs, and the fall is steepest in the first few seconds. A checkout that takes 5s to become interactive loses buyers who would have completed at 2s. So the same Core Web Vitals work you do for rankings pays a second dividend at the cash register. Prioritise the Largest Contentful Paint element, defer third-party scripts until interaction, and keep the main thread free so taps respond instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Fix your forms — this is where money leaks
&lt;/h2&gt;

&lt;p&gt;Forms are the highest-leverage surface on any lead-gen or checkout page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the correct &lt;code&gt;type&lt;/code&gt; and &lt;code&gt;autocomplete&lt;/code&gt; tokens (&lt;code&gt;email&lt;/code&gt;, &lt;code&gt;tel&lt;/code&gt;, &lt;code&gt;one-time-code&lt;/code&gt;, &lt;code&gt;cc-number&lt;/code&gt;). Mobile keyboards and autofill do half the work for the user.&lt;/li&gt;
&lt;li&gt;Validate inline on &lt;code&gt;blur&lt;/code&gt;, not only on submit. Telling someone their email is wrong &lt;em&gt;after&lt;/em&gt; they hit submit is the fastest way to lose them.&lt;/li&gt;
&lt;li&gt;Never disable the submit button waiting for "perfect" input — let them submit and show clear, specific errors.&lt;/li&gt;
&lt;li&gt;Cut every field you do not truly need. Each optional field measurably lowers completion.
&lt;/li&gt;
&lt;/ul&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;input&lt;/span&gt;
  &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;autocomplete=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;inputmode=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;
  &lt;span class="na"&gt;required&lt;/span&gt;
  &lt;span class="na"&gt;aria-describedby=&lt;/span&gt;&lt;span class="s"&gt;"email-err"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Kill layout shift and interaction jank
&lt;/h2&gt;

&lt;p&gt;Cumulative Layout Shift is not just a Core Web Vitals metric — a button that jumps as an ad loads causes mis-taps and rage clicks. Reserve space for media, ads, and embeds with explicit dimensions or &lt;code&gt;aspect-ratio&lt;/code&gt;, and never inject content above content the user is already reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Make the primary CTA unmissable and honest
&lt;/h2&gt;

&lt;p&gt;One primary action per screen, high contrast, describing what happens ("Get my free audit", not "Submit"). Secondary actions get secondary styling. If a user has to hunt for the button, you have already lost some of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Instrument everything — measure, do not guess
&lt;/h2&gt;

&lt;p&gt;You cannot optimise what you do not track. Fire structured events for form starts, field abandonment, CTA clicks, and completions. The gap between "form started" and "form completed" is a treasure map of exactly where users drop. The teams we work with treat CRO and &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;conversion-focused web development&lt;/a&gt; as a single discipline precisely because the fixes live in the code, but the priorities come from the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. A/B test without tanking performance
&lt;/h2&gt;

&lt;p&gt;Client-side testing tools are notorious for causing flicker (FOOC — flash of original content) and adding render-blocking JS, which &lt;em&gt;reduces&lt;/em&gt; the very conversions you are trying to lift. Prefer server-side or edge experiments where you can, keep the variant logic tiny, and always measure the performance cost of the testing tool itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  A realistic workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Instrument the funnel and find the biggest drop-off.&lt;/li&gt;
&lt;li&gt;Form a hypothesis about &lt;em&gt;why&lt;/em&gt; (usually friction, confusion, or speed).&lt;/li&gt;
&lt;li&gt;Ship the smallest front-end change that tests it.&lt;/li&gt;
&lt;li&gt;Measure against a real baseline, not a gut feeling.&lt;/li&gt;
&lt;li&gt;Keep the winners, revert the losers, repeat.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is unglamorous, iterative work, but it compounds. We have documented the impact of this exact loop in our &lt;a href="https://www.com8.io/case-studies" rel="noopener noreferrer"&gt;case studies&lt;/a&gt; — small, disciplined front-end changes adding up to double-digit conversion gains.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fast pages convert better — reuse your Core Web Vitals work.&lt;/li&gt;
&lt;li&gt;Forms are where money leaks: correct input types, inline validation, fewer fields.&lt;/li&gt;
&lt;li&gt;Reserve space to stop layout shift and mis-taps.&lt;/li&gt;
&lt;li&gt;One clear, honest primary CTA per screen.&lt;/li&gt;
&lt;li&gt;Instrument the funnel; optimise the biggest drop-off first.&lt;/li&gt;
&lt;li&gt;A/B test without adding render-blocking flicker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conversion is not a marketing-only concern. It is a front-end responsibility — and one of the highest-ROI things you can ship.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at &lt;a href="https://www.com8.io/contact-us" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt; — a digital marketing and web development agency helping brands across the UAE and US turn traffic into customers.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ux</category>
      <category>seo</category>
    </item>
    <item>
      <title>Structured Data in 2026: How Developers Get Their Content Cited by AI Search</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Sat, 11 Jul 2026 12:45:20 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/structured-data-in-2026-how-developers-get-their-content-cited-by-ai-search-7a5</link>
      <guid>https://dev.to/garvit_sharda/structured-data-in-2026-how-developers-get-their-content-cited-by-ai-search-7a5</guid>
      <description>&lt;p&gt;Search is splitting in two. Classic blue links are still there, but a growing share of queries now get answered directly — by Google's AI Overviews, and by ChatGPT, Perplexity, and Claude. For developers, the practical question is: what do you put in your HTML so a machine can confidently extract and cite your content?&lt;/p&gt;

&lt;p&gt;The answer is mostly structured data — Schema.org vocabulary expressed as JSON-LD. It is the same technology that has powered rich results for years, but it matters more than ever now that LLM-based answer engines lean on it to understand entities and relationships.&lt;/p&gt;

&lt;p&gt;Here is a developer-focused rundown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why JSON-LD (not Microdata or RDFa)
&lt;/h2&gt;

&lt;p&gt;You can express Schema.org three ways, but JSON-LD wins for one reason: it lives in a single &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; block, decoupled from your markup. You do not have to thread &lt;code&gt;itemprop&lt;/code&gt; attributes through your components, and it is trivial to generate from the same data you already render.&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;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Acme Co&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://acme.example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://acme.example/logo.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sameAs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.linkedin.com/company/acme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://twitter.com/acme&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google, Bing, and the crawlers behind AI answer engines all parse this block first.&lt;/p&gt;

&lt;h2&gt;
  
  
  The schema types worth your time
&lt;/h2&gt;

&lt;p&gt;You do not need all 800+ Schema.org types. In practice, 90% of the value comes from a handful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Organization / LocalBusiness&lt;/strong&gt; — who you are, your logo, address, and &lt;code&gt;sameAs&lt;/code&gt; links to your social and authority profiles. This is what builds your &lt;em&gt;entity&lt;/em&gt; in the knowledge graph.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebSite&lt;/strong&gt; with &lt;code&gt;SearchAction&lt;/code&gt; — enables the sitelinks search box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Article / BlogPosting&lt;/strong&gt; — author, &lt;code&gt;datePublished&lt;/code&gt;, &lt;code&gt;headline&lt;/code&gt;, &lt;code&gt;image&lt;/code&gt;. Critical for being cited as a source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BreadcrumbList&lt;/strong&gt; — helps crawlers understand site hierarchy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FAQPage&lt;/strong&gt; — pairs a question with an answer, which answer engines love to lift verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product / Offer&lt;/strong&gt; and &lt;strong&gt;Review / AggregateRating&lt;/strong&gt; — commerce rich results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The sameAs trick for entity SEO
&lt;/h2&gt;

&lt;p&gt;If you do one thing, do this: add a complete &lt;code&gt;sameAs&lt;/code&gt; array to your Organization schema, pointing at every authoritative profile you own — LinkedIn, Crunchbase, GitHub, Wikidata if you have it. This is how you tell machines "all of these identities are the same entity," which is the foundation of &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;answer engine optimization&lt;/a&gt;. Without a strong entity, you do not get surfaced in generated answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate before you ship
&lt;/h2&gt;

&lt;p&gt;Never hand-write JSON-LD and hope. Two free tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Schema.org Validator&lt;/strong&gt; (validator.schema.org) — catches vocabulary errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Rich Results Test&lt;/strong&gt; — tells you which rich results you actually qualify for.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Wire the validator into CI if structured data is business-critical. A single malformed date or missing required field silently disqualifies you from rich results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generating schema in a component framework
&lt;/h2&gt;

&lt;p&gt;The clean pattern in React/Next.js, Vue/Nuxt, or Astro is to build the object server-side and serialize it once:&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;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ArticleSchema&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;post&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;json&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BlogPosting&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;datePublished&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;publishedAt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Person&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;coverImage&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="nt"&gt;script&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;
      &lt;span class="na"&gt;dangerouslySetInnerHTML&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="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;)&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;
  &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;Serialize with &lt;code&gt;JSON.stringify&lt;/code&gt; (not a template literal) so quotes and special characters escape correctly — a classic source of invalid markup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rendering matters: do not hide it behind client-side JS
&lt;/h2&gt;

&lt;p&gt;Answer-engine crawlers are far less patient than Googlebot about executing JavaScript. If your JSON-LD is injected only after hydration, some crawlers will not see it. Server-render or statically generate your structured data. This is the same crawlability principle that underpins all technical SEO — if a bot cannot cheaply read it, it does not count. When we run &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;a technical SEO audit&lt;/a&gt;, missing or client-only structured data is one of the most common issues we flag.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;JSON-LD&lt;/strong&gt; in a &lt;code&gt;&amp;lt;script type="application/ld+json"&amp;gt;&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;Prioritise &lt;strong&gt;Organization, Article, FAQPage, BreadcrumbList&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Build a complete &lt;strong&gt;&lt;code&gt;sameAs&lt;/code&gt;&lt;/strong&gt; array — it is the backbone of entity and answer-engine SEO.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate&lt;/strong&gt; (Schema.org Validator + Rich Results Test), ideally in CI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server-render&lt;/strong&gt; it so every crawler sees it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Structured data used to be about star ratings in the search results. In 2026 it is about whether an AI names &lt;em&gt;you&lt;/em&gt; as the source. Ship it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at &lt;a href="https://www.com8.io/about-us" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt; — a digital marketing and web development agency specialising in SEO, AEO/GEO, and web engineering for brands across the UAE and US.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>ai</category>
    </item>
    <item>
      <title>Core Web Vitals in 2026: A Front-End Checklist That Also Boosts SEO</title>
      <dc:creator>Garvit Sharda</dc:creator>
      <pubDate>Sat, 11 Jul 2026 11:50:28 +0000</pubDate>
      <link>https://dev.to/garvit_sharda/core-web-vitals-in-2026-a-front-end-checklist-that-also-boosts-seo-1no0</link>
      <guid>https://dev.to/garvit_sharda/core-web-vitals-in-2026-a-front-end-checklist-that-also-boosts-seo-1no0</guid>
      <description>&lt;p&gt;Performance work used to be the thing front-end teams did "if there was time left." In 2026 it is table stakes. Core Web Vitals are a confirmed Google ranking input, and real users bounce from anything that feels sluggish on a mid-range Android phone over a flaky mobile connection.&lt;/p&gt;

&lt;p&gt;This is the checklist I keep coming back to when I audit a site. It is written for developers, but every item also moves the SEO needle — which is exactly why performance and search visibility have stopped being two separate conversations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three metrics that actually matter
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Largest Contentful Paint (LCP)&lt;/strong&gt; — aim for under 2.5s. This is almost always your hero image or main headline. Quick wins: serve correctly sized images in AVIF/WebP, add &lt;code&gt;fetchpriority="high"&lt;/code&gt; to the LCP image, preload the hero font, and remove render-blocking CSS from the critical path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interaction to Next Paint (INP)&lt;/strong&gt; — aim for under 200ms. INP replaced First Input Delay in 2024 and it is far less forgiving. It measures the latency of &lt;em&gt;every&lt;/em&gt; interaction on the page, not just the first one. Wins: break up long tasks, &lt;code&gt;yield&lt;/code&gt; back to the main thread, debounce expensive handlers, and push non-urgent work into &lt;code&gt;requestIdleCallback&lt;/code&gt; or a web worker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cumulative Layout Shift (CLS)&lt;/strong&gt; — aim for under 0.1. Wins: set explicit &lt;code&gt;width&lt;/code&gt;/&lt;code&gt;height&lt;/code&gt; or &lt;code&gt;aspect-ratio&lt;/code&gt; on all media, reserve space for ads and embeds, and never insert content above content that has already rendered.&lt;/p&gt;

&lt;h2&gt;
  
  
  The checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Images
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Convert to AVIF with a WebP fallback.&lt;/li&gt;
&lt;li&gt;Use responsive &lt;code&gt;srcset&lt;/code&gt;/&lt;code&gt;sizes&lt;/code&gt; so phones never download desktop-sized artwork.&lt;/li&gt;
&lt;li&gt;Lazy-load everything below the fold with &lt;code&gt;loading="lazy"&lt;/code&gt; — but eager-load the LCP image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fonts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Self-host and subset your fonts. A third-party font CDN adds a DNS lookup and a connection you do not control.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;font-display: swap&lt;/code&gt; so text paints immediately.&lt;/li&gt;
&lt;li&gt;Preload only the one or two weights you actually use above the fold.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  JavaScript
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Audit the bundle. A brochure or marketing site rarely needs 400KB of JS.&lt;/li&gt;
&lt;li&gt;Code-split by route and defer everything non-critical.&lt;/li&gt;
&lt;li&gt;Swap heavy date/utility libraries for native APIs (&lt;code&gt;Intl&lt;/code&gt;, &lt;code&gt;structuredClone&lt;/code&gt;, &lt;code&gt;URLSearchParams&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Delay third-party tags — chat widgets, analytics, heatmaps — until the first user interaction. These are the number-one INP killers I see in real audits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Delivery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Serve over HTTP/2 or HTTP/3 from a CDN.&lt;/li&gt;
&lt;li&gt;Set a long &lt;code&gt;Cache-Control&lt;/code&gt; for hashed static assets.&lt;/li&gt;
&lt;li&gt;Turn on Brotli compression.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Measure the way Google measures
&lt;/h2&gt;

&lt;p&gt;Lab tools like Lighthouse are great for catching regressions in CI, but Google ranks on field data — the Chrome User Experience Report (CrUX) gathered from real Chrome users. A site can score a perfect 100 in Lighthouse and still fail Core Web Vitals in the field, because your actual visitors are on slower devices and worse networks than your dev laptop.&lt;/p&gt;

&lt;p&gt;So run all three:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lighthouse in CI to catch obvious regressions before they ship.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;web-vitals&lt;/code&gt; npm package in production, streaming real INP/LCP/CLS into your analytics.&lt;/li&gt;
&lt;li&gt;The Core Web Vitals report in Search Console — that is the CrUX data Google actually ranks on.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why front-end performance is an SEO strategy
&lt;/h2&gt;

&lt;p&gt;Here is the part the product and marketing side cares about: faster pages rank higher and convert better. Google has said plainly that Core Web Vitals act as a tiebreaker between pages of comparable relevance, and the correlation between a slow LCP and a high bounce rate is brutal. Every 100ms you shave off is measurable revenue on a commerce or lead-gen site.&lt;/p&gt;

&lt;p&gt;That overlap is why the teams I work with treat performance budgets and &lt;a href="https://www.com8.io/services" rel="noopener noreferrer"&gt;technical SEO&lt;/a&gt; as a single workstream instead of two competing backlogs. When engineering owns Core Web Vitals, the SEO team stops filing tickets for problems the front-end already fixed.&lt;/p&gt;

&lt;p&gt;If you want an outside read on where a site currently stands, a structured &lt;a href="https://www.com8.io/free-seo-audit" rel="noopener noreferrer"&gt;free SEO audit&lt;/a&gt; will surface the CWV failures, crawl and indexation issues, and rendering problems in one pass — and, satisfyingly, most of the recommended fixes land right back in the front-end checklist above.&lt;/p&gt;

&lt;h2&gt;
  
  
  A note on frameworks
&lt;/h2&gt;

&lt;p&gt;None of this is framework-specific, but a few defaults help. Next.js and Nuxt give you image optimization and route-level code splitting for free. Astro and other "islands" frameworks ship near-zero JS by default, which is fantastic for content sites. SvelteKit and SolidStart compile away a lot of runtime overhead. Whatever you use, the metrics do not care about your framework — they care about bytes, main-thread time, and layout stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LCP &amp;lt; 2.5s — optimize hero image + font&lt;/li&gt;
&lt;li&gt;INP &amp;lt; 200ms — break up long tasks, defer third-party JS&lt;/li&gt;
&lt;li&gt;CLS &amp;lt; 0.1 — reserve space for media and ads&lt;/li&gt;
&lt;li&gt;AVIF/WebP + responsive images&lt;/li&gt;
&lt;li&gt;Self-hosted, subset fonts&lt;/li&gt;
&lt;li&gt;Route-based code splitting&lt;/li&gt;
&lt;li&gt;CDN + Brotli + HTTP/3&lt;/li&gt;
&lt;li&gt;Measure field data, not just Lighthouse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Performance is a feature. Budget for it, measure it in the field, and ship it like one.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at &lt;a href="https://www.com8.io/" rel="noopener noreferrer"&gt;COM8 STUDIO&lt;/a&gt; — a digital marketing and web development agency working with brands across the UAE and US.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>performance</category>
      <category>seo</category>
    </item>
  </channel>
</rss>
