I just use DevTools performance tab and record interactions there. But the performance is already pretty good, so no need to go crazy here :)
To get under 100ms the UI can't make request and wait for response. It's not possible to realistically do that under 100ms, so yeah, you will need some trick with either prefetching, caching older state or something like that. For simple page like this it's not clear to me that server-side rendering will have a notable benefit (I'd expect it will take React 20ms to render DOM and then browser will take another 50-100ms to do Layout either way).