Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A ClojureScript library for Client/Server interaction
branch: master
Failed to load latest commit information.
src Remove unused fn that caused cljs compiler warning
test/fetch initial import
.gitignore initial import Bump to 0.2.0 Add contributing Update project.clj and switch to MIT since all LT projects use it
project.clj Update project.clj and switch to MIT since all LT projects use it


A ClojureScript library that makes client/server interaction painless.



Remotes let you make calls to a noir server without having to think about XHR. On the client-side you simply have code that looks like this:

(ns playground.client.test
  (:require [fetch.remotes :as remotes])
  (:require-macros [fetch.macros :as fm]))

(fm/remote (adder 2 5 6) [result]
  (js/alert result))

(fm/remote (get-user 2) [{:keys [username age]}]
  (js/alert (str "Name: " username ", Age: " age)))

;; for a much nicer experience, use letrem
(fm/letrem [a (adder 3 4)
            b (adder 5 6)]
    (js/alert (str "a: " a " b: " b)))

Note that the results we get are real Clojure datastructures and so we use them just as we would in normal Clojure code. No JSON here.

The noir side of things is just as simple. All you do is declare a remote using defremote.

(use 'noir.fetch.remotes)

(defremote adder [& nums]
           (apply + nums))

(defremote get-user [id]
           {:username "Chris"
            :age 24})

(server/start 8080)


Copyright (c) 2014 Kodowa, Inc. & Light Table contributors

Distributed under the MIT License. See

Something went wrong with that request. Please try again.