Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .changeset/violet-peaches-notice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
'@shopify/hydrogen': minor
---

The `enableStreaming` config option has been deprecated. The same feature can be done directly in the app:

```diff
// hydrogen.config.js

export default defineConfig({
shopify: {
// ...
},
- enableStreaming: (req) => {
- return req.headers.get('user-agent') !== 'custom bot';
- },
});
```

```diff
// App.server.jsx

-function App() {
+function App({request, response}) {
+ if (request.headers.get('user-agent') === 'custom bot') {
+ response.doNotStream();
+ }

return <Suspense fallback={'Loading...'}>{/*...*/}</Suspense>;
}

export default renderHydrogen(App);
```
21 changes: 0 additions & 21 deletions docs/framework/hydrogen-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ The following groupings of configuration properties can exist in Hydrogen:
- [`shopify`](#shopify)
- [`session`](#session)
- [`serverAnalyticsConnectors`](#serveranalyticsconnectors)
- [`enableStreaming`](#enablestreaming)

### `routes`

Expand Down Expand Up @@ -189,26 +188,6 @@ export default defineConfig({

{% endcodeblock %}

### `enableStreaming`

By default, all routes in Hydrogen are stream rendered. Stream rendering is automatically disabled when the user agent is a bot.

Content should be immediately available to bots for SEO purposes. However, you might want to manually disable streaming for a specific page. A common use case is disabling streaming for a custom bot that's not recognized by Hydrogen's bot detection algorithm. You can disable streaming for a custom bot with the `enableStreaming` configuration property:

{% codeblock file, filename: 'hydrogen.config.ts' %}

```tsx
import {PerformanceMetricsServerAnalyticsConnector} from '@shopify/hydrogen';
export default defineConfig({
enableStreaming: (req) => req.headers.get('user-agent') !== 'custom bot',
});
```

{% endcodeblock %}

> Tip:
> There are [performance benefits](https://shopify.dev/custom-storefronts/hydrogen/best-practices/performance) to streaming. You shouldn't completely disable streaming for all of your storefront's routes.

## Changing the configuration file location

If you don't want the Hydrogen configuration file located at the root of your project, then you can provide the new path to the file in the Hydrogen Vite plugin (`vite.config.js`):
Expand Down
3 changes: 0 additions & 3 deletions packages/hydrogen/src/entry-server.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,6 @@ export const renderHydrogen = (App: any) => {
}

const isStreamable =
(hydrogenConfig.enableStreaming
? hydrogenConfig.enableStreaming(request)
: true) &&
!isBotUA(url, request.headers.get('user-agent')) &&
(!!nodeResponse || (await isStreamingSupported()));

Expand Down
1 change: 0 additions & 1 deletion packages/hydrogen/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@ export type InlineHydrogenConfig = {
shopify?: ShopifyConfig | ShopifyConfigFetcher;
serverAnalyticsConnectors?: Array<ServerAnalyticsConnector>;
session?: (log: Logger) => SessionStorageAdapter;
enableStreaming?: (request: ServerComponentRequest) => boolean;
};

export type ResolvedHydrogenConfig = Omit<InlineHydrogenConfig, 'routes'> & {
Expand Down
3 changes: 0 additions & 3 deletions packages/playground/server-components/hydrogen.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,4 @@ export default defineConfig({
session: CookieSessionStorage('__session', {
expires: new Date(1749343178614),
}),
enableStreaming: (req) => {
return req.headers.get('user-agent') !== 'custom bot';
},
});
6 changes: 5 additions & 1 deletion packages/playground/server-components/src/App.server.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ setLogger({
options: () => ({}),
});

export default renderHydrogen(() => {
export default renderHydrogen(({request, response}) => {
if (request.headers.get('user-agent') === 'custom bot') {
response.doNotStream();
}

return (
<Suspense fallback={'Loading...'}>
<ShopifyProvider>
Expand Down