feat: Add incremental delivery support for @defer and @stream directives#36
Open
jwaldrip wants to merge 8 commits intoabsinthe-graphql:mainfrom
Open
feat: Add incremental delivery support for @defer and @stream directives#36jwaldrip wants to merge 8 commits intoabsinthe-graphql:mainfrom
jwaldrip wants to merge 8 commits intoabsinthe-graphql:mainfrom
Conversation
Implements GraphQL-WS protocol transport for incremental delivery: - GraphQL-WS transport adapter using Next/Complete messages - Transport extensions for handling streaming responses - Proper protocol compliance for incremental payloads DEPENDS ON: absinthe package defer-stream-incremental branch must be merged first 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
- GraphQL-WS protocol implementation guide - Client-side integration examples - Message flow documentation - Performance and monitoring guidance 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…y testing 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…very Point to gigsmart/absinthe branch gigmart/defer-stream-incremental for testing the @defer and @stream directive implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Update installation dependencies in README_INCREMENTAL.md to point to the remote git repositories instead of hex packages for testing incremental delivery features. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Move incremental delivery content from temporary README_INCREMENTAL.md into the main README.md file. Remove temporary file and properly document the WebSocket incremental delivery features. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix JSON key ordering issues in tests by comparing decoded JSON objects instead of raw JSON strings - Update Logger.warn/1 calls to Logger.warning/1 (deprecated API) - Remove unused alias Absinthe.Incremental.Response - Fix Application.get_env/2 reference in test support - Update .tool-versions to use Elixir 1.17.3 and Erlang 27.3.4.2 - Update mix.exs to properly handle absinthe dependency override All 26 tests now passing. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Author
|
Checking in on the incremental delivery support for the WebSocket transport. This is a companion to absinthe#1377. Any feedback? |
bryanjos
approved these changes
Mar 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds incremental delivery support to absinthe_graphql_ws for @defer and @stream directives.
This PR depends on gigsmart/absinthe#gigmart/defer-stream-incremental
The main absinthe package must be merged first before this PR can be merged.
Features
Implementation
Absinthe.GraphQL.WS.Incremental.Transport- Main transport adapterAbsinthe.GraphQL.WS.TransportExtensions- Protocol extensionsTesting
Breaking Changes
None - incremental delivery is opt-in and backward compatible.