         (update-binding (second new-props)))
 
       :reagent-render
-      (fn [{:keys [on-change form-name path on-blur error-paths] :as props}]
+      (fn [{:keys [key on-change form-name path on-blur error-paths] :as props}]
         (let [flags @(rf/subscribe [:re-form/input-flags form-name path])
               is-form-submitting @(rf/subscribe [:re-form/is-form-submitting form-name])
               errors @(rf/subscribe [:re-form/input-errors form-name (into [path] error-paths)])]
           [:div.re-form-field {:class (->> flags
                                            (filter second)
                                            (map #(name (first %)))
-                                           (str/join " "))}
+                                           (str/join " "))
+                               :key key}
            [(:input props)
             (merge (dissoc props :form-name :path :input :validators)
                    {:value @(:value @state)

          (rf/dispatch [:re-form/input-removed form-name path]))

        update-binding
        (fn [{new-form :form-name new-path :path validators :validators}]
          (swap! state (fn [{val :value err :errors path :path form :form-name :as curr-state}]
                         (if (not (and (= new-path path) (= new-form form)))
                           (do
                             (when (and form path)
                               (unbind-input form path))

                               ;; future validations
                               (add-watch new-val-subscr :binded-field run-validators)

                               {:soft-key new-soft-key
                                :form-name new-form
                                :path new-path
                                :value new-val-subscr
                                :validators validators}))
