The short answer is yes, and it has been possible for years. The longer answer is that "no DNS, no backend" describes a spectrum rather than a binary, and most projects that claim to have reached the end of it are still leaning on at least one centralized component they have stopped noticing. Working out which parts you have genuinely removed, and which you have merely relocated, is the useful exercise.
What "No Backend" Actually Means in Practice
A frontend with no backend is not exotic. Any static bundle that talks to a public API, or to a chain via a node provider, already qualifies in the loose sense: there is no origin server of yours executing request handlers. The build output is a directory of files, and every dynamic behavior happens in the browser or against something you did not write.
The interesting constraint is stricter. Remove the API you control, remove the server that renders anything, and you are left with a client that must get its state from somewhere addressable by anyone. In practice that means a blockchain, a peer-to-peer storage network, or the user's own device. Each of those has a different failure mode, and none of them removes the need for the browser to first find your files, which is where the DNS half of the question starts.
The DNS Question Is Separate From the Hosting Question
These get conflated constantly. Hosting your files on a peer-to-peer network says nothing about how a visitor types something and arrives at them. You can put a bundle on a content-addressed network and still hand people a conventional domain name that points at a gateway, which is what the majority of so-called decentralized sites actually do.
Genuinely dropping DNS means giving up the thing DNS provides, which is a globally agreed, human-typeable mapping maintained by a hierarchy of delegations. The alternative most projects reach for is a name recorded on a chain and resolved by the client rather than by a resolver chain. The tradeoff is honest: you gain a name nobody can pull out from under you, and you lose the ability for an arbitrary browser on an arbitrary network to resolve it without help.
That help usually arrives as a browser extension, a resolver library bundled into your app, or a gateway that translates the chain-recorded name into something conventional infrastructure understands. If you go this route, the name itself is registered through a Web3 domain registrar rather than through a registrar accredited under the existing system, and ownership sits in a wallet rather than in an account with a renewal date attached to a credit card. That difference in custody is the actual product, more than the resolution mechanics.
Content Addressing Changes What a Deploy Is
Once files live on a content-addressed network, the address is derived from the bytes. Change one character in a stylesheet and you get a different identifier for the whole site. This is a real conceptual shift for anyone used to overwriting a bucket: you do not update a location, you produce a new immutable artifact and then point a mutable pointer at it.
The tooling for this has been approachable for a long time. A developer who wants to publish independently can do it in an afternoon with a deploy package that pushes a build directory to a node, registers it with one or more pinning services, and prints the resulting identifier. The mechanics are not the hard part.
The hard part is that immutability cuts both ways. Cache invalidation becomes trivial, since a new build has a new address by construction. But rollbacks, preview deploys and anything resembling a canary release all need you to manage a set of pointers yourself, because there is no platform doing it for you.
The Part Nobody Warns You About: Persistence
Putting a file on a peer-to-peer network does not mean the network keeps it. Content survives because some node has chosen to hold onto it, and if every node holding your bundle prunes it, the address remains valid and resolves to nothing. This is why pinning services exist, and it is also the moment many projects quietly reintroduce a paid vendor with an account and a monthly invoice.
Academic work has been direct about how much of this hybrid arrangement is structural rather than accidental. A team from Queen Mary University of London, Protocol Labs and others measured that tension at NSDI 24, examining three centralized components that IPFS introduced deliberately: network indexers for content lookup, Hydra Boosters to shore up routing in the distributed hash table, and public HTTP gateways for retrieval. Their framing is that these were adopted because full decentralization carried real costs in complexity and performance, not because anyone was cutting corners.
Where the Centralization Sneaks Back In
It is worth being precise about what you are comparing against, because the existing system is more distributed than its reputation suggests. The root spreads the authority across 12 independent operators running 13 root identities, backed by more than 1,500 individual servers worldwide that serve identical root zone data. ICANN runs exactly one of those identities. That is not a single point of control in the technical sense, whatever one thinks of the policy layer above it.
So the realistic audit for a project claiming no DNS and no backend is a list: which gateway does a first-time visitor hit, who operates it, who pins the bundle, whose RPC endpoint does the client call for chain reads, and whose extension does the name resolution depend on. Most projects can answer four of those five with a company name.
The Honest Version of the Claim
None of this makes the effort pointless. A build whose integrity is verifiable by hash, a name held in a wallet rather than an account, and a bundle that any independent gateway can serve is a meaningfully different risk profile from a site that dies when one vendor suspends you. That is worth building toward.
The claim just needs shrinking to fit. "No DNS or centralized backend" is rarely true on the first deploy. "Fewer parties who can unilaterally take this offline, and a way to verify I am getting the bytes I published" is true, achievable this week, and considerably more useful to say in a README than the version that overpromises.
Top comments (0)