{"id":16570,"date":"2026-09-02T11:36:55","date_gmt":"2026-09-02T08:36:55","guid":{"rendered":"https:\/\/alienroad.com\/google-bilgi-bankasi\/javascript-seo-basics\/"},"modified":"2026-09-02T16:46:02","modified_gmt":"2026-09-02T13:46:02","slug":"javascript-seo-basics","status":"publish","type":"ar_kb","link":"https:\/\/alienroad.com\/google-bilgi-bankasi\/javascript-seo-basics\/","title":{"rendered":"JavaScript SEO Basics"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Google processes JavaScript pages in three phases: crawl, render, index. The render phase is queued separately, so a page can be crawled today and rendered later. Content that only exists after JavaScript runs is therefore indexed on a delay.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What breaks<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Content that requires user interaction, a click to expand, an infinite scroll with no links. Googlebot does not click or scroll.<\/li><li>Blocked resources. If the script or API endpoint is disallowed in <code>robots.txt<\/code>, rendering fails and Google indexes an empty shell.<\/li><li>Client-side routing without real URLs. Fragment-based routes (<code>#\/page<\/code>) are not separate URLs to Google.<\/li><li>Timeouts. Rendering has a budget; a page waiting on slow third-party calls may be captured incomplete.<\/li><li>Errors. One uncaught exception can stop the render.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Metadata set by script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Titles, descriptions and canonical tags injected by JavaScript can work, but they are read at render time. Server-rendering these elements is far more reliable.<\/p>\n\n\n\n<div class=\"ar-kb-tavsiye\"><p><strong>Alien Road recommends:<\/strong> server-render or pre-render anything that must be indexed, titles, canonical tags, main copy and internal links at minimum. We treat client-only rendering of primary content as a defect on client projects, because it converts a deterministic outcome into a probabilistic one for no user benefit.<\/p><\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>How Google processes JavaScript, why rendering is deferred, and the patterns that keep content invisible.<\/p>\n","protected":false},"menu_order":10,"template":"","meta":{"footnotes":""},"ar_kb_kategori":[505],"ar_kb_etiket":[530,572,573],"class_list":["post-16570","ar_kb","type-ar_kb","status-publish","hentry","ar_kb_kategori-javascript-seo","ar_kb_etiket-indexing","ar_kb_etiket-javascript","ar_kb_etiket-rendering"],"_links":{"self":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/16570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb"}],"about":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/types\/ar_kb"}],"version-history":[{"count":1,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/16570\/revisions"}],"predecessor-version":[{"id":23687,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb\/16570\/revisions\/23687"}],"wp:attachment":[{"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/media?parent=16570"}],"wp:term":[{"taxonomy":"ar_kb_kategori","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_kategori?post=16570"},{"taxonomy":"ar_kb_etiket","embeddable":true,"href":"https:\/\/alienroad.com\/wp-json\/wp\/v2\/ar_kb_etiket?post=16570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}