Does Google crawl dynamic content?

For the purpose of validating the technical concepts behind distributed content service Teletext.io, here is a series of experiments to see what gets indexed and what doesn't if javascript and Google Tag Manager are used to inject content and JSON-LD in your page.

Update this was posted to Google on Friday the 17th of July, 2015. Monday, the 20th, I checked the results.
The management summary: Google crawls and indexes all content injected by javascript, independent of whether it is synchronously or asynchronously injected.
However, JSON-LD content fails to show up in the search results.

Result

Meta elements injection

Synchronously, the meta description was replaced by another one containing a unique string.

Test content

For the test to be succesful, the following content should get indexed and shown as the description in the SERP. Compare the unique string. Note: the next experiment might overrule this one.

Result

This experiment was considered a success, because the next experiment succeeded - leading to an overwritten description.

Meta elements injection, asynchronous

Using a time-out function, the meta description was replaced with a new one, containing a unique string.

Test content

For the test to be succesful, the following content should get indexed and shown as the description in the SERP. Compare the unique string. If this experiment is succesful, the previous one will also work.

Result

Google definitely indexes this content. This means the previous experiment is also valid.

Conclusion

The following can be concluded.

Google crawls and indexes all content that was injected by javascript.

Google even shows results in the SERP that are based on asynchronously injected content.

Google can handle content from httpRequest().

However, JSON-LD as such does not necessarily lead to SERP results (as opposed to the officially supported SERP entities that are not only indexed, but also used to decorate the SERP).

Injected JSON-LD gets recognised by the structured data testing tool - including Tag Manager injection. This means that once Google decides to support the entities, indexing will not be a problem.

Dynamically updated meta elements get crawled and indexed, too.

So, very soon, the days of pre-rendering PhantomJs snapshots and serving shadow content to spiders will be over. That makes me happy.