Troubleshooting
Diagnose empty layouts, preview vs live, and personalization.
| Symptom | Likely cause |
|---|---|
Visitors always see fallback | Route not Deployed yet, or wrong trackingId |
| Fields empty in preview/live | Pass field={fields.yourProp}; read .value to display. Only pass name when the value is computed |
[object Object] on the page | You rendered the envelope — use <Field field={fields.x} /> or {fields.x.value} |
| A row in a list is not clickable in Composer | The rows have no write target. See Lists and queries |
| Search or load-more rows are not editable | Build the spec with nextPageSpec / searchSpec from the published list prop, not by hand |
| Nothing renders and the console says "expects a scalar field" | You passed a list or a whole row — pass one field, like post.title |
POST /v1/query returns 400 | The spec must include providerId, entity, filter, sort, limit, and offset |
| Preview works, live empty | Deploy not run after Save; or content source credentials were not synced — Deploy again after reconnecting the provider |
| Personalization stuck on default | No visitor cookie yet (first visit); Edge timeout (fail-open); audience miss |
| Composer shows old draft | Hard-refresh preview iframe; confirm ?preview=true |
Diagnostics
In the browser console (Node SDK):
AmplifyUp.getStatus();
React context: useAmplifyUp() → { pageConfig, loading, error, source, meta }.
source is 'edge' or 'orchestrator'. meta.degraded means a content connection failed — settings still render; empty fields collapse on the live site.