A ClojureScript library providing higher-level abstractions and utilities for building Om applications with React.
om-tools is a ClojureScript library that provides enhanced tools and abstractions for building user interfaces with the Om framework and React. It simplifies component definition, adds optional Schema-based validation, and improves DOM manipulation with more idiomatic Clojure syntax. The library addresses common pain points in Om development by reducing boilerplate and enabling better data validation and mixin support.
ClojureScript developers building web applications with the Om framework who want improved developer experience, reduced boilerplate, and additional features like Schema validation and mixin support.
Developers choose om-tools for its concise component definitions, optional Schema validation for robust data handling, and enhanced DOM utilities that align with Clojure naming conventions. It provides higher-level abstractions over Om's base API while maintaining compatibility and performance.
Tools for building Om applications
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The defcomponent macro eliminates the need for reify in Om components, making definitions concise and readable, as shown in the counter example comparison.
Enables optional Schema annotations for component data, bringing React-like prop validation to ClojureScript data structures for improved robustness, as demonstrated in the progress-bar schema.
om-tools.dom provides Clojure-friendly attribute names and allows children in collections without apply, streamlining DOM manipulation code with more natural syntax.
The defmixin macro simplifies using React mixins within Om, encapsulating cross-cutting concerns without dropping to JavaScript, as shown in the set-interval-mixin example.
The library lacks an active maintainer, which can lead to unresolved bugs, compatibility issues with newer Om or React versions, and limited community support.
om-tools is only useful for projects using Om, a framework that has seen declining adoption, making it less relevant for modern ClojureScript UI development with alternatives like Reagent.
The state proxy in defcomponentk is experimental and has quirks, such as state changes not being immediately available when dereferenced in the same render phase, which can cause confusion.