Om allows users to represent their UIs simply as EDN. Because ClojureScript data is immutable data, Om can always rapidly re-render the UI from the root.
Thus Om UIs are out of the box snapshotable and undoable without much overhead or implementation complexity.
See for yourself.
Unique Features
Om supports features not currently present in React:
- Component construction can be intercepted via :instrument. Simplifies debugging components and generic editors.
- Provides stream of all application state change deltas via :tx-listen. Simplifies synchronization online and offline.
- Customizable semantics. Fine grained control how components store state, even for components outside of your control. Simplifies using Om components outside the Om framework, debugging, and adding event hooks not anticipated by original component designer.
Tutorial
There is an in-depth tutorial that will introduce you to the core concepts of Om here and a real-world integration example here.