add_healthcheck() registers healthcheck endpoints on any Shiny app object by decorating its internal HTTP handler – no uiPattern changes, no plumber sidecar, no second port. Registrations stack for separate liveness/readiness endpoints, handler errors are converted into machine-readable 503 responses, and verbose (default: shiny::in_devmode()) logs probe hits to the console.
ts_utc() formats RFC 3339 / ISO 8601 UTC timestamps.
A runnable example app ships under inst/shiny/hello.
Testing
Three-tier test suite: pure unit tests, app-object introspection tests, and live wire tests against a real running app (non-blocking shiny::startApp() with promise-based requests), including a cross-process probe test matching real orchestrator behavior.