diff --git a/packages/next/server/utils.ts b/packages/next/server/utils.ts index 5e4fc322780d829..e9e4cb9a66e2d21 100644 --- a/packages/next/server/utils.ts +++ b/packages/next/server/utils.ts @@ -16,7 +16,7 @@ export function cleanAmpPath(pathname: string): string { } export function isBot(userAgent: string): boolean { - return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test( + return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test( userAgent ) } diff --git a/test/integration/react-18/test/index.test.js b/test/integration/react-18/test/index.test.js index 7fc715602d5d74c..ab1a2152f58d5bb 100644 --- a/test/integration/react-18/test/index.test.js +++ b/test/integration/react-18/test/index.test.js @@ -185,6 +185,21 @@ describe('Concurrent mode', () => { ) expect(res.headers.get('etag')).toBeDefined() }) + + it('should not stream to google pagerender bot', async () => { + const res = await fetchViaHTTP( + context.appPort, + '/ssr', + {}, + { + headers: { + 'user-agent': + 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Google-PageRenderer Google (+https://developers.google.com/+/web/snippet/)', + }, + } + ) + expect(res.headers.get('etag')).toBeDefined() + }) }) })