Start here. This is the direct spoken answer to practice first.
Why this question matters
Stale forms are where frontend convenience and backend correctness meet. The system needs to protect data without giving users a mysterious failure.
I would include a concurrency token, such as a row version or updated-at value, when the form loads. The update request sends that token back. If the database row changed since the user loaded it, the API returns a conflict response instead of overwriting the newer change. The UI explains that the record changed, shows the latest data, and lets the user reload, compare, or reapply their edits depending on the domain.