GeezerVison is showing github.com — feat: add quic transport by achingbrain · Pull Request #3475 · libp2p/js-libp2p
Conversation
achingbrain
commented
Apr 24, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
Adds a QUIC transport based on the upcoming Node.js PR here.
Currently you need to build a custom Node.js binary for the tests to pass using the instructions on the linked PR.
There are lots of @ts-expect-error where types do not align, and TODOs to be resolved before this is ready.
The code is based on the WebTransport and TCP transports, so expect some copy/paster and some options that are unused at the moment. Also a lot of the protections in the TCP transport around stopping accepting new connections are not present. These should really be pushed higher up into libp2p anyway so all transports can benefit from the protections.
Depends on:
Change checklist
- I have performed a self-review of my own code
- I have made corresponding changes to the documentation if necessary (this includes comments as well)
- I have added tests that prove my fix is effective or that my feature works
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
dozyio reacted with heart emoji
Adds a QUIC transport based on the upcoming Node.js PR [here](nodejs/node#62876).
Currently you need to build a custom Node.js binary for the tests
to pass using the instructions on the linked PR.
|
This has been on my hard drive in various forms since last summer so now that the Node.js PR has all the required features it's time to get it somewhere more visible.
|
tabcat reacted with heart emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
|
|
|
|
// TODO: have to copy before write otherwise error is thrown:
|
|
|
// TypeError: Provided key doesn't match [[ArrayBufferDetachKey]]
|
|
|
const bytes = data.subarray(0, toWrite).slice()
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Running on macOS
brew install ninja
git clone https://github.com/nodejs/node.git
cd node
./configure --experimental-quic --ninja
./out/Release/node --experimental-quic -e "console.log(require('node:quic'))"
export PATH=$(pwd)/out/Release:$PATH
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
dozyio
commented
May 17, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
|
Added a small ts declarations file - should probably be removed in the future packages/transport-quic/src/node-quic.d.ts
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This branch has not been deployed
No deployments
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.