My (limited) understanding is that renderXXX functions are used to create html elements for the ui.
You can create other kinds of reactive objects for use in the server using reactive, reactiveValue and reactiveVals for example.
If you want to modify something in the ui based on calculations in the server you can use updateXXX to update one of the widgets.
For more complex widgets such as plotly plots or DT datatables you can use proxyXXX.
Hope this helps.