Como criar um Power Apps com funcionamento offline

Em muitos cenários de campo, o usuário não pode depender de internet estável para trabalhar. Inspeções, checklists, visitas técnicas e coletas em ambiente fabril são exemplos em que o app precisa continuar funcionando mesmo sem conexão.
No Power Apps, existem dois caminhos principais para isso:
- modo offline nativo para apps Canvas com Dataverse, configurado por perfil offline no Power Apps Mobile;
- armazenamento local com SaveData e LoadData, útil para cenários mais simples fora do Dataverse.
Neste artigo, vamos seguir um exemplo pequeno e prático: um app Canvas de checklist offline, em que o usuário consegue visualizar itens, preencher status e continuar operando sem internet.
Quando vale a pena usar modo offline
O funcionamento offline faz sentido quando:
- o app será usado em celular ou tablet;
- a conectividade é instável ou inexistente em parte do processo;
- o usuário precisa consultar e atualizar dados localmente;
- a sincronização pode acontecer depois, quando a conexão voltar.
Um ponto importante: apps Canvas não rodam offline no navegador web. Esse cenário é suportado no Power Apps Mobile, em plataformas móveis suportadas.
Duas abordagens possíveis
1) Offline nativo com Dataverse
Se o app usa Dataverse, o suporte offline é integrado. O Power Apps pode baixar os dados no dispositivo e sincronizar as alterações com o Dataverse quando a conexão retornar. A configuração é feita ativando a opção Can be used offline e selecionando um offline profile.
2) Offline simples com SaveData e LoadData
Se o app não usa Dataverse, você pode armazenar coleções localmente no dispositivo. Essa abordagem é útil para exemplos menores e protótipos, embora tenha limitações e não substitua o offline nativo em cenários mais robustos.
Exemplo prático: app Canvas offline de checklist
Para deixar o artigo simples de reproduzir, o exemplo abaixo usa a abordagem com coleção local.
Cenário
Vamos montar um app com uma lista de verificação contendo:
- Item
- Responsável
- Status
- Observação
A ideia é:
- carregar os registros em uma coleção;
- salvar essa coleção localmente no dispositivo;
- permitir uso sem internet;
- recarregar os dados locais quando o app abrir novamente.
Estrutura do exemplo
Você pode criar uma collection inicial com alguns itens de checklist.
Exemplo de carga inicial
No App.OnStart:
ClearCollect(
colChecklist,
Table(
{
ID: 1,
Item: "Verificar painel elétrico",
Responsavel: "Luiz",
Status: "Pendente",
Observacao: ""
},
{
ID: 2,
Item: "Inspecionar etiquetas de segurança",
Responsavel: "Erick",
Status: "Pendente",
Observacao: ""
},
{
ID: 3,
Item: "Conferir extintores",
Responsavel: "Fernando",
Status: "Pendente",
Observacao: ""
}
)
)Depois disso, o app já tem uma base simples para exibir em galeria.
Passo 1: criar a galeria com os itens
Adicione uma Gallery e use:
colChecklist
Dentro da galeria, exiba:
- ThisItem.Item
- ThisItem.Responsavel
- ThisItem.Status
Você também pode incluir um ícone ou botão para editar o item selecionado.

Passo 2: criar a edição do item
Na tela de edição, você pode usar controles simples:
- Label para o nome do item
- Dropdown para status
- Text input para observação
- Botão para salvar
Exemplo de atualização
No botão Salvar:
Patch(
colChecklist,
LookUp(colChecklist, ID = varItemSelecionado.ID),
{
Status: drpStatus.Selected.Value,
Observacao: txtObservacao.Text
}
)E no OnSelect do item da galeria:
Set(varItemSelecionado, ThisItem)

Passo 3: salvar os dados localmente no dispositivo
Depois de atualizar a collection, salve localmente com SaveData.
No botão Salvar, após o Patch, adicione:
SaveData(colChecklist, "ChecklistLocal")A função SaveData armazena uma coleção localmente no dispositivo, para ser recarregada depois com LoadData. Esse recurso é indicado justamente para cenários offline simples.

Passo 4: recarregar os dados locais ao abrir o app
No App.OnStart, antes de recriar a collection padrão, você pode tentar carregar os dados locais:
LoadData(colChecklist, “ChecklistLocal”, true);
If(
IsEmpty(colChecklist),
ClearCollect(
colChecklist,
Table(
{
ID: 1,
Item: "Verificar painel elétrico",
Responsavel: "Fernando",
Status: "Pendente",
Observacao: ""
},
{
ID: 2,
Item: "Inspecionar etiquetas de segurança",
Responsavel: "Fernando",
Status: "Pendente",
Observacao: ""
},
{
ID: 3,
Item: "Conferir extintores",
Responsavel: "Fernando",
Status: "Pendente",
Observacao: ""
}
)
)
)O terceiro parâmetro true faz com que o app não gere erro caso o armazenamento local ainda não exista.

Passo 5: identificar se o usuário está offline
O Power Apps permite verificar o estado da conexão com o objeto Connection. A documentação recomenda esse uso para detectar se o app está online, offline ou em conexão limitada.
Você pode usar isso para exibir uma mensagem ao usuário.
Exemplo
No texto de um label:
If(
Connection.Connected,
"Online",
"Offline"
)Ou até mostrar um aviso visual:
If(
!Connection.Connected,
"Você está sem conexão. Os dados serão mantidos localmente.",
""
)
Conclusão
Criar um app Canvas com funcionamento offline no Power Apps é totalmente viável, e o melhor caminho depende do cenário.
Para um exemplo pequeno e rápido de demonstrar, SaveData e LoadData resolvem muito bem. Já para aplicações corporativas com Dataverse, o offline nativo no Power Apps Mobile é a abordagem mais robusta e atual.
Se a ideia é montar um artigo técnico com boa demonstração visual, um checklist offline é um excelente exemplo: simples de construir, útil para o leitor e menos comum do que os tutoriais tradicionais de formulário e galeria.
Erick Alves de Moura é Head of Delivery e Arquiteto Principal da Trinapse, consultoria brasileira especializada em Microsoft 365. Acumula 14 anos de experiência em arquitetura e entrega de soluções sobre SharePoint, Power Platform, Microsoft Graph e Copilot, sempre em ambientes corporativos de grande porte.
Ver maisVer menos
Ao longo da carreira, conduziu migrações de SharePoint on-premises para o SharePoint Online, desenhou intranets corporativas, automatizou processos de negócio com Power Apps e Power Automate e, mais recentemente, projetou agentes de IA integrados ao Microsoft 365.
São projetos com milhares de usuários, regras de governança rígidas e integração com sistemas legados, o tipo de cenário em que a decisão de arquitetura importa mais do que a ferramenta.
Fluente em inglês, atende clientes globais e é o arquiteto responsável pela conta da Bayer nos Estados Unidos, no Brasil, atua junto a cooperativas de crédito, agronegócio e indústria, setores com forte exigência de conformidade e continuidade operacional.
Escreve no blog da Trinapse desde 2019. São mais de 240 artigos publicados sobre SharePoint, Modern Workplace, Copilot e agentes de IA, Power Platform e automação de processos, em dois formatos: tutoriais técnicos passo a passo e análises de decisão sobre arquitetura e adoção do Microsoft 365. Todo conteúdo nasce de projeto real entregue, não de documentação traduzida.



