awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
reagent-project avatar

reagent-project/reagent

0
View on GitHub↗
4,872 stars·411 forks·Clojure·MIT·7 viewsreagent-project.github.io↗

Reagent

Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional programming approach to declarative UI design, where HTML structures and component hierarchies are defined using vector-based Hiccup syntax instead of JSX.

The project differentiates itself through a reactive state management system based on atoms. It tracks which components dereference specific state atoms to trigger automatic re-renders and provides state cursors to isolate updates to specific paths of a larger state atom. It also includes utilities for wrapping native JavaScript components and third-party libraries to ensure they remain compatible with the functional rendering cycle.

The framework covers a broad range of capabilities, including virtual DOM reconciliation, lifecycle management for side effects and cleanup, and render performance optimization through update batching and calculation memoization. It also provides tools for server-side rendering of static HTML strings, global state sharing via context, and security primitives for HTML content sanitization.

Features

  • Hiccup Data Representations - Implements a data-driven vector syntax for representing HTML structures instead of JSX.
  • Reactive State Management - Uses specialized reactive atoms to automatically trigger component re-rendering whenever state values are dereferenced.
  • Hiccup Markup Rendering - Converts vector-based data forms into renderable elements to allow simplified, declarative UI definitions.
  • ClojureScript-React Bridges - Provides an integration layer connecting ClojureScript functional models with the React rendering engine.
  • Reactive Derivations - Automatically computes and updates derived state values in response to changes in specific reactive state paths.
  • Reactive Dependency Monitoring - Monitors specific state atoms and triggers component re-renders only when the observed values change.
  • Component Lifecycle Management - Provides methods for initializing, updating, and destroying UI components programmatically via function wrappers and callbacks.
  • Lifecycle Side Effects - Manages side effects that execute upon component mount or dependency changes, with corresponding cleanup on unmount.
  • Reactive Context Tracking - Implements a runtime mechanism that tracks which components dereference state atoms to trigger automatic re-renders.
  • State Cursors - Defines pointers to specific paths within a larger state atom to limit updates and re-renders to relevant data subsets.
  • UI Lifecycle Phases - Manages side effects and cleanup logic across the mounting, updating, and unmounting phases of the UI.
  • Reactivity Dependency Graphs - Maps dependencies between observable state atoms and components to trigger precise, minimal updates.
  • Reactive State Cursors - Isolates component re-renders by creating focused views into specific paths of a larger reactive state atom.
  • Application State Management - Provides systems for tracking and updating application state via reactive atoms to drive UI changes in real-time.
  • Component Hierarchies - Transforms nested data structures and function references into a structured hierarchy of UI components.
  • Hiccup Component Transforms - Transforms nested vector-based data structures into renderable functional and class components.
  • Custom UI Markup Rendering - Renders user interfaces using a specialized vector-based markup syntax.
  • Data-to-Element Mappers - Transforms data structures into renderable UI elements and child components.
  • Declarative UI Dialects - Uses an embedded ClojureScript dialect (Hiccup) to describe UI layouts that compile to virtual DOM trees.
  • Element Template Compilations - Transforms descriptive data formats into renderable UI element trees.
  • Functional Components - Defines UI units as pure functions that integrate with reactive state and properties.
  • Hiccup-Based UI Declarations - Uses a vector-based syntax to describe HTML structures and component hierarchies for efficient rendering.
  • Reactive UI Updates - Automatically re-computes and updates the user interface in response to reactive state or property changes.
  • Automatic Dependency Tracking - Implicitly detects which reactive atoms are accessed during execution to register them as dependencies for automatic updates.
  • UI Component Definitions - Defines user interface elements using a structural, data-driven syntax wrapped in a compatible rendering layer.
  • Update Batching - Groups multiple state updates into single render cycles by deferring them until the browser repaints.
  • Reactive Components - Provides UI components that automatically synchronize their visual state with underlying data atoms.
  • Data-Driven Layouts - Uses nested vector structures to define UI layouts driven by data.
  • Virtual DOM Engines - Utilizes a virtual DOM engine to manage UI updates through the reconciliation of virtual element trees.
  • Rendering Performance Optimizations - Optimizes frame rates and update efficiency by batching state changes and deferring interface updates.
  • Component Local States - Manages ephemeral state within individual UI components using equality checks to trigger local re-renders.
  • Declarative UI Structures - Defines HTML structures and component hierarchies using vector-based Hiccup syntax instead of JSX.
  • DOM Component Mounting - Initializes the browser application by mounting the component tree into a specific DOM node.
  • Component - Executes custom logic during mount, update, or unmount phases to manage external resources and side effects.
  • HTML Content Renderers - Generates HTML output by combining dynamic data with reusable functional layouts.
  • Component-Based Renderers - Maps data structures and markup to native functional UI components.
  • Focused State Views - Provides a focused view into a specific path of a reactive atom to isolate updates and re-renders.
  • Hiccup Resolution Layers - Processes component outputs to resolve nested functions or vectors into final renderable elements.
  • Reactive State Synchronization - Provides a reactive system that automatically synchronizes state atom changes with UI component re-renders.
  • Virtual DOM Reconciliation - Synchronizes the browser DOM by calculating the minimal set of changes between two render cycles.
  • Computational Caching - Caches results of expensive JavaScript operations to eliminate redundant processing unless dependent data changes.
  • Rendering Schedulers - Schedules rendering tasks and hooks using animation frame requests to maintain application responsiveness.
  • Rendering Hooks - Provides lifecycle methods for executing code and manipulating the DOM immediately after a component render.
  • Hiccup-to-Native Component Adaptations - Adapts native components so they can be used as elements within data-driven Hiccup forms.
  • JavaScript Component Embeddings - Allows embedding of native JavaScript components to utilize their properties and lifecycle methods.
  • Native UI Component Wrapping - Wraps third-party JavaScript components to ensure they function correctly within the framework's rendering cycle.
  • Component Resource Cleanups - Implements patterns for releasing resources and canceling asynchronous operations when UI components unmount.
  • Concurrent Rendering Priorities - Implements mechanisms for marking UI updates as urgent or non-urgent to maintain interface responsiveness during heavy processing.
  • Render-Visual Synchronization - Executes logic immediately before or after scheduled renders to synchronize side effects with visual updates.
  • Error Boundaries - Implements error boundaries to catch runtime JavaScript errors in the component tree and prevent application crashes.
  • External Component Integration - Integrates native lifecycle methods and third-party JavaScript components into a functional ClojureScript environment.
  • Memoization Hooks - Implements hooks to cache expensive calculations and memoize function definitions to reduce redundant processing.
  • Component Context Sharing - Provides mechanisms for passing reactive state through a UI component tree to avoid prop drilling.
  • Reactive State Monitoring - Executes functions continuously whenever dependent reactive atoms change to enable real-time logging or side effects.
  • Asynchronous Content Rendering - Displays fallback UI components while waiting for asynchronous resources to resolve.
  • Class Components - Allows the definition of UI components as classes to manage internal state and lifecycle methods.
  • Class Generation Utilities - Generates JavaScript classes from method maps to bridge functional definitions with class-based lifecycles.
  • State-Synchronized Bindings - Automatically synchronizes form element states with the underlying reactive data model.
  • Functional-to-Class Component Adaptations - Wraps functional components to make them compatible with class-based lifecycle requirements.
  • Direct DOM Node Access - Enables capturing raw browser DOM nodes via callbacks for direct manipulation of element properties.
  • Render Batching - Implements update batching to ensure multiple state changes trigger only a single render cycle, reducing browser repaint overhead.
  • Third-Party Component Wrapping - Wraps external JavaScript components to maintain compatibility with the functional rendering cycle.
  • Component Tree Injections - Injects component trees into the document and supports hydrating existing server-side markup.
  • Reactive Side Effects - Executes functions immediately and repeatedly whenever any tracked state the function depends on changes.
  • Server-Side Rendering - Generates dynamic HTML content on the server to improve initial load performance and SEO.
  • Static HTML Generators - Transforms component trees into static, non-interactive HTML strings for server-side rendering.
  • Server-Side Renderers - Generates static HTML strings from component trees in a JavaScript environment for initial page loads.
  • Pre-rendering - Generates static HTML for components during the build process to improve initial load performance.
  • React Server-Side Renderers - Provides a mechanism to render components into static HTML strings on the server for faster initial page loads.
  • Static String Renderers - Converts component trees into static strings for non-streaming server-side environments.

