Single page applications (SPA) load all necessary code at once rather than reloading pages for each interaction. This provides a more desktop-like experience. Key characteristics of SPAs include chunking data, using controllers and templates to separate concerns, routing to change views without reloads, and real-time communication. SPAs improve performance over traditional web apps by reducing page reloads and data transfers. They are well-suited for applications that need rich, responsive interfaces and real-time updates. Maintaining browser state, security, and analytics pose challenges for SPAs.