# Conclusion

Of course our version of React elides over many details that React must contend with, like starting a re-render from where state changes and event handlers. To build high-performance React applications, however, the most important piece to understand is how and when React renders components, which is what we have learned in creating our own mini version of React. 

At this point, you should now have an understanding of how React works. You should now understand why using a good `key` is so critical, what it actually means to have React render a tree of components, and how React chooses when to replace a node or re-use one. If your React application is performing poorly you can think about which part of the algorithm or heuristics might be the issue. 

Now, there is a lot more to explore. Like, how do you track down the cause of a performance bottleneck? Or, how do you use the React APIs in a performant way? These types of questions should be easier to track down and understand with the foundations we covered. So I hope this is just the start of your high-performance React journey. 


