One HTML/JS/CSS bundle, loaded once from S3, then talking to a REST API on its own — and the two specific ways that wiring breaks in practice.
A traditional web page asks a server to render HTML for every click. A single-page application asks once — the browser loads one HTML/JS/CSS bundle, and everything after that is JavaScript deciding what to show, running entirely on the visitor's machine. The server never renders a second page; it just answers data requests the running app makes on its own.