---
title: "Equatable escondendo dados de @Observable"
description: "Como um Equatable simplificado demais impede o @Observable de notificar mudanças de verdade."
canonical: "https://ronanrodrigo.dev/notes/equatable-observable-swiftui"
markdown: "https://ronanrodrigo.dev/notes/equatable-observable-swiftui.md"
last-updated: "2026-10-05"
---
## Equatable escondendo dados de @Observable

Uma implementação de `Equatable` simplificada demais pode impedir silenciosamente o `@Observable` do SwiftUI de notificar as views sobre mudanças de dados. No caso do autor, comparar modelos apenas por `id` causou atualizações de UI ausentes no app de treinos.

- **O problema**: comparar apenas por `id` fazia dados enriquecidos — rota, nome de cidade, estatísticas de frequência cardíaca — serem tratados como inalterados. `onChange(of:)` também depende de `==` e por isso perdia essas mudanças.
- **Comportamento da observação**: para propriedades `Equatable`, o `@Observable` usa equality antes de notificar observadores em atribuições de valor inteiro. O novo valor continua armazenado, então aparece em qualquer re-render não relacionado — o bug parece intermitente. Mutações in-place escapam dessa checagem.
- **Diagnóstico**: corrigir o `Equatable` revelou atualizações de câmera do MapKit desnecessárias, disparadas pelos mesmos dados.

[Acesse a fonte original](https://www.wesleymatlock.com/swiftui-equatable-observation-onchange/)
