at my startup we've used all three and the difference is always a debate until we realize the app only needs to render a list and update a single component