I noticed that it takes two touches to get the todo to submit, and decided to look into it.

It seems that there is some interaction with an Input inside a ScrollView where a tap outside of the keyboard is used to dismiss the keyboard, but isn't passed down to the children of the SV. The simplest thing I could find is to add

keyboardShouldPersistTaps="handled"


To the ScrollView tag, and add

Keyboard.dismiss()


to the submitTodo method (add Keyboard to the react-native imports)

I'm not sure its helpful to have this level of detail in the intro app, but a note to the effect of 'it takes two touches to submit a Todo, this will be addressed later in the book" might help
in the v8 pdf

p 72 - let todoIndex = 0
p 74 - const todoIndex = 0

1) Is there a reason this isn't part of the component state?

2) I'm surprised that marking todoIndex as 'const' you are able to update the number in submitTodo()
I'm experimenting with RN as a ObjC/Swift iOS dev, and very new to JS, especially modern JS. Chapter 2 is an wonderful reference of the differences between the two syntaxes. I've read several tutorials and other books that use the createClass syntax, and some that use the Class syntax, and I had trouble mapping between the two.