Star history

Star history chart for reagent-project/reagentStar history chart for reagent-project/reagent

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does reagent-project/reagent do?

Reagent is a framework for building web user interfaces using ClojureScript and React.js. It enables a functional programming approach to declarative UI design, where HTML structures and component hierarchies are defined using vector-based Hiccup syntax instead of JSX.

What are the main features of reagent-project/reagent?

The main features of reagent-project/reagent are: Hiccup Data Representations, Reactive State Management, Hiccup Markup Rendering, ClojureScript-React Bridges, Reactive Derivations, Reactive Dependency Monitoring, Component Lifecycle Management, Lifecycle Side Effects.

What are some open-source alternatives to reagent-project/reagent?

Open-source alternatives to reagent-project/reagent include: day8/re-frame — re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized,… midudev/preguntas-entrevista-react — This project is a technical study resource and interview preparation guide focused on the React library. It provides a… vuejs/v2.vuejs.org — This is the comprehensive documentation website for the Vue 2 progressive JavaScript framework. It serves as a… effector/effector — Effector is a reactive state management library designed for building complex, event-driven applications. It functions… jorgebucaran/hyperapp — Hyperapp is a functional JavaScript framework for building hypertext applications. It centers on a state management… greatfrontend/top-reactjs-interview-questions — This project is a comprehensive interview preparation guide and technical study resource for React. It functions as a…

Open-source alternatives to Reagent

Similar open-source projects, ranked by how many features they share with Reagent.
  • day8/re-frameday8 avatar

    day8/re-frame

    5,532View on GitHub↗

    re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized, immutable database that serves as the single source of truth for the entire application state, enforcing a strict unidirectional data flow where events trigger state transitions and subsequent view updates. The framework distinguishes itself through a reactive signal graph and an interceptor-based middleware pipeline. By treating application logic as a sequence of data-driven events and declarative side effects, it decouples business logic from the view layer. This architectur

    Clojureclojurescriptre-framereact
    View on GitHub↗5,532
  • midudev/preguntas-entrevista-reactmidudev avatar

    midudev/preguntas-entrevista-react

    7,785View on GitHub↗

    This project is a technical study resource and interview preparation guide focused on the React library. It provides a comprehensive frontend interview question bank and concept references designed to help developers master core library primitives and prepare for professional job interviews. The resource covers detailed explanations of React's technical architecture, including state management patterns, performance optimization strategies, and component design. It serves as a knowledge assessment tool for developers to test their understanding of modern frontend engineering through a structur

    JavaScripthacktoberfestjavascriptreact
    View on GitHub↗7,785
  • effector/effectoreffector avatar

    effector/effector

    4,837View on GitHub↗

    Effector is a reactive state management library designed for building complex, event-driven applications. It functions as a data flow engine that models application logic as a directed acyclic graph, ensuring that state updates propagate automatically through interconnected nodes. By utilizing atomic state updates and declarative unit composition, the library maintains data consistency and provides a predictable execution model for managing application state. The project distinguishes itself through its framework-agnostic architecture, which decouples business logic from user interface implem

    TypeScriptbusiness-logiceffectorevent-driven
    View on GitHub↗4,837
  • vuejs/v2.vuejs.orgvuejs avatar

    vuejs/v2.vuejs.org

    4,981View on GitHub↗

    This is the comprehensive documentation website for the Vue 2 progressive JavaScript framework. It serves as a technical reference and development guide for building reactive user interfaces and single-page applications. The site provides a detailed JavaScript API reference and a web component directory. It covers the implementation of component-based architectures, reactive state management, and the use of a virtual DOM to synchronize application state with the browser. The documentation details capabilities including client-side routing, declarative DOM manipulation, and frontend build opt

    JavaScript
    View on GitHub↗4,981
See all 30 alternatives to Reagent→