You now have a bundle of useful techniques under your belt, giving you the ability to create a wide range of useful apps. Next we’ll turn our attention to the theory of reactivity that underlies the magic of Shiny:

  • In Chapter 13 you’ll learn why the reactivity programming model is needed, and a little bit about the history of reactive programming outside of R.

  • In Chapter 14, you’ll learn the full details of the reactive graph, which determines exactly when reactive components are updated.

  • In Chapter 15, you’ll learn about the underlying building blocks, particularly observers and timed invalidation.

  • In Chapter 16, you’ll learn how to escape the constraints of the reactive graph using reactiveVal() and observe().

You certainly don’t need to understand all these details for routine development of Shiny apps. But improving your understanding will help you write correct apps from the get go, and when something behaves unexpectedly you can more quickly narrow in on the underlying issue.