diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for reflex-dom-ionic
 
-## 0.1.0.0 -- YYYY-mm-dd
+## 0.2.0.0 
+
+ionTextArea added
+
+## 0.1.0.0 
 
 * First version. Released on an unsuspecting world.
diff --git a/reflex-dom-ionic.cabal b/reflex-dom-ionic.cabal
--- a/reflex-dom-ionic.cabal
+++ b/reflex-dom-ionic.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               reflex-dom-ionic
-version:            0.1.0.1
+version:            0.2.0.0
 
 
 synopsis: Compatible highlevel Wigdets for some Ionic Input Components
diff --git a/src/Reflex/Dom/Widget/Ionic.hs b/src/Reflex/Dom/Widget/Ionic.hs
--- a/src/Reflex/Dom/Widget/Ionic.hs
+++ b/src/Reflex/Dom/Widget/Ionic.hs
@@ -3,7 +3,8 @@
 {-# LANGUAGE FlexibleContexts #-}
 module Reflex.Dom.Widget.Ionic
   (ionInputElement,
-  ionSelectElement)
+  ionSelectElement,
+  ionTextAreaElement)
 where
 
 import Control.Lens (Identity(..), imapM_, iforM_, (^.), makeLenses)
@@ -25,7 +26,9 @@
 import qualified GHCJS.DOM.GlobalEventHandlers as Events
 import qualified GHCJS.DOM.HTMLInputElement as Input
 import qualified GHCJS.DOM.HTMLSelectElement as Select
+import qualified GHCJS.DOM.HTMLTextAreaElement as TextArea
 
+
 import qualified GHCJS.DOM.EventTargetClosures as DOM (EventName, unsafeEventName, unsafeEventNameAsync)
 --import qualified GHCJS.DOM.Types as DOM
 --import qualified GHCJS.DOM.EventM as DOM
@@ -133,3 +136,33 @@
         , _selectElement_raw = domSelectElement
         }
   return (wrapped, result)
+
+
+ionTextAreaElement
+  :: (MonadWidget t m, DomRenderHook t m, TriggerEvent t m )
+  => TextAreaElementConfig EventResult t (DomBuilderSpace m) ->
+  m (TextAreaElement EventResult  (DomBuilderSpace m) t)
+ionTextAreaElement cfg = do
+  (e@(Element eventSelector domElement), _) <- element "ion-textarea" (cfg ^. textAreaElementConfig_elementConfig) $ return ()
+  let domTextAreaElement = uncheckedCastTo DOM.HTMLTextAreaElement domElement
+  TextArea.setValue domTextAreaElement $ cfg ^. textAreaElementConfig_initialValue
+  v0 <- TextArea.getValue domTextAreaElement
+  let getMyValue = TextArea.getValue domTextAreaElement
+  valueChangedByUI <- requestDomAction $ liftJSM getMyValue <$ Reflex.select eventSelector (WrapArg Input)
+  valueChangedBySetValue <- case _textAreaElementConfig_setValue cfg of
+    Nothing -> return never
+    Just eSetValue -> requestDomAction $ ffor eSetValue $ \v' -> do
+      TextArea.setValue domTextAreaElement v'
+      getMyValue -- We get the value after setting it in case the browser has mucked with it somehow
+  v <- holdDyn v0 $ leftmost
+    [ valueChangedBySetValue
+    , valueChangedByUI
+    ]
+  hasFocus <- mkHasFocus e
+  return $ TextAreaElement
+    { _textAreaElement_value = v
+    , _textAreaElement_input = valueChangedByUI
+    , _textAreaElement_hasFocus = hasFocus
+    , _textAreaElement_element = e
+    , _textAreaElement_raw = domTextAreaElement
+    }
