Răspuns scurt: JavaScript poate rămâne în site fără probleme dacă informația publică, linkurile și statusurile sunt robuste. Google documentează crawling, rendering și indexing ca etape distincte și recomandă linkuri crawlable. Pentru crawlere AI, verifică documentația fiecărui provider. Playbook-ul trebuie să protejeze critical content și să separe formularele/booking de identitatea paginii.
Precondiția 1: template inventory
Listează homepage, service, industry, case study, team, article, contact și booking. Pentru fiecare, definește critical content și next steps.
Precondiția 2: public versus interactive
Descrierea serviciului, proof points și contact path sunt publice. Formularele complexe și calendarele pot fi interactive. Nu lăsa partea publică să depindă de widget.
Ce schimbi în pagină
1. Critical HTML
Asigură title, H1, descriere și linkurile principale într-o formă robustă înainte de interacțiuni fragile.
2. Canonical și robots
Verifică parity între HTML inițial și DOM randat. Nu injecta valori contradictorii.
3. Crawlable links
Folosește <a href> pentru servicii, case studies și articole importante.
4. Fallback pentru widgets
Dacă booking sau chat eșuează, păstrează un contact alternativ.
Ce schimbi în site
5. Rendering strategy per template
Static/SSR pot fi bune pentru conținut public. CSR poate rămâne pentru aplicații sau funcții cu stare. Nu forța o singură strategie peste tot.
6. Routing
Rutele inexistente trebuie să returneze status corect. Evită SPA fallback 200 pentru orice URL.
7. Consent manager
Testează că CMP-ul nu ascunde critical content. Analytics poate aștepta consent; explicația serviciului nu ar trebui să dispară.
8. Third-party isolation
Chat, forms și booking nu trebuie să poată prăbuși pagina. Izolează erorile și folosește timeouts/fallbacks potrivite.
Ce schimbi în distribuție
9. Campaign landing pages
Nu crea landing pages client-only fără canonical și content robust doar pentru paid campaigns. Dacă pagina este publică și indexabilă, aplică aceleași gates.
10. Newsletter/social
Linkurile trebuie să ducă la URL-uri stabile. Evită rute temporare care depind de state client-side.
11. Partner embeds
Dacă partenerii folosesc widgets sau embeds, păstrează o pagină first-party canonicală cu informația esențială.
QA pre-release
Pentru fiecare template verifică:
- status;
- canonical;
- robots;
- HTML text;
- rendered parity;
- crawlable links;
- soft 404;
- hydration errors;
- third-party fallback;
- mobile/browser sample.
AI crawler policy
OpenAI documentează OAI-SearchBot și GPTBot ca crawlere cu roluri distincte. Alte servicii au politici proprii.
Păstrează intenția robots într-un registry. Allowed nu înseamnă inclusion sau citation.
Rollout incremental
Migrarea framework-ului sau strategy-ului trebuie făcută pe un subset de template-uri, cu regressions după fiecare etapă. Nu schimba simultan rendering, copy și IA dacă vrei să poți diagnostica o regresie.
Acceptance criteria
Un template trece gate-ul când:
- status/canonical sunt corecte;
- critical content este robust;
- rendered DOM nu schimbă sensul;
- linkurile principale sunt crawlable;
- forms/widgets au fallback;
- CMP nu blochează content;
- soft 404 este controlat;
- mobile/browser smoke trece;
- bot policies sunt deliberate;
- QA poate fi rerulat.
Rollback
Păstrează deployment manifest și feature flags unde există. Dacă noua strategie introduce mismatch sau errors, revino schimbarea de rendering fără să pierzi fixes editoriale independente.
Cum măsori
Critical-content parity, crawlable-link coverage, soft-404 count, hydration errors, widget failure resilience și page-level technical QA. Search/AI outcomes rămân separate.
Exemplu
O pagină de consultanță folosește un booking widget care eșuează. Dacă descrierea serviciului și email/telefonul rămân disponibile, failure resilience este bună. Dacă tot body-ul dispare pentru că widgetul aruncă eroare, ai P0/P1 tehnic înainte de orice rescriere SEO.
Criteriu de oprire
Treci în monitorizare când template-urile principale sunt stabile, regression tests trec și third-party failures nu mai afectează critical content. Nu continua migration work doar pentru un presupus „AI readiness score”.
Cum tratezi localizările și routing-ul
Dacă site-ul are mai multe limbi sau regiuni, fiecare variantă publică trebuie să aibă URL stabil și canonical potrivit. Nu depinde numai de state client-side pentru schimbarea limbii. Verifică și că internal links trimit către varianta potrivită.
Cum tratezi formularele embedded
Un iframe sau script third-party poate fi legitim, dar pagina trebuie să rămână utilă dacă embed-ul nu pornește. Păstrează un contact alternativ și nu pune critical explanatory content în interiorul widgetului.
Cum măsori degradarea controlată
În staging sau mediu sigur, blochează fiecare third-party major pe rând și verifică ce se pierde. Clasifică rezultatele: no impact, noncritical feature lost, conversion path degraded, critical content lost. Ultimele două cer remediere înainte de rollout.
Cum tratezi performance changes
O migrare spre SSR poate îmbunătăți content delivery și în același timp crește server latency. Măsoară performance separat de parity. Nu accepta o regresie severă doar pentru că HTML-ul inițial este mai bogat.
Notă de regresie
Păstrează un eșantion stabil de URL-uri și repetă testele după fiecare upgrade de framework sau consent manager, astfel încât diferențele să fie comparabile.
Claim ledger
- FACT/EVIDENCE: Google documentează crawling, rendering și indexing pentru JavaScript.
- FACT/EVIDENCE: Google recomandă linkuri HTML crawlable și tratează dynamic rendering ca workaround.
- FACT/EVIDENCE: OpenAI documentează crawlere cu roluri distincte.
- NOT PROVEN: că SSR sau orice framework produce direct ranking sau citări AI.
Concluzie
Playbook-ul bun păstrează JavaScript acolo unde aduce experiență și îl scoate din calea adevărului public. Pentru servicii profesionale, critical content, linkurile și fallback-urile contează mai mult decât alegerea unui framework la modă.
Surse revizuite
- Google Search Central, JavaScript SEO basics: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google Search Central, Dynamic rendering: https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering
- Google Search Central, link best practices: https://developers.google.com/search/docs/crawling-indexing/links-crawlable
- OpenAI, Overview of OpenAI Crawlers: https://developers.openai.com/api/docs/bots
