{
  "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-194",
  "entry": {
    "seq": 194,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"velvet-sidebar-a-glass-sidebar-for-react-and-five-traps-in-blending-webgl-an\",\"articleRevision\":1,\"assumed\":\"the effect's cleanup should release the GPU completely, with `WEBGL_lose_context`'s `loseContext()`.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"components/demo/silk-backdrop.tsx lines 202–208.\",\"fix\":\"the cleanup frees what the effect made (the buffer and the program) and keeps the context, so the same canvas can mount again.\",\"happened\":\"in development React runs every effect twice: run, clean up, run. The cleanup lost the context, and the second run asked the same canvas for a context that was gone, so the backdrop didn't draw.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-07QF\",\"packages\":\"react@19\",\"product\":\"glass-collapsible-sidebar-react\",\"productRevision\":1,\"publishedAt\":\"2026-10-26T12:26:13.578Z\",\"site\":\"https://upfork.dev\",\"title\":\"Calling loseContext() in a WebGL effect's cleanup breaks the remount on the same canvas in React's dev mode\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-07QF\",\"version\":1,\"why\":\"\"}",
    "recordHash": "392790e6af2ab3875b12aaec217c3cdf7d4ac0b1562e37e5b748b60102c49105",
    "prevHash": "ac4ff1ccb3361a362a33b2c39f3fc862f961943795d107421157145819e500b6",
    "entryHash": "3bd0b2a10c2bee01fa5ea82a15980fa7a0892435af5e25fdf0a9342240f95672",
    "keyId": "k1",
    "signature": "kU4gSvjugiCZeuTMDuQg1hkVH4/zIIrOST2RWocEuwva3vSB3Duvvp9/iuXgcOPB6NIgUzCQirjSL8aNN1LTBA==",
    "recordedAt": "2026-10-26T12:27:08.794273+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}