SPA is a modern way to build websites by loading content from a server without traditional page loads by loading all the content on a single page. While the methodology has its benefits in terms of performance and design, implementing Nosto on such a site is always a customized setup despite the used e-commerce platform or software.

Since the site content is loaded in a browser dynamically and without page loads, it fundamentally makes Nosto’s recrawling validation process of product data redundant as a crawler can’t read product tagging due to the fact tagging is not generated server-side, but in a client (web-browser). Basically the site shows to Nosto’s crawler as a single page hence use of crawling is redundant.

In addition, most of Nosto extensions are built based on regular page structure, meaning that required Nosto tagging most likely doesn’t exist by default on sites built as an SPA.

Therefore an SPA implementation requires following steps:

  • The site still needs to produce product tagging, albeit this is done dynamically in a client typically using preferred scripting language. Alternatively, the tagging can be part of the page template, but needs to be loaded by using Nosto’s javascript API when a customer moves from a page to another.
  • In most cases, Nosto’s support needs to disable crawling process entirely based on a request. An exception to this is that when a product page can be referred by a url and the tagging exists on page’s Html structure.
  • The site needs to leverage Nosto’s product API to import product data to Nosto from the site’s back-office as the crawling-process is disabled and made obsolete. Product data needs to be consistent with the tagging.
  • The site needs to re-initiate Nosto’s script leveraging Nosto Javascript API on pages where on-site recommendations are deployed as this loads the content from Nosto’s servers to a client.

Otherwise the implementation and setup is normal and doesn’t pose any limitations to use of Nosto on a site built as an SPA.

Did this answer your question?