In this chapter, we have covered a lot of ground. We've seen that Shiny applications are generally made up of two files: server.R and ui.R. You've learned what each part of the code does, including setting up ui.R with the position and type of inputs and outputs, and setting up server.R with the data processing functions, outputs, and any reactive objects that are required.
The optional exercises have given you a chance to experiment with the code files in this chapter, varying the output types, using different widgets, and reviewing and adjusting their return values as appropriate. You've learned about the default layout in Shiny, sidebarLayout(), as well as the use of mainPanel() and tabsetPanel().
You've also learned about reactive objects and when you might use them. There's more on finely controlling reactivity later in the book.
In the next...