Startinblox and SEO

Here is a list of SEO concerns and some solutions to explore. All the tests have been made with happy-dev.fr

Problems

1 - Startinblox apps are SPA

All the content is loaded at once when the page is loaded. It means that no matter which page GoogleBot (🤖 starting from now) is crawling, it will see almost the same content every time.
In the search console, we can see that all the pages found by 🤖 have been marked as equivalent as the homepage.
Two problems: it is seen as duplicate content & only the homepage is considered by the bot

2 - According to 🤖, we have no links between pages

🤖 is able to follow a link if:

  • the html element is a <a>
  • the <a> has an href attribute

We don't comply with any of these requirements

3 - We have only one <title> and one <meta description> per app

One of the most important thing for 🤖 to index the content properly is to have a unique title attribute and meta description.
Here we have only one for the whole website (which kind of make sense because we also have only one HTML file).
It is strongly recommended to have one per page.

4 - Javascript is probably not always executed properly

After a few tests of indexing a page with the search console, we can see that almost half of the time, the rendering is not complete. According to a Google video, even if it's supposed to work, "we can't rely on javascript with web crawlers".
Probably that our "long" rendering time are causing some troubles to the 🤖.
ie: About Us seems ok, not the manifesto

5 - We don't have canonical URLs

For the multisite languages, we don't have link canonical which defines the equivalence between pages

Solutions

1 - Use a sitemap

It can be a way to tell the 🤖 where to look to index all the pages. It could be auto generated.
Problems solved: 2 - 5

2 - Use hidden links

We can automatically insert a hidden link (<a href=link hidden>) next to each sib-link and sib-route.
However, if it's hidden on the page, 🤖 may not follow them, or at least give them less credit.
Problems solved: 2?

3 - Use pre-rendering

As explained in the Google Blog, we can use a dynamic rendering. It consists of:

  • check the user-agent of the client.
  • if it's a bot, we generate an HTML page according to the request
  • we send it as a response

We could also replace each <sib-link> by a <a> at this moment.
The problem is that we need to setup systems like rendertron or prerender on the server which loads the app.
Problems solved: 1 - 2 - 3 - 4

Any insight @sylvain @balessan @clement @alexandre?