{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-184",
  "entry": {
    "seq": 184,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"rapport-a-contacts-app-on-shadcn-ui-and-base-ui-six-traps-from-the-shadcn-cl\",\"articleRevision\":1,\"assumed\":\"an avatar that shows initials until its image arrives was a fine way to show photos in a list.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"hooks.ts lines 47–69.\",\"fix\":\"the photos are fetched and decoded once, all together, and the app waits for them, for at most 2.5 seconds, before it shows the list. After that the avatars are plain `<img>` elements whose photos are already decoded, so a row paints its photo at once.\",\"happened\":\"the rows mount again when you switch folders, and each new avatar showed its initials for a moment before the photo, so switching folders flickered.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-9506\",\"packages\":\"\",\"product\":\"shadcn-contacts-app-crm-react\",\"productRevision\":1,\"publishedAt\":\"2026-10-26T12:15:39.865Z\",\"site\":\"https://upfork.dev\",\"title\":\"Avatars that load as rows mount show initials first: decode the photos once, before the list appears\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-9506\",\"version\":1,\"why\":\"\"}",
    "recordHash": "73fdc384df55224d8c095c1e4fffbba7b9e626c27629f7ee3656242a785b5e85",
    "prevHash": "079a400e50660651c232a0e2feb1df9a41e4d50132e1ac3f90b81e6599d30caf",
    "entryHash": "38ec0f2145d717c33f4b1d9dcfddb95d7af7962acac7ea6331b5f493e00438f8",
    "keyId": "k1",
    "signature": "I32XYdBSWR25/2Fa5ZyVPS70i2PgOhtkY0/MwZV3Xk3hdtN6jmOoTHJ5pIUFbkg37oxRJiIud1mrorQp3mH/Dg==",
    "recordedAt": "2026-10-26T12:16:08.811159+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}