JavaScript SEO should be a solved problem by now. It isn’t.

Ecommerce sites keep hitting the same crawling, rendering, and indexing issues they were five years ago, now stacked on top of headless builds, AI-powered recommendations, and frameworks that can hide critical content from Google.

These top ecommerce players have figured out how to ship fast, modern JavaScript without sacrificing organic visibility. Here are five lessons worth stealing.

1. Chewy uses JavaScript for UX

Chewy is one of the largest online retailers of pet food and supplies in the U.S. They use Next.js, a React framework for building websites with built-in support for server rendering, static generation, and full-stack development features.

That means you can put important content in the initial HTML response without relying on client-side JavaScript.

Let’s look at a product page like the Benebone Wishbone Chew Toy.

Chewy product pageChewy product page

Navigate to View Page Source and you’ll see the product title, description, pricing, reviews, Q&A, and breadcrumb navigation all present in the initial HTML. Googlebot can access it on the first pass, without waiting for rendering.

Chewy page sourceChewy page source

That’s important because if a web crawler like Googlebot encounters issues rendering your page, the important content can still be parsed on the first crawl. With the rise of AI chatbots, some of which still don’t render JavaScript, this has become even more important.

Not everything needs to be in the initial HTML, though. Without client-side JavaScript, the page would feel static and clunky.

Take the “Compare Similar Items” carousel. It’s loaded client-side, primarily there for shoppers. The internal links could offer some SEO benefit, but they’re not critical for indexing this page the way the title, description, and pricing are.

Chewy similar items carouselChewy similar items carousel

Chewy gets this balance right. The content that matters most for indexing is available on initial load. Client-side JavaScript enhances the experience rather than delivering the content that needs to be indexed.

Your customers search everywhere. Make sure your brand shows up.

The SEO toolkit you know, plus the AI visibility data you need.

Start Free Trial

Get started with

Semrush One LogoSemrush One Logo

2. Myprotein makes navigation crawlable

Myprotein sells supplements, nutrition products, and some fitness apparel.

Their site is built on Astro, a content-first framework using Islands Architecture to ship zero JavaScript by default while supporting components from React, Vue, or Svelte.

Myprotein’s navigation is the part worth studying. It’s an important SEO area for ecommerce sites, and they get it right.

Myprotein navigationMyprotein navigation

View the source on any Myprotein page and the navigation links (categories, dropdown items, and footer links) are all in the initial HTML response. Astro makes this possible through its island architecture.

Myprotein source codeMyprotein source code

The navigation ships as an interactive island, meaning Astro will hydrate it with JavaScript as soon as the browser is ready. But JavaScript makes the flyout menus interactive. It doesn’t create them.

These links are also proper elements with href attributes, which is what crawlers like Googlebot need to discover and follow links. Avoid using JavaScript click handlers to simulate navigation, such as:

Clear Protein Drinks

A crawler won’t follow that. Use a standard anchor element instead:

Clear Protein Drinks

Not every site gets this right. When navigation depends entirely on client-side rendering, there’s a window where it’s invisible or empty.

Googlebot processes JavaScript in a separate rendering pass that can lag behind the initial crawl, which can mean delayed discovery of internal links critical for crawl efficiency and link equity distribution.

3. Harrods embeds structured data in the HTML

Harrods is a luxury department store selling fashion, beauty, and homeware.

Their site is built on Nuxt, a Vue framework for building websites with built-in routing, server rendering, and static generation, plus an opinionated project structure.

Their structured data is delivered in the initial HTML response. View the source on any product page and you’ll find structured data inside a