Search code examples
javascriptangularjsexpressmean-stackmeanjs

Is search engine optimization on a mean.js full stack javascript application still a major issue an how should it be dealt with


I am working on my first full stack javascript application using specifically mean.js as my start point, and I have started to become nervous and somewhat confused around the issue of search engine optimization (SEO).

Has Googles recent efforts (within last year or so), to improve javascript crawling rendered this a non issue, or is this something I need to take account of in the planning and structuring of my project?

If Google can crawl AngularJS/Ajax heavy applications now, why are we getting blog posts about solutions to the SEO issue: http://blog.meanjs.org/post/78474995741/mean-seo

  • Is this type of solution necessary.
  • Is this going to be as effective as server side rendering in terms of SEO.
  • Are hash bang (#!) urls a necessary evil or just plain evil.

I know questions about SEO and AngularJS have been asked before, but there seems to be so many differing opinions on this issue that I am lost, and it would be nice to have some thoughts that are more mean.js specific. My major worries are:

  • If building a angularjs heavy implementation will make it an SEO black hole.
  • If I will end up building practically the whole project again in static files just for SEO
  • If I need to be looking at a server side rendering solution.

Solution

  • If you are rendering the majority of your content using a JavaScript, then yes, it becomes a search engine black hole. That's one of the big downsides of a thick client application. If you need high visibility by search engines, it's a challenge. There is a middle ground.

    You'll need a combination of server side rendering and client side rendering. When the page first loads, it should have all the visible content the user needs, or at least the content that appears "above the fold" (at the top of the page). Links should be descriptive and allow search engines to dive deeper into the site. Your site's main menu should be delivered with the web page as well giving search engines something to bite into.

    Content below the fold, or paginated content can be pulled in dynamically and rendered on the client using any JavaScript framework. This gives you a good mix of server side rendering to feed search engines, and the performance boost that pulling content in dynamically can offer.