Message Annotations for Realtime Interactions
One person, one vote: building live voting with message annotations

One person, one vote: building live voting with message annotations

6/26/2026

What this post added

This post introduces and details the implementation of a live voting system using Ably's message annotations. It explains how annotations, specifically the 'vote:unique.v1' type with the 'unique' aggregation, enforce one vote per client. It contrasts this approach with using raw messages or LiveObjects, highlighting the advantages of annotations in terms of data streams (summaries vs. individual events), least-privilege access control via token capabilities, and built-in vote semantics. The post also touches upon the use of annotations for free-text suggestions and the integration with channel rewind for late joiners. It further links annotations to other Ably features like appends and AI Transport.

Read the original post ↗