diff --git a/field_input.go b/field_input.go
index fde27c84..6842c4f9 100644
--- a/field_input.go
+++ b/field_input.go
@@ -273,10 +273,6 @@ func (i *Input) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	var cmds []tea.Cmd
 	var cmd tea.Cmd
 
-	i.textinput, cmd = i.textinput.Update(msg)
-	cmds = append(cmds, cmd)
-	i.accessor.Set(i.textinput.Value())
-
 	switch msg := msg.(type) {
 	case updateFieldMsg:
 		var cmds []tea.Cmd
@@ -362,6 +358,10 @@ func (i *Input) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		}
 	}
 
+	i.textinput, cmd = i.textinput.Update(msg)
+	cmds = append(cmds, cmd)
+	i.accessor.Set(i.textinput.Value())
+
 	return i, tea.Batch(cmds...)
 }
 
diff --git a/field_text.go b/field_text.go
index 22b77e07..7424a48e 100644
--- a/field_text.go
+++ b/field_text.go
@@ -253,10 +253,6 @@ func (t *Text) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	var cmds []tea.Cmd
 	var cmd tea.Cmd
 
-	t.textarea, cmd = t.textarea.Update(msg)
-	cmds = append(cmds, cmd)
-	t.accessor.Set(t.textarea.Value())
-
 	switch msg := msg.(type) {
 	case updateValueMsg:
 		t.textarea.SetValue(string(msg))
@@ -338,6 +334,10 @@ func (t *Text) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		}
 	}
 
+	t.textarea, cmd = t.textarea.Update(msg)
+	cmds = append(cmds, cmd)
+	t.accessor.Set(t.textarea.Value())
+
 	return t, tea.Batch(cmds...)
 }