Skip to content

Conversation

@Skeptomenos
Copy link

Summary

When API responses return empty or malformed JSON (e.g., network interruption, API timeout, truncated response), the SDK now provides actionable error messages instead of cryptic SyntaxError: Unexpected end of JSON input.

Problem

The current implementation calls response.json() directly without error handling:

case "json":
  data = await response[parseAs]()  // Throws unhelpful error on malformed JSON
  break

When the API returns an incomplete response, users see:

SyntaxError: Unexpected end of JSON input
    at json (unknown)
    at <anonymous> (../sdk/js/src/v2/gen/client/client.gen.ts:167:33)

This provides no context about what went wrong or how to debug it.

Solution

Wrap response.json() in try-catch and provide enhanced error messages:

  • Include HTTP status code
  • Include request URL
  • Preserve original error as cause for debugging
  • Route errors through interceptors for custom handling

After this fix:

Error: Failed to parse JSON response: Unexpected end of JSON input. Status: 200, URL: https://api.example.com/v1/chat

Changes

  • packages/sdk/js/src/v2/gen/client/client.gen.ts - v2 client
  • packages/sdk/js/src/gen/client/client.gen.ts - v1 client

Note

These files are auto-generated by @hey-api/openapi-ts. This is a temporary fix until upstream handles JSON parsing errors gracefully. The fix will need to be reapplied after regeneration, or ideally contributed upstream to @hey-api/client-fetch.

When API responses return empty or malformed JSON, the SDK now provides
actionable error messages including HTTP status and URL instead of
cryptic 'Unexpected end of JSON input' errors.

Changes:
- Wrap response.json() in try-catch for both v1 and v2 clients
- Include response status and URL in error message
- Preserve original error as cause for debugging
- Route errors through interceptors for custom handling
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

@rekram1-node
Copy link
Collaborator

You can't just manually edit auto generated code, this will be deleted next time stuff is regenerated

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants