Matrix/Element support client-side widgets, like [Polls][polls]. polls are done 100% client-side, using ordinary events with the "m.poll" type. unfortunately, that means the rendering is hard-coded into the client; there's no generalizability. widgets might be the generalization for polls. documentation is scattered: - `#matrix-widgets:matrix.org` to ask for help - [aggregated links](https://github.com/vector-im/element-web/issues/20669#issuecomment-1367623830) - ["widgets, the book"](https://github.com/matrix-org/matrix.org/pull/825/files) - ["widgets, the spec"](https://github.com/matrix-org/matrix-spec-proposals/pull/2764) - [widgets google doc](https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit#heading=h.9rn9lt6ctkgi) - this is what the above links were based on - [semi-official "sticker picker" example widget](https://github.com/matrix-org/simple-stickerpicker-widget) - [Widget JS API/library](https://github.com/matrix-org/matrix-widget-api) - though, this might work *only* in the web version of Element? [polls]: https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/polls/proposals/3381-polls.md