A app stateless é um programa de aplicação que não salva os dados do cliente gerados em uma sessão para uso na próxima sessão com esse cliente. Cada sessão é realizada como se fosse a primeira vez e as respostas não dependem dos dados de uma sessão anterior. Em contraste, uma aplicação com estado salva dados sobre cada sessão cliente e usa esses dados na próxima vez que o cliente fizer uma requisição.
Quando uma aplicação é sem estado, o servidor não armazena nenhum estado sobre a sessão cliente. Ao invés disso, os dados da sessão são armazenados no cliente e passados para o servidor conforme necessário. Esta é uma consideração importante ao desenvolver aplicações com offline first em mente. Nessa abordagem ao desenvolvimento de software, os dados da sessão são armazenados localmente no dispositivo do usuário final quando a conectividade com a Internet não está disponível e são carregados e replicados na nuvem quando uma conexão se torna disponível.
A arquitetura distribuída que torna possível a escalabilidade horizontal na computação em nuvem tem impulsionado o interesse renovado em aplicativos sem estado e componentes de aplicativos sem estado. Um motivo é que quando os componentes de um aplicativo são stateless, eles podem ser facilmente redistribuídos em caso de falha e escalonados para acomodar alterações de carga. Outro motivo é que quando os aplicativos são stateless, eles podem ser facilmente conectados a outros aplicativos através de interfaces de programas de aplicativos (APIs).
Programação funcional, que muitas vezes é usada para microserviços e contentorização, também tem despertado o interesse em aplicativos stateless. A programação funcional é uma abordagem ao desenvolvimento de software que utiliza segmentos muito pequenos de código imutável. Cada função executa sua tarefa como se fosse pela primeira vez e está ciente, mas não dependente de outras funções no programa. Como todas as partes do programa são sem estado, os programadores podem montar funções de múltiplas maneiras sem ter que se preocupar com dependências que quebram o programa.