archbase_flutter
Framework Flutter empresarial — services (API, auth, cache offline-first), widgets Material 3, templates de tela CRUD, validadores brasileiros (CPF/CNPJ) e CLI generator.
What this package is like to depend on
Last release 17 days ago
06 Aug 2026
Release timing varies
gaps range from 1 weeks to 2 months
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
3 months old
5 releases · first in 2026
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · May 2026 to Aug 2026Releases
latest 5-
0.7.006 Aug 2026Release notes
Open source →Adicionado
ArchbaseSyncEngine.save(coalesce: true)— coalescência local por(type, aggregateId), opt-in (defaultfalse). Desacopla a chave de coalescência (estável) dooperationId(id de mutação, único por envio):- enquanto a op está pendente, uma nova edição do mesmo
(type, aggregateId)substitui o payload da op ainda não enviada (preserva a posição na fila e reusa o id, que nunca saiu do device); - depois do ACK (op removida), a próxima edição vira uma op nova com UUID,
então o servidor não a devolve como
SKIPPEDpor reuso de id. - Elimina a perda silenciosa do anti-padrão de
operationIdestávelTYPE:aggregateId(edições descartadas após o primeiro envio).
- enquanto a op está pendente, uma nova edição do mesmo
ArchbaseAtomicWriteStore— capacidade OPCIONAL do store: grava a entidade otimista e a operação de outbox na mesma transação. O motor a usa quando o store implementa (oArchbaseSqfliteStoreimplementa); senão, cai no modo sequencial. Evita o estado inconsistente (entidade pendente sem op, ou registro removido antes do delete entrar na fila) após um crash.
Notas
- Tudo aditivo/opt-in: atualizar de 0.6.x não muda o comportamento de quem já
usa o motor. Nenhuma migração de schema (a coalescência usa as colunas
type/aggregate_idjá existentes). - Implementações próprias de
ArchbaseLocalStoreseguem válidas sem mudança; para ganhar a escrita atômica, basta também implementarArchbaseAtomicWriteStore.
-
0.6.206 Aug 2026Release notes
Open source →Adicionado
- Coalescing delete↔upsert (anti-ghost) no motor:
ArchbaseSyncEngine.save(..., supersedeAggregate: true)cancela todas as operações do mesmo agregado — abertas e terminais (exhausted/rejected/conflict) — antes de enfileirar a nova. Elimina o "registro que ressuscita": um DELETE não deixa para trás um UPSERT no dead-letter que seria recriado depois. - Resgate de dead-letter (opt-in) via
maxRescuesPerOperation(default0= desligado). Quando> 0, odrain()promove operaçõesexhaustedde volta apendingaté este teto por operação — destrava a fila quando o erro terminal pode ter sido resolvido no servidor (ex.: a dependência voltou a existir), sem virar retry infinito. Contador em memória (por sessão). Também exposto comoArchbaseSyncEngine.rescueExhausted()para chamada manual.
Notas
- Ambos são aditivos e opt-in (defaults preservam o comportamento anterior): atualizar de 0.6.1 não exige nenhuma mudança em quem já usa o motor.
- Coalescing delete↔upsert (anti-ghost) no motor:
-
0.6.130 Jul 2026Release notes
Open source →Adicionado
- Reconciliação por transação no motor:
ArchbaseSyncEngine.reconcilePendentes()pergunta ao servidor (viaArchbaseSyncSender.queryStatus) quais das operações ainda não confirmadas (pending/sending/failed/blocked/exhausted) já foram processadas e fecha essas — marca a entidadesincronizadoe remove a op. Resolve o caso "o servidor deu commit mas o cliente perdeu o response" (inclusive ops que esgotaram o retry). Read-only, por transação individual. ArchbaseSyncSender.queryStatus(operationIds)+ArchbaseSyncStatusResponse(contrato do endpointPOST /api/v1/sync/operations/status).ArchbaseSyncEngine.failedOperations()— expõe as ops em erro terminal (conflict/exhausted/rejected) comlastError, para o app listar com o motivo.
Notas
- Implementadores de
ArchbaseSyncSenderagora precisam do métodoqueryStatus(mudança de contrato).
- Reconciliação por transação no motor:
-
0.6.027 Jul 2026Release notes
Open source →Adicionado
- Módulo offline-first reutilizável em
lib/src/offline/(barrelarchbase_offline.dart):ArchbaseSyncEngine— outbox + drain single-flight, backoff exponencial + jitter,dependsOnque BLOQUEIA, dead-letter (exhausted) com retry manual, gating de binário, snapshot reativo para badges e hook de reconciliação.ArchbaseSyncable/ArchbaseSyncState— contrato de entidade sincronizável (id UUID cliente, syncState, clientUpdatedAt, serverVersion, deletedAt).ArchbaseSqfliteStore(implementaArchbaseLocalStore) — store local em single-table JSON + outbox,watch<T>()reativo, opener injetável para SQLCipher; registro porArchbaseEntityCodec(sem codegen).- Protocolo em lote (
archbase_sync_protocol.dart):ArchbaseSyncSender(porta), serialização de operações e parsing de ACKs (PROCESSED/SKIPPED/CONFLICT/BLOCKED/ REJECTED/FAILED) — casa comPOST /api/v1/sync/operationsdoarchbase-offline-sync. ArchbaseBinaryUploader(porta) para upload de binários em canal separado, com gating.
- ADR-0001 (motor offline-first) + design do contrato do módulo em
docs/.
- Módulo offline-first reutilizável em
-
0.5.316 May 2026Release notes
Open source →🎉 Primeira release pública no pub.dev
📦 https://pub.dev/packages/archbase_flutter
dependencies: archbase_flutter: ^0.5.3
Junto com a lib principal, os 2 adapters de state management também subiram:
📚 Documentação completa: https://edsonmartins.github.io/archbase-flutter-docs/
🚀 Boilerplate (template repo): https://github.com/edsonmartins/archbase-flutter-boilerplate
O que tem na lib
- Core — bootstrap, config/env, exceções, base de controllers/services
- Services — API client (Dio), Auth com refresh coordenado, Cache (Hive + TTL), Connectivity, Offline sync queue (retry + backoff), Storage unificado (SharedPrefs + SecureStorage), Geolocation, Push, Media
- Theme & i18n — Material 3 com tokens semânticos, alto contraste, escala de fonte; bundle pt-BR + en
- Forms — sistema declarativo (ArchbaseForm + ArchbaseFormController) + validators BR (CPF, CNPJ, CNH, placa, telefone) + máscaras
- Widgets — feedback, forms, layout, display, structural, charts (line/pie/bar/area), dialogs, media
- Screens templates — Login, Splash, CRUD List/Form, Detail, Settings, Intro
- CLI — dart run archbase_flutter:archbase feature gera scaffold completo de feature CRUD
Mudanças desta versão (0.5.3)
- documentation: no pubspec aponta para o URL real do site (/archbase-flutter-docs/)
- Adapters bumpados pra depender de archbase_flutter: ^0.5.3
Ver CHANGELOG.md para o histórico completo desde 0.1.0.
Estatísticas
- 296 testes (unit + widget) passando
- 4 flows Maestro E2E (login, CRUD, offline, settings)
- CI: 5 jobs (lib + 2 adapters + demo + APK build) + Maestro Cloud (Android + iOS)
Release notes
Open source →Mudou
documentation:no pubspec aponta para o URL real do site (/archbase-flutter-docs/— o repo de docs é separado da lib)- Adapters (
_riverpod,_getx) também atualizados — agora dependem dearchbase_flutter: ^0.5.3e o documentation URL correto