AFFiNE produced 32 release events in 30 days, but the interesting story is not raw speed. Its July releases show a project trying to make one local-first system behave like a document editor, whiteboard, database, kanban board, mobile app, desktop client, sync service, and self-hosted server at the same time. That breadth makes AFFiNE compelling, and it also explains why its release feed mixes visible features with migration rules, data cleanup, import fidelity, and window-management fixes.

One product is absorbing several workflows

The official AFFiNE site describes a workspace that merges documents, whiteboards, databases, and AI. The phrase “Notion and Miro alternative” is useful shorthand, but it understates the engineering goal. AFFiNE is not merely placing a text editor beside a canvas. It wants the same block-based content to move between structured pages, an edgeless visual surface, planning views, and presentations.

The GitHub repository makes that model more concrete. It describes an edgeless canvas that can hold rich text, sticky notes, linked pages, embedded web content, shapes, slides, and multi-view databases. It also promises local ownership of data, real-time collaboration, web and cross-platform clients, and self-hosting.

Those promises create a harder product problem than building a focused notes app. A local-first editor must work before the network does, then reconcile state safely when connectivity returns. A collaborative canvas must preserve ordering, references, attachments, and visual placement. A self-hosted service must give operators a predictable upgrade path. AFFiNE’s recent releases are best read as work on those boundaries.

ToolVitals classifies AFFiNE as OSI-approved open source, with an MIT license signal. The project’s public positioning supports the open-source and self-hostable description. Still, current first-party GitHub materials identify separate terms in a backend server license file. That does not change the supplied ToolVitals classification, but teams planning a modified or commercial deployment should review the licenses of the exact components they intend to ship. A repository-level label is not a substitute for a path-level license audit.

Thirty-two release events need a denominator

ToolVitals measured a 227.1 hot score, 95 health score, 100 shipping score, and 98 overall ToolVitals score for AFFiNE. It recorded 70,737 GitHub stars, 19 GitHub releases over 90 days, and 32 release events in the latest 30-day window. Data confidence is 100.

The missing values matter too. The payload does not provide a 30-day commit count or an active-contributor count. We can say AFFiNE has a busy release channel and a large GitHub audience. We cannot use this snapshot to say how many engineers are doing the work, how review load is distributed, or whether commit volume rose or fell.

The 32-event figure is real, but it is not the same as 32 major product releases. The recent feed includes dated canary builds, beta builds, and stable semantic versions. On July 21 through July 24 alone, the supplied events move among 0.27.3-beta.0, 0.27.3-beta.1, 0.27.3, and daily canaries. This is a release pipeline with several channels, not a claim that users received a new flagship feature every day.

That distinction does not make the shipping score less useful. It makes it more specific. A 100 shipping score says the project is consistently turning changes into published artifacts. It does not say every artifact has equal scope, stability, or relevance to production users. Engineering leads should treat release-event counts as evidence of operational cadence, then inspect the channel mix before comparing teams.

Version 0.27.3 is mostly about reducing switching costs and operational risk

The 0.27.3 release notes group together improvements to AI bring-your-own-key configuration, shared-page options, kanban status updates, Obsidian importing, mobile UI performance, login persistence, and garbage collection for outdated documents. That list looks miscellaneous until it is mapped to adoption friction.

The Obsidian work targets migration. The July 22 canary notes say imports became better at resolving attachments and embedded images, including nested vaults, configured attachment folders, duplicate filenames, and folder hierarchy. Importing Markdown text is the easy part of leaving an established notes tool. Preserving the relationships around that text is what determines whether a migration is credible.

The kanban fix targets trust in structured editing. The 0.27.3 beta.1 notes describe row handling changes intended to prevent rows from remaining locked and to preserve manual card order when cards move or group values change. A board that occasionally scrambles intent is not a planning tool. It is a liability. The added coverage around unlocking behavior is therefore more important than the small surface area of the fix suggests.

The server work targets long-running data integrity. The July 23 canary improves document reconciliation and projection by recording failures and richer checkpoint state. Its release summary says interrupted processing can resume more accurately, including rebuilds and parser-upgrade scenarios. Combined with 0.27.3’s support for garbage collection of outdated documents, this points to maintainers hardening the lifecycle of workspaces that have accumulated history, not just polishing empty demo projects.

Desktop behavior is getting the same treatment. The July 24 canary refines macOS Dock visibility, deep-link and second-instance restoration, tray actions, recording completion, and close-to-background behavior. None of that sells the product in a screenshot. All of it affects whether the native client feels dependable during daily use.

The broader direction is clear. AFFiNE is spending release capacity on the seams between products and platforms: Obsidian to AFFiNE, card state to database state, client state to server state, interrupted jobs to resumed jobs, and background processes to visible desktop windows. That is maturity work.

Self-hosting now comes with a concrete upgrade contract

