Google has updated its developer documentation to warn about sites using JavaScript-generated Product markup and that the search company recommends putting Product markup in the initial HTML for best results.
To be clear, Google said JavaScript-generated Product markup can work but you need to ensure your server can render the pages fast enough for Googlebot. Google wrote, "We recommend putting Product markup in the initial HTML for best results, and making sure that your server can handle increased traffic if you're generating Product markup with JavaScript."
There were two documents that were changed:
(1) Merchant listing (Product, Offer) structured data:
Google added here two bullet points:
- If you're a merchant optimizing for all types of shopping results, we recommend putting Product structured data in the initial HTML for best results.
- For JavaScript-generated Product markup: Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price. If you're using JavaScript to generate Product markup, make sure your server has enough computing resources to handle increased traffic from Google.
(2) Generate structured data with JavaScript:
Google added this notation at the top of this document:
Using Product markup? Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price. If you're a merchant optimizing for all types of shopping results, make sure your server has enough computing resources to handle increased traffic from Google.
This is similar to what we covered here and covered here. I suspect the fix Google was going to do was just updating the documents, or maybe not?
Martin Splitt from Google said this morning on LinkedIn:
We can render just fine, but it introduces variables that can increase complexity and together with the creativity of the people making websites that can invite trouble sometimes. That being said, most of the time Javascript is blamed for a problem it turns out not to be the troublemaker in the end.Sometimes we also have bugs in our code and recently one of these bugs actually did involve Javascript, so it's not impossible for Javascript to be involved in problems tho.
Here is a visualization of those changes:
Forum discussion at LinkedIn.