decouple showcase mode from app boot; factor out of shiny.js