I’ve been facing an issue with Bing’s crawler on my Bubble app. It seems that Bing is only crawling the head section of my pages and completely missing the body content. After some research, I found out that this might be due to the fact that Bubble uses Javascript for rendering, and Bing’s crawler isn’t great at processing Javascript-based websites.
Bing actually advises users to implement something called Dynamic Rendering to address this issue. Essentially, this involves detecting the bingbot and rendering a separate static HTML version of the page for it, allowing the crawler to process the content correctly.
My questions for the community are:
Has anyone else experienced this issue with Bing not crawling Bubble app body content? Does this happen to all Bubble apps or just some?
Does anyone have experience with Dynamic Rendering for a Bubble app? If so, how did you implement it, and was it successful in resolving the issue?
Is there any other solution or workaround to ensure Bing can crawl the full content of a Bubble app?
I’d appreciate any insights or advice! Thanks in advance for your help.
Yes, this is a common issue with crawlers like Bingbot when it comes to apps built with Bubble or other platforms that rely on client-side JavaScript rendering. Bing’s crawler sometimes struggles to process JavaScript-heavy pages, which is why it only sees the head section and misses the body content rendered by JavaScript.
Bing’s crawler has limited ability to execute JavaScript, meaning it may not wait for your page to fully load or render dynamic content. Since Bubble relies heavily on JavaScript to generate the page content, the crawler often misses everything outside of the head section.
Dynamic Rendering is one way to fix this. Essentially, you detect when a bot like Bingbot is crawling your page and serve it a pre-rendered static HTML version of your site, while regular users still get the dynamically rendered version. This ensures that Bing (or other bots) can crawl and index your entire page, not just the head.
However, Bubble doesn’t natively support Dynamic Rendering. To implement this, you might need to use some external services.
Thanks for the explanation! But doesn’t Bubble account for this by sending pages to crawlers slightly later, after they’re rendered? Or am I mistaken about how that works? Just trying to understand if there’s something built-in we’re missing.