Problem
When a GraphQL server has introspection disabled (a security best practice in production), the Apollo Client Devtools Explorer tab fails to load without surfacing an error to the user. The extension silently falls back to showing an empty state, making it appear broken rather than communicating that introspection is unavailable.
This is distinct from #1796 (request to allow disabling introspection) — this issue is about handling the case when introspection is disabled on the server.
Why this matters
Production GraphQL servers commonly disable introspection for security reasons. When developers use devtools against these servers, they get no feedback about why the Explorer isn't working. They often assume the devtools are broken, which hurts adoption and creates support burden.
Current behavior
- User opens Apollo devtools against a server with
introspectionFromSchema disabled
src/bridge/index.ts calls introspection during initialization
- The introspection query fails (typically returning a GraphQL error)
- The error is swallowed somewhere in the initialization chain
src/panel/components/Explorer.tsx renders an empty state with no explanation
See #1791 (circular structure error) and #1801 (devtools fails to connect) — both report initialization failures that may be related to this same underlying issue.
What good looks like
- When introspection fails during bridge initialization, capture the error
- Pass the error state to the Explorer component via bridge context
- Display a user-facing message: "GraphQL introspection is disabled on this server. The Explorer requires introspection to provide autocompletion and validation."
- Provide a fallback: allow users to manually paste a schema or use a partial schema they provide
- Log the introspection error (not as a fatal error, but as an informational message) so developers know why the feature isn't working
Acceptance criteria
Contributed by Klement Gunndu
Problem
When a GraphQL server has introspection disabled (a security best practice in production), the Apollo Client Devtools Explorer tab fails to load without surfacing an error to the user. The extension silently falls back to showing an empty state, making it appear broken rather than communicating that introspection is unavailable.
This is distinct from #1796 (request to allow disabling introspection) — this issue is about handling the case when introspection is disabled on the server.
Why this matters
Production GraphQL servers commonly disable introspection for security reasons. When developers use devtools against these servers, they get no feedback about why the Explorer isn't working. They often assume the devtools are broken, which hurts adoption and creates support burden.
Current behavior
introspectionFromSchemadisabledsrc/bridge/index.tscalls introspection during initializationsrc/panel/components/Explorer.tsxrenders an empty state with no explanationSee #1791 (circular structure error) and #1801 (devtools fails to connect) — both report initialization failures that may be related to this same underlying issue.
What good looks like
Acceptance criteria
src/bridge/index.tscaptures introspection failures and propagates them to the panelsrc/panel/components/Explorer.tsxdisplays an error state when introspection is unavailableContributed by Klement Gunndu