# 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.

Source: https://naasson.com/en/blog/why-the-gallery-is-not-a-carousel/
Published: 2026-07-18
Language: en
Product: Naasson Apps (https://naasson.com/en/products/naasson-apps/)
Publisher: Naasson — https://naasson.com

---
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

```bash
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.