A hypertext novel / interactive fiction engine and a markup language (implemented as a superset of Markdown) for writing mixed media stories on the web.

Stories in Recital are written in the stage file format, which is a superset of Markdown. Recital scripts are rendered down into MDX (or just passed directly into Recital).

The framework is still heavily under development, so there aren’t any sources yet and the documentation is in a woeful state. If you’re extremely daring, you can find an early build on npm, however.

What can it do?

  • Interactivity - Recital supports storing variables, activating / deactivating links based on values, and branching narratives via StoryLinks.
  • I like Markdown, and Recital extends it with some shorthand that is familiar to me
  • Recital uses React under the hood, and through configuration allows you to import any custom React components you want.
  • This includes animations (currently react-spring), which you can fold into your story for dynamic entrances / exits
  • Supports stages, where the system creates a separate screen akin to visual novels, where text can be drawn in 3D anywhere on the page


Mostly - ‘I wanted something that was like Twine but worked better with how I visualized stories and animations’. Also, I like building my own tools, because then I can edit them as I understand or change my preferred editing methods.

As for why I made the design choices I did:

Recital works best as a means of intertwining visuals, animations, and prose. I wrote it as a way of transitioning from writing pure prose into something more visual, without losing the advantages of the written text: prose makes it easy to dive deep into characters’ heads, while images can tell you a lot about a world or a character via appearance.

Also I really like using CSS to provide a little extra context - such as color-coding important text, or using emphases.

Its design was inspired by internet stories, specifically forum RPs (which often color-coded text based on the character speaking), and screenshot Let’s Plays (which would tell stories via text analysis and game screenshots).