The official self-hosting guide describes a Docker Compose deployment with an AFFiNE server, PostgreSQL, and Redis. The server handles the web app, API, sync, and collaboration, while the supporting services cover persistence and sync infrastructure. This is a deployable application stack, not a static desktop binary copied to a server.

Version 0.27.3 adds explicit compatibility boundaries. Its notes say clients starting at 0.27 only connect and sync with servers at 0.27 or newer. Servers starting at 0.27 support clients at 0.26 or newer. The same release says environment variables are no longer the preferred source for server configuration and directs operators toward config.json; the official configuration guide documents configuration through the admin panel or that file.

For a skeptical buyer or engineering lead, this is the practical test plan: pin client and server versions, clone a representative workspace, import a real Obsidian vault with nested attachments, exercise offline edits and reconnection, move kanban cards under concurrent use, interrupt a maintenance job, and restore from backup. Do it before broad rollout. AFFiNE’s release notes provide evidence that these failure modes receive attention, but release notes cannot prove they are solved for your data shape and infrastructure.

Self-hosters should also treat 0.27 as a migration, not a casual image refresh. Back up PostgreSQL and configuration, verify the supported client range, move settings that depend on retired environment variables, and test WebSocket-dependent sync behind the real reverse proxy. The release cadence is fast enough that an unpinned deployment could cross compatibility boundaries sooner than an operator expects.

AFFiNE is narrowly ahead of SiYuan on heat, far ahead on release frequency

The most useful comparison in the supplied related tools is SiYuan, another OSI-approved open-source notes and knowledge product. AFFiNE’s hot score is 227.1 versus SiYuan’s 226.9, effectively a tie at this precision. The separation appears elsewhere: AFFiNE has 70,737 GitHub stars versus 45,378, a shipping score of 100 versus 95, and 32 release events in 30 days versus 16.

Eidos is a smaller comparison point. It has a 204.0 hot score, 3,155 stars, an 87 shipping score, and 7 release events in 30 days. AFFiNE has 70,737 stars and 32 recent release events by comparison. Those numbers show different project scale and publishing cadence, not automatic product superiority.

Cross-project release counts are especially easy to misuse. One project may publish every canary, while another batches the same amount of engineering work into a weekly stable build. AFFiNE’s channel-rich feed boosts observability and makes regressions easier to trace, but the count should not be read as a direct measure of developer productivity.

What ToolVitals cannot infer from these signals

ToolVitals sees public artifacts. Stars show accumulated GitHub interest, not retained users. Release events show publication frequency, not defect density. Health and shipping scores summarize observable maintenance signals, not editor latency, sync correctness, accessibility, battery use, or support quality.

The data also says nothing about revenue, paid conversion, deployment count, customer satisfaction, or the size of active workspaces. A 98 ToolVitals score cannot tell you whether AFFiNE will handle your largest canvas, preserve every imported backlink, or recover cleanly from the exact network failure your team encounters.

Uptime and SSL signals, where tracked by ToolVitals, can help assess a hosted surface. They do not validate a self-hosted installation. Once a team runs AFFiNE itself, database maintenance, backups, reverse-proxy behavior, monitoring, and upgrade discipline become that team’s responsibility.

The star count needs similar restraint. AFFiNE’s 70,737 stars establish unusually broad attention for a knowledge tool. They do not reveal how many people use the current stable release, how many self-host, or how many tried the product and left.

The maintainers should make the release topology easier to read

AFFiNE’s maintainers already expose useful detail through canary, beta, and stable releases. The next editorial improvement is to make the boundaries unmistakable. Stable notes should summarize the user-facing outcome, link migration instructions beside every compatibility break, and separate operational changes from editor changes. Canary notes can retain pull-request-level depth.

That would protect the value of the project’s high cadence. When 32 events include several release classes, buyers need a quick way to answer three questions: what changed for end users, what changed for self-hosters, and what requires coordinated client and server upgrades. Clear answers make the shipping score easier to trust rather than merely impressive.

The July sequence offers a good template. Obsidian import fidelity belongs under migration, document garbage collection and resumable projection belong under operations, and Dock or login fixes belong under client reliability. Presenting releases through those outcomes would show that AFFiNE is not shipping randomly. It is closing specific gaps created by its unusually broad product scope.

Who should evaluate AFFiNE now

Teams that currently split project knowledge among a document tool, a whiteboard, and lightweight structured planning should run an AFFiNE pilot. The reason is not the 32-event headline by itself. It is the combination of a merged content model, local-first positioning, self-hosting, 70,737 GitHub stars, and recent work on migration fidelity, data lifecycle, sync compatibility, kanban correctness, and native-client behavior.

Do not replace an established knowledge system after a polished demo. Evaluate the 0.27 line with production-shaped content and a pinned deployment. If the Obsidian importer preserves your attachments and hierarchy, collaboration survives your network conditions, and your operators can meet the new upgrade contract, AFFiNE deserves a serious rollout. If those tests fail, its 100 shipping score will not rescue the deployment.

Sources