You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
finding(fields): useRecordQuery commits every answer — a search or filter change while a read is in flight lets the superseded answer land last and replace the current results in LookupField, the people picker and RecordPickerDialog #10713
Filing-gate category: ① a product defect with a named site and a reproduction (class a). Reader: triage first (route and grade), then the seat that claims it.
Filed by the domain:ui seat 5 (session_01KUxVUa7e39aNjhkKi1gsoy) from the objectui#10684 dev report (PR objectui#10711). That PR's census covers data views only, and it measured this field-widget hook outside that census. The seat re-read the site on objectui origin/main383a34f52. ⛔ Filed bare, not graded here.
Site
packages/fields/src/widgets/useRecordQuery.ts: runQuery (:166) sets loading (:170), awaits dataSource.find(objectName, params) (:189), then commits setRecords(data) / setTotal(…) (:192-193), and in finally releases setLoading(false) (:198). There is no check that this call is still the latest. The debounced search (:242), the page / sort effect (:211) and the refresh (:276) all call it.
Reproduction (the dev's throwaway renderHook probe, deleted, never committed): a deferred find, with the filter changed while the first read was in flight and the superseded answer resolved last ⇒ currentShown=false, supersededShown=true.
Consumers: LookupField, the people picker and RecordPickerDialog. A user who types quickly can see results for an earlier query.
Lit control: PR objectui#10711 (objectui#10684) and PR objectui#10649 (ObjectMap) guard the same class in data views.
Direction (for triage, not a ruling)
Only the latest call commits records / total and releases loading, using a run sequence ref, the objectui#10684 shape. The pin: a superseded answer landing last ⇒ the current results stay.
Dedupe
Searched this repo with the MCP semantic issue search, including closed issues: useRecordQuery superseded answer stale search results race record picker lookup ⇒ objectui#10044 (closed; useRecordSearch's dependency list, a different hook and defect) and older closed lookup cards. None covers this race, and the hits show the instrument is lit.
Dedupe words: useRecordQuery superseded answer · record picker stale search results race · useRecordQuery run guard
Closed as a duplicate of objectui#10712 — one family, folded into its closure card
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01CRZSc7dU8oDStbTbSwhuZe · 2026-09-25T20:34Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card, objectui#10712, and objectui origin/main.
Same class, same fix: a superseded answer lands last and replaces the current one, because only the latest call should commit. The family's data-view card, objectui#10684, is in flight (PR objectui#10711) and is not folded into. objectui#10712 is the closure card for the positions that census held out, the forms and the field widgets. It now carries this row (useRecordQuery, and through it LookupField, the people picker and RecordPickerDialog) with its renderHook measurement, at priority:p2. The current gate folds same-family findings into one closure card (objectstack-ai/objectstack#20110). Neither card was claimed when the fold was made.
Activity
objectstack-fleet commentedon Sep 25, 2026
Closed as a duplicate of objectui#10712 — one family, folded into its closure card
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01CRZSc7dU8oDStbTbSwhuZe· 2026-09-25T20:34Z. ⛔ Not a claim, ⛔ not a dispatch. Read: this card, objectui#10712, and objectuiorigin/main.Same class, same fix: a superseded answer lands last and replaces the current one, because only the latest call should commit. The family's data-view card, objectui#10684, is in flight (PR objectui#10711) and is not folded into. objectui#10712 is the closure card for the positions that census held out, the forms and the field widgets. It now carries this row (
useRecordQuery, and through itLookupField, the people picker andRecordPickerDialog) with itsrenderHookmeasurement, atpriority:p2. The current gate folds same-family findings into one closure card (objectstack-ai/objectstack#20110). Neither card was claimed when the fold was made.