Tracking the endeavor towards getting web browsers to natively support IPFS and content-addressing
Informal group working on improving IPFS presence in web browsers
Our goal is to facilitate native support for IPFS and other decentralized protocols in web browsers in order to benefit ....
IPFS Companion is a browser extension that simplifies access to IPFS resources and adds browser support for the IPFS protocol. It runs in Firefox (desktop and Android) and Chromium-based browsers including Chrome or Brave. Check out all of IPFS Companion's features and install it today!
Firefox | Firefox for Android | Chrome | Brave | Opera | Edge |
---|---|
libdweb
to implement experimental APIs for Firefox WebExtensions, with a goal of enabling dweb protocols in Firefox through browser add-ons:
window.ipfs
(experiment ended in 2020)chrome.sockets.*
APIs in Chromium browsers (ended due to EOL 2022)At present, in order to interact with IPFS in a web browser, you must either bundle js-ipfs-core
(a full IPFS node in JavaScript) with your client-side application, or use the js-ipfs-http-client
HTTP RPC API client library to connect to an external daemon running on a local or remote machine.
browser-*
examples at ipfs-examples/js-ipfs-examples
SharedWorker
from ServiceWorker
can be found at js-ipfs-examples/browser-service-worker
Use the latest Kubo daemon and follow gateway recipes.
See specification and implementer notes at ipfs/specs/http-gateways.
DNSLink enables you to map a domain name to an IPFS address (CID or IPNS libp2p-key) by means of a DNS TXT record.
Protocol Labs is a W3C Member. Current focus is to watch, learn, and participate in WebExtensions Community Group.
In 2020 IPFS and Igalia started a collaboration that continues to this day. Read more: https://blog.ipfs.tech/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/
The most notable highlights (chronological order):
ext+
. Refinement is pending for the permission UI.http://*.localhost/
URLs as secure context, which means websites loaded from local subdomain gateway will have access to the same Web APIs as HTTPS version.registerProtocolHandler()
Brave v1.19 has integrated IPFS into their desktop web browser for Windows, macOS and Linux. When Brave detects an address which is an HTTP gateway URL to IPFS content or a native IPFS address such as ipfs://
or ipns://
it will prompt the user to install and enable the native IPFS node, or to use an HTTP gateway.
Diagnostic UI can be found at brave://ipfs
, we suggest enabling IPFS Companion for the best experience
TLDR integration status:
ipfs://{cid}
will trigger install prompt for go-ipfs managed by Brave itself.Opera for Android 57 introduced support for resolving ipfs://
or ipns://
via a customizable gateway.
Read more: https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/
Contributions to our work are more than welcome! Every IPFS Project repo makes use of the project-wide global issue labeling scheme. Good labels to look for are ...
help wanted
good first issue
bounty
labels for issues with rewards as part of the IPFS Bounty Board!If you see an issue that catches your eye, leave a comment so we know you're interested, and we'll go from there!
We're an open project and a friendly group, so please be nice and read the contributing guidelines when you're ready to jump in.
For the sake of async communication, archiving, and searchability, we encourage browser-related technical discussions to happen in the context of GitHub issue comments whenever practical.
If you want to ask support question, or just chat informally to learn and brainstorm, feel free to join chat community in #lobby:ipfs.io or discussion forum at https://discuss.ipfs.io
https://docs.ipfs.io is backed by the repo at https://github.com/ipfs/ipfs-docs – any help in improving docs related to browsers (or not) is appreciated!
Proof-read ipfs/specs and fill an issue for: (1) outdated specs (2) missing specs (3) bits that are confusing and need to be clarified.
If you're looking for endeavors related to IPFS browser integration work, these resources may be helpful.