When using crunchyServer() to wrap your app in Crunch authentication and authorization, you need to wrap your UI body content inside crunchyBody().
crunchyBody(...)
Arguments
...: UI elements for your app
Returns
A uiOutput() container into which crunchyServer() will conditionally render output.
Details
This is the part that is conditionally rendered if the user is allowed. Any UI elements you want always to show, including <head> tags, should go outside this function.
Examples
## Not run:shinyUI(fluidPage( tags$head(# This is content that will always be rendered tags$title("My secure app")), crunchyBody(# This is content that only is rendered if the user is authorized fluidRow( column(6, h1("Column 1")), column(6, h1("Column 2"))))))## End(Not run)