Skip to content

Single-File SPA HTML Export & Publishing for Channels #3248

Description

@dsainvg001

Have you read a contributing guide?

  • I have read CONTRIBUTING.md
  • I have searched the existing requests and didn't find any that were similar
  • I have considered creating a pull request instead and want to proceed

Clear and concise description of the problem

Feature Request: Single-File HTML Export & Publishing for Channels

Problem Statement

Right now, publishing from Anytype to the web only supports a single page at a time. There is no support for publishing a whole channel (a root page together with all its sub-pages) as one connected, browsable unit.

On top of that, the single-page export is Protobuf/JSON snapshot data (index.json.gz), which means anyone who wants to view it needs a specialized frontend reader/client to parse the snapshot. Internal links (anytype://...) between pages aren't turned into working web links either — there's no out-of-the-box way to click from one page to another, even if you publish several pages separately.

Why This Matters

Adding support to publish a whole channel — not just a single page — would be genuinely useful for a lot of common use cases:

  • Documentation & wikis: Teams often structure docs as a root page with many linked sub-pages. Publishing the whole channel at once keeps that structure intact for readers, instead of forcing them to publish and share dozens of individual pages.
  • Portfolios, knowledge bases, and personal sites: Users building a multi-page site in Anytype want one shareable link that lets visitors navigate the whole thing, not a pile of disconnected exports.
  • Sharing with people outside Anytype: Not everyone has (or wants) a reader app just to browse a shared space. A self-contained web page that works in any browser removes that barrier entirely.
  • Simpler hosting: Because everything lives in one file, it can be dropped onto basically any static web host with zero extra setup.

In short: this isn't just a nicer export format — it makes sharing and preserving a whole connected set of pages practical in a way the current single-page snapshot export doesn't support.

Suggested solution

Proposed Solution

Add an optional Single-File HTML export mode for publishing. When turned on, this takes an entire channel (root page + all nested sub-pages) and converts it into one self-contained index.html file that:

  • It works directly with the publishing code that already exists, with no need to replace or rework it.

This would work with the existing publish server as-is, with no backend changes required.

Alternative

Alternative Ideas

Publish each page as a separate file: Instead of bundling the whole channel into one self-contained HTML file, each page (root and sub-pages) could be published as its own separate file, linked together. This could end up being a better long-term approach cleaner file structure, easier to update or re-publish individual pages, etc. However, it requires more code changes than the single-file approach, and those changes would need to be made across all the repos involved (not just anytype-heart), which makes it a bigger effort.

Additional context

Key Benefits

  1. Zero server changes needed — works with the existing publish server out of the box.
  2. Instant compatibility — the exported file works in any browser or static web host, no reader required.
  3. Real navigation — sub-pages and internal links work like a normal website, not a flat snapshot dump.
  4. Easy to share and archive — one file, easy to send, save, or host anywhere.

Zero-Regression Guarantee

  • The current default publishing behavior stays exactly as-is.
  • Support for this should be added by including a button in the frontend later on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions