# Valeurs, snapshots et submission

<PageBadges />

## État initial et restauration

Utilisez `initialValues` pour une graine d'enregistrement ordinaire. `overrideValues` ont priorité et costume
Pour une restauration complète, préférez `initialSnapshot`:

```jsx
<FormRenderer
  schema={schema}
  initialSnapshot={savedDraft}
  onSnapshotChange={(snapshot, change) => {
    if (change.dirty) queueLocalDraft(snapshot)
  }}
  onSubmit={uploadRecord}
/>
```

Le snapshot conserve les valeurs brutes, les entrées reproductibles imbriquées et les horodatages ensemble:

```js
{
  raw_values: {},
  repeatable: {},
  timestamps: {
    created_at_client: null,
    updated_at_client: null,
    created_at_server: null,
    updated_at_server: null,
  },
}
```

`onSnapshotChange(snapshot, meta)` signale d'abord `{ kind: "seed", dirty: false }`; utilisateur ultérieur
changements utilisent `{ kind: "change", dirty }`.

## Enregistrer drafts ou soumettre des enregistrements

Définissez `primaryActionMode="save"` et fournissez `onSave(snapshot, meta)` pour un draft tolérant à la validation
action. `meta` contient le résumé de validation actuel et l'état sale.

L'action de soumission par défaut valide en premier. `onSubmit(record, meta)` reçoit l'enregistrement structuré
décrit dans [Sortie et enregistrements](/fr/core/output-records), plus valeurs brutes, état répétable,
timestamps, et le résumé de validation.

Le binding ne persiste ni ne synchronise la charge utile. Stocker snapshots localement, télécharger
enregistre, réessaie les échecs et résout les conflits dans l'application hôte.
