                  (st/emit! (dwt/update-overflow-text id true))
 
                  (and (= :fixed (:grow-type shape)) (:overflow-text shape) (<= height (:height shape)))
-                 (st/emit! (dwt/update-overflow-text id false)))
-
-               (if (#{:auto-width :auto-height} grow-type)
-                 (st/emit! (dw/update-shape id (if (= grow-type :auto-width)
-                                                 {:width width :height height}
-                                                 {:height height}))))))))))
+                 (st/emit! (dwt/update-overflow-text id false))
+
+                 (= grow-type :auto-width)
+                 (st/emit! (dw/update-dimensions [id] :width width)
+                           (dw/update-dimensions [id] :height height))
+
+                 (= grow-type :auto-height)
+                 (st/emit! (dw/update-dimensions [id] :height height))
+                 )))))))
 
     [:foreignObject {:ref self-ref
                      :transform (geom/transform-matrix shape)

    (mf/use-effect
     (mf/deps content)
     (fn []
       (reset! state (parse-content content))))

    ;; Checks the size of the wrapper to update if it were necesary
    (mf/use-effect

             (let [content (js->clj val :keywordize-keys true)
                   content (first content)]
               (st/emit! (dw/update-shape id {:content content}))
               (reset! state val)
               (reset! content-var content)))))

        loaded-fonts (mf/use-var 0)
        on-load-font #(swap! loaded-fonts inc)]
