The critical distinction is between what Google fetched and what Google rendered. Almost every JavaScript indexing problem lives in the gap between the two.
Diagnostic order
- Use URL Inspection and open the rendered HTML, not the source. Is your content there?
- Check the “Page resources” list for anything that could not be loaded.
- Check the JavaScript console output in the same tool for errors.
- Confirm no required resource is blocked in
robots.txt. - Test with JavaScript disabled to see the server-rendered baseline.
Lazy loading
Use native loading="lazy" or an IntersectionObserver that triggers well before the viewport. Content that only loads on a user scroll event will not be seen.
Alien Road recommends: read the rendered HTML first, every time. It answers in thirty seconds a question that teams often argue about for days, and in our experience the rendered output frequently contradicts what everyone assumed was on the page.