What you can build
Gyral treats every interaction as data. That makes these easy. Each one is a short recording of an example in the Gyral repository: no code here, just what the interface does.
Undo, redo and replay
Undo, redo, a scrubbable timeline and replay in a few lines: every edit is a message kept as data, so history is a list and the picture is a fold over it.
The usual way: Undo is a feature you build: command objects, inverse operations and snapshots kept in sync with mutable state.
Type-ahead without stale results
Type-ahead that never shows results for something you are no longer typing: one word, concurrency: switch, cancels the request in flight.
The usual way: Each keystroke fires a fetch and whichever answer lands last wins; fixing it means AbortControllers, request ids and "is this still current?" checks.
Works before JavaScript loads
One page that works completely with JavaScript off, then checks as you type and submits without a reload once JavaScript loads: same markup, same schema on both sides.
The usual way: You pick one: a server-rendered form, or a client app that is blank until its bundle runs, and validation rules written twice.
Run them yourself
Every demo is an example with tests. Clone the repository, then pnpm install and pnpm examples.