Skip to content

feat: Add incremental delivery support for Relay connections#1

Open
jwaldrip wants to merge 9 commits intomainfrom
gigmart/defer-stream-incremental
Open

feat: Add incremental delivery support for Relay connections#1
jwaldrip wants to merge 9 commits intomainfrom
gigmart/defer-stream-incremental

Conversation

@jwaldrip
Copy link
Copy Markdown
Member

@jwaldrip jwaldrip commented Sep 5, 2025

Summary

This PR adds incremental delivery support to absinthe_relay for streaming Relay connections with @defer and @stream directives.

⚠️ DEPENDENCY NOTICE

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

  • Stream edges incrementally while maintaining cursor consistency
  • Compatible with forward and backward pagination
  • Maintains proper connection structure during streaming
  • Preserves pageInfo accuracy throughout streaming

Implementation

  • Absinthe.Relay.Incremental.Connection - Streaming connection support
  • Cursor consistency management
  • Edge batching for efficient delivery

Testing

  • Pagination consistency tests
  • Cursor ordering validation
  • Connection structure integrity

Breaking Changes

None - incremental delivery is opt-in and backward compatible.

jwaldrip and others added 4 commits September 5, 2025 14:43
Implements streaming support for Relay pagination:
- Stream edges incrementally while maintaining cursor consistency
- Compatible with forward and backward pagination
- Maintains proper connection structure during streaming

docs: Add comprehensive Relay incremental delivery documentation

- Relay connection streaming guide
- Cursor consistency documentation
- Client integration examples (React, Relay Modern)
- Performance optimization strategies

DEPENDS ON: absinthe package defer-stream-incremental branch must be merged first

🤖 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>
@jwaldrip jwaldrip force-pushed the gigmart/defer-stream-incremental branch from 30c4e58 to 2494edb Compare September 5, 2025 21:42
jwaldrip and others added 5 commits September 5, 2025 16:27
Move incremental delivery content from temporary README_INCREMENTAL.md
into the main README.md file. Remove temporary file and properly document
the Relay incremental delivery features.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
* chore(ci): automate releases
* CI workflow cleanup
* Update elixir and absinthe versions
* add cache to other jobs and cleanup yaml
* fix caching
* add mix_audit
* Add PR title validation

Release-As: 1.6.0

* add publish workflow

* Update absinthe dependency, only versions below 1.7.10 are broken
Release-As: 1.6.0
* chore(main): release 1.6.0

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants