Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. Reitit

Reitit

EPL-1.0Clojure0.10.1

A fast data-driven routing library for Clojure and ClojureScript with bi-directional routing and pluggable coercion.

Visit WebsiteGitHubGitHub
1.6k stars260 forks0 contributors

What is Reitit?

Reitit is a fast, data-driven routing library for Clojure and ClojureScript that handles both server-side and client-side routing. It solves the problem of defining, matching, and generating URLs in a consistent, extensible way across different web frameworks like Ring, Pedestal, and frontend applications.

Target Audience

Clojure and ClojureScript developers building web applications, REST APIs, or single-page apps who need a robust, performant routing solution with strong validation and framework integration.

Value Proposition

Developers choose Reitit for its combination of speed, modularity, and excellent developer experience—offering bi-directional routing, pluggable coercion with popular validation libraries, and seamless integration with the Clojure ecosystem.

Overview

A fast data-driven routing library for Clojure/Script

Use Cases

Best For

  • Building REST APIs in Clojure with Ring or Pedestal
  • Developing single-page applications in ClojureScript with client-side routing
  • Projects requiring automatic request/response validation using Malli, Schema, or clojure.spec
  • Teams needing OpenAPI or Swagger documentation generation from routes
  • Applications where performance-critical routing is a priority
  • Modular web architectures where routing logic must be reused across different frameworks

Not Ideal For

  • Projects using minimal web frameworks where a simpler router like Compojure suffices without modular overhead
  • Teams heavily invested in non-Clojure web stacks, as Reitit is tightly coupled to the Clojure ecosystem
  • Applications requiring out-of-the-box WebSocket routing, since Reitit focuses on HTTP-based routing without native real-time support
  • Quick prototypes or hackathons where rapid setup with opinionated, all-in-one frameworks is prioritized

Pros & Cons

Pros

Data-Driven Flexibility

Routes are defined as plain Clojure data structures, enabling easy composition and programmatic manipulation, as shown in the quick start with vector-based definitions.

Pluggable Coercion

Integrates seamlessly with Malli, Schema, and clojure.spec for automatic request/response validation, reducing boilerplate and ensuring data integrity, demonstrated in the Ring example with coercion errors.

Framework Agnostic

Offers first-class support for Ring, HTTP interceptors, Pedestal, and frontend routing, allowing consistent routing logic across server and client applications.

Modular Architecture

Core routing is separated from optional modules like OpenAPI and Swagger, enabling lean deployments and customization, though this adds setup complexity.

Performance Optimized

Benchmarked as fast with efficient route matching and generation, crucial for high-traffic applications, as highlighted in the README's performance section.

Cons

Configuration Overhead

The modular design requires selecting and integrating multiple dependencies for features like coercion and middleware, complicating initial setup compared to all-in-one solutions.

Version Constraints

Mandates Clojure 1.11 and Java 11+, which may hinder adoption in legacy projects or environments with older JVM versions.

Steeper Learning Curve

The data-driven approach and extensive use of route data can be challenging for developers unfamiliar with Clojure's functional idioms or coming from imperative routing libraries.

Limited Built-in Features

Common functionalities like middleware and interceptors are in separate modules, adding dependency management overhead versus integrated frameworks.

Frequently Asked Questions

Quick Stats

Stars1,562
Forks260
Contributors0
Open Issues73
Last commit25 days ago
CreatedSince 2017

Tags

#clojurescript#api#interceptors#coercion#data-driven#swagger#frontend#openapi#ring#clojure#web-framework#middleware#routing

Built With

C
Clojure
C
ClojureScript
J
Java

Links & Resources

Website

Included in

Clojure2.8k
Auto-fetched 1 day ago

Related Projects

CompojureCompojure

A concise routing library for Ring/Clojure

Stars4,115
Forks260
Last commit7 months ago
PedestalPedestal

The Pedestal Server-side Libraries

Stars2,763
Forks311
Last commit14 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub