Googlebot renders JavaScript, but on a delay and with no guarantee it happens on every crawl. Anything that must rank — menu items, product details, category copy, links — should sit in the initial HTML response. On cannabis sites the usual offender is an embedded Dutchie or Jane menu that hands Google an empty shell.
Rendering happens, just not when you need it
Google crawls your HTML first and renders the JavaScript later, when rendering resources free up. That gap can run from hours to much longer, and pages get evaluated in between on the bare HTML alone. A page whose product copy and internal links only exist after scripts execute is gambling that the render happens, happens soon, and happens without errors. Server-delivered HTML takes the gamble off the table.
Look at the crawled HTML, not your browser
Your browser always runs the scripts, so it lies to you. Use the URL Inspection tool in Search Console instead: inspect a product page, open View crawled page, and search the HTML for a strain name or a price. If it is missing, Google's first pass sees a hollow page. A faster spot check is loading the page with JavaScript disabled — whatever survives is what the crawler is guaranteed to get.
The Dutchie and Jane menu problem
Most dispensary menus are embedded widgets from Dutchie or Jane, delivered in an iframe or injected client-side. Either way, your site gets no credit. Iframe content counts toward the provider's domain, and injected menus often never make it into the indexable page at all. That is how a dispensary can stock 400 products and rank for none of them. The fix is an API-based native menu: pull product data from the provider's API and render each product as a real URL on your own domain, with its own title, copy, and schema.
When SSR or prerendering is worth the build
If the site is a React or Vue single-page app, server-side rendering ships complete HTML and hydrates in the browser afterward, so crawlers and users get the same content. Prerendering is the lighter option: generate static HTML for crawlable pages at build time. Reserve client-side rendering for things that never need to rank, like cart state or store pickers. Menus, category pages, and guides should arrive as HTML.
A worked example
One brand site we audited ran everything through a React storefront. Category descriptions, strain guides, even footer links loaded client-side. In the SERPs its pages showed title tags over blank snippets, and category URLs sat unindexed for weeks after publishing. The team moved content pages to prerendered HTML and left checkout as an app. Within two crawls the snippets populated, and the category pages started ranking for terms that had been in their copy all along.
Frequently asked questions
Does Google index the products inside a Dutchie or Jane iframe?
Not as part of your site. Iframe content is attributed to the domain that serves it, so those product pages build the provider's visibility rather than yours. An API-based native menu puts each product on a URL you own.
Do I need server-side rendering for the whole site?
No. Apply it to pages that need to rank: menus, categories, product pages, guides. Cart, checkout, and account screens can stay client-side because there is nothing there for a search engine to keep.
What is the quickest way to spot a rendering problem?
Load the page with JavaScript turned off, or open the crawled HTML in URL Inspection and search for a product name. If the text you sell with is missing, the crawler starts from a page without it.
Key takeaways
- Googlebot renders JavaScript on a delay; content that must rank belongs in the initial HTML response.
- Verify with URL Inspection's crawled HTML, never with your own browser.
- Embedded Dutchie and Jane menus earn your domain nothing; API-based native menus put products on URLs you own.
- Use SSR or prerendering for content pages and save client-side rendering for cart and account screens.
Want this done for your brand?
We build cannabis & CBD search visibility with full transparency, for dispensaries, brands, and MSOs.
Get a free cannabis SEO audit ›