A Page That Asks You Something
Almost every chip is a one way street. The page tells you something and you read it. The Poll chip is the point where that reverses: the page asks, you answer, and the answer is stored against your account. That single change is why this chip needed a login gate, a database constraint and a plan for what happens when the file it came from is edited. Here is the poll, and then here is all of that.
Which of the unbuilt wishlist chips should land next?
If every bar above is empty and the buttons do nothing, you are logged out. That is the intended behaviour, not a bug.
Voting Requires an Account
There is no cookie ballot, no IP heuristic and no browser fingerprint. The vote endpoint accepts a nullable principal, so an anonymous request reaches the server perfectly happily, and then the service layer asks whether the caller is a guest and refuses if they are. The gate is deliberately in the service and not in a security annotation, so the same rule applies no matter which route reaches it.
The Argument for the Gate
Anonymous polls are easy to build and worthless to read. The moment a result can be moved by a refresh, the number stops being information. Requiring an account costs the chip a large share of its potential votes and buys the one property that makes the number worth putting on a page. It is a bad trade for engagement and the right trade for honesty.
One Vote. No Changing It.
A unique constraint on poll and user in the votes table, plus a check in the service that throws if a row already exists. There is no update path and no delete path: the service exposes exactly two operations, submit and transfer. Once you have voted the buttons lock and stay locked. This is stricter than most polls on the internet and it was not a considered position so much as the simplest thing that could not be gamed. Whether people should be allowed to change their mind is still open.
Question length
765 characters
Option length
255 characters
Maximum options
no limit
Votes per user per poll
1
Vote changes allowed
0
The Missing Limit Is Real
Gallery caps at twenty images. Timeline and Checklist cap at fifty entries. The poll options list has no size annotation on it at all, so a five hundred option poll validates cleanly, and so does a poll with zero options. Nobody decided that. It is an omission that has simply never been hit, and it is listed here because a reference page that only describes the parts somebody thought about is not much of a reference.
Results Are Hidden. They Are Not Secret.
Before you vote, every bar renders at zero width and no count is shown. That is a presentation decision made in the component, a conditional width and a conditional render: the vote counts are in the payload the server already sent you, and anyone who opens the network tab can read them. For a logged out visitor the counts are still on the wire even though nothing in the interface will ever show them. If the concealment ever needs to be real rather than polite, it has to move to the server.
What Happens When the File Changes
This is the part that took the longest to get right and is still the least comfortable. Publishing a page rebuilds its chips from scratch, so a poll that already has votes is destroyed and recreated on every sync. Votes are carried across by matching the old poll to the new one, then matching options by their position in the list. Rename an option and its votes follow, which is what you want. Reorder the options and the votes stay where they were, attached to whatever now sits at that index, which is almost certainly not what you want. There is no warning. Add options at the end and you are safe.
What the Wishlist Asked For, and What Arrived
Let visitors vote on a question
Multiple choice options
A results graph
Real time updates: results refresh when you vote, not when someone else does
An optional deadline: never built, a poll stays open forever
It Never Made the Changelog
The Poll chip landed on 22 April 2026. The changelog's most recent entry is dated 3 April 2026. So the chip you just voted in has no release note, and neither do Journey, Stats, Timeline, Thread or Audio, all of which shipped after the changelog stopped being kept up. Documenting a feature is a separate job from building it, and the gap between those two dates is what happens when only one of them is fun.
A footnote for anyone reading the source: the chip type list contains a VOTE entry alongside POLL. It is a reserved name with nothing behind it and has no connection to the voting on this page.

