   (set! (.-cljsIsDirty C) true)
   (.queue-render render-queue C))
 
-(defn do-render [C f]
+(defn do-render [C]
   (set! (.-cljsIsDirty C) false)
   (binding [*current-component* C]
-    (let [p (js-props C)
-          argv (aget p cljs-argv)
-          n (count argv)
+    (let [f (aget C cljs-render)
+          _ (assert (fn? f))
+          p (js-props C)
           res (if (nil? (aget C "componentFunction"))
                 (f C)
-                (case n
-                  1 (f)
-                  2 (f (argv 1))
-                  3 (f (argv 1) (argv 2))
-                  4 (f (argv 1) (argv 2) (argv 3))
-                  5 (f (argv 1) (argv 2) (argv 3) (argv 4))
-                  (apply f (subvec argv 1))))
-          conv (if (vector? res)
-                 (tmpl/as-component res (aget p cljs-level))
-                 (if (fn? res)
-                   (do-render C (set! (.-cljsRenderFn C) res))
-                   res))]
-      conv)))
-
-(defn render [C]
+                (let [argv (aget p cljs-argv)
+                      n (count argv)]
+                  (case n
+                    1 (f)
+                    2 (f (argv 1))
+                    3 (f (argv 1) (argv 2))
+                    4 (f (argv 1) (argv 2) (argv 3))
+                    5 (f (argv 1) (argv 2) (argv 3) (argv 4))
+                    (apply f (subvec argv 1)))))]
+      (if (vector? res)
+        (tmpl/as-component res (aget p cljs-level))
+        (if (fn? res)
+          (do
+            (aset C cljs-render res)
+            (do-render C))
+          res)))))
+
+(defn reactive-render [C]
   (assert C)
   (when (nil? (.-cljsRatom C))
     (set! (.-cljsRatom C)
           (ratom/make-reaction
-           #(do-render C (.-cljsRenderFn C))
+           #(do-render C)
            :auto-run (if tmpl/isClient
                        #(queue-render C)
                        identity))))

(declare ^:dynamic *current-component*)

(def cljs-state "cljsState")

;;; Accessors


      (set! (.-cljsIsDirty C) false)
      (when f (f C)))

    nil))

(defn default-wrapper [f]
