GraphiQL explorer
For convenience, Hydrogen includes a local GraphiQL explorer to help you create queries and learn about Shopify's Storefront API.
Anchor to RequirementsRequirements
Make sure you have the following environment variables in place:
PUBLIC_STORE_DOMAINPUBLIC_STOREFRONT_API_VERSIONPUBLIC_STOREFRONT_API_TOKEN
Anchor to GraphiQLGraphi QL
The GraphiQL interface is available by default when running the Hydrogen CLI in development mode.
Terminal
npx shopify hydrogen dev
yarn shopify hydrogen dev
pnpm shopify hydrogen dev
npm
npx shopify hydrogen devYarn
yarn shopify hydrogen devpnpm
pnpm shopify hydrogen devWith the development server running, go to /graphiql in your browser.
If you're not using the Hydrogen CLI, or want to customize the GraphiQL interface, you can do so by creating a graphiql route in your project:
Optional route for GraphiQL
<root>/app/routes/graphiql.jsx
import {graphiqlLoader} from '@shopify/hydrogen';
import {redirect} from '@shopify/remix-oxygen';
export async function loader(args) {
if (process.env.NODE_ENV === 'development') {
// Default Hydrogen GraphiQL behavior
return graphiqlLoader(args);
}
return redirect('/');
}
import {graphiqlLoader} from '@shopify/hydrogen';
import {redirect, type LoaderArgs} from '@shopify/remix-oxygen';
export async function loader(args: LoaderArgs) {
if (process.env.NODE_ENV === 'development') {
// Default Hydrogen GraphiQL behavior
return graphiqlLoader(args);
}
return redirect('/');
}
JavaScript
import {graphiqlLoader} from '@shopify/hydrogen';
import {redirect} from '@shopify/remix-oxygen';
export async function loader(args) {
if (process.env.NODE_ENV === 'development') {
// Default Hydrogen GraphiQL behavior
return graphiqlLoader(args);
}
return redirect('/');
}TypeScript
import {graphiqlLoader} from '@shopify/hydrogen';
import {redirect, type LoaderArgs} from '@shopify/remix-oxygen';
export async function loader(args: LoaderArgs) {
if (process.env.NODE_ENV === 'development') {
// Default Hydrogen GraphiQL behavior
return graphiqlLoader(args);
}
return redirect('/');
}Note
If you’re creating your own graphiql route, then make sure it's not available in production. You can use process.env.NODE_ENV to enforce tree-shaking.
Was this page helpful?