Skip to content

·Naasson Apps

Why our product gallery is not a carousel

Every product on this site is a real page. That decision was made for machines that do not run JavaScript.

The front page of this site looks like a slider. Arrows, a big square, one product at a time. Under the surface it is not a slider at all — every arrow is an ordinary link, and every product is its own statically generated page.

That is a deliberate choice, and the reason is unglamorous.

Crawlers stopped at HTML

Measurements on live traffic show that the crawlers behind AI answers — GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot — fetch JavaScript files and never execute them. Whatever a page renders on the client simply does not exist for them.

A conventional carousel keeps one route and swaps content with pushState. Users see nine products. Every AI crawler sees one, forever. Search engines that do render JavaScript still make their first indexing pass on the raw HTML, where nine products share a single title and description.

What we did instead

Nine products, nine routes, nine pre-rendered documents with their own titles, descriptions, canonicals and structured data. The arrows are <a href> elements, so the site is fully navigable with JavaScript disabled.

The animation — the outgoing cover shrinking into a side thumbnail while the next one unfolds into the centre — comes from the View Transitions API. The same cover carries the same transition name on both pages, and the browser morphs one into the other. We wrote no animation code at all.

The test that matters

curl -s https://naasson.com/en/products/observability | grep '<title>'

If two different products return the same title, the architecture is wrong. That single command is worth more than most SEO audits.