Optimizing a React SPA Part 2: Profilers and Finding Bottlenecks