How to set SEO for Blaze?


I heard that Google not going to allow Ajax Crawling any more, and found out that I need SSR for SEO.
I read few articles about React for SEO, but not for Blaze.
Can you guys please recommend the way to do that?


Where did you hear that? You don’t need to use SSR at all, you can use a service like Prerender to crawl your Meteor app, and Prerender will serve the content to bots. All it takes (if you’re running nginx to proxy to your Meteor app) is a bit of simple nginx configuration and it’s done. No code needed.


Oh !!! Thanx for reply!
I heard that from my friend, so I searched about it

from here, and I think that you’re right !
Anyway, Prerender is looking good!
I’ll try for that !


dochead is the package you are looking for


@prograpper As I understand Google right, they deprecated the old “?escaped_fragment” schema. Now you shouldn’t need any tools like Spiderable or Prerender anymore to serve content to Google, because their engine will now render all Javascript pages automatically.


Oh wow, thanks for that link! We’ve been using _escaped_fragment_ and Prerender. I might have to put up a test site and have Google crawl it to see how well it works.


Though I’d like to point out this part of the article you shared:

A: No, the site would still be indexed. In general, however, we recommend you implement industry best practices when you’re making the next update for your site. Instead of the _escaped_fragment_ URLs, we’ll generally crawl, render, and index the #! URLs.

They will generally crawl, render, and index “the #! URLs.” Meteor doesn’t use hash-bang URLs, so this tells me that Meteor apps still need _escaped_fragment_ and have to use a service like Prerender or the spiderable package. Someone correct me if I’m wrong.


I’ve been doing some tests with Google Webmaster Tools and looking at how it fetches and renders Meteor apps. There’s good news and bad news.

The good news: there’s no more trickery needed to get Google to crawl and cache your Meteor app! No SSR, no _escaped_fragment_ meta tag, no, nothing. GoogleBot has become ultra intelligent and can render page content like a boss.

The bad news: if your page(s) takes a while to load, Google doesn’t know what to do with that. If you have, for instance, the text “Loading…” then Google will see that and think that’s your content. It has no idea what a loading state is. The meteorhacks:fast-render package may help in some instances, but not if your data takes more than a second or two to load.


You still need support for _escaped_fragment_ for other crawlers, like the facebook debugger. If that matters to you (in my use case it does), keep that in mind!


True! I should’ve clarified, this is only for the Google crawler. FB, Bing, etc, will still send _escaped_fragment_ and expect to get back a rendered page.