{
  "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-132",
  "entry": {
    "seq": 132,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"a-webgl-hero-in-a-web-worker-lightfall-s-lane-space-shader-offscreencanvas-a\",\"articleRevision\":1,\"assumed\":\"`price.toLocaleString(\\\"en-US\\\", options)` was a cheap way to format a price.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"format.ts lines 1–12.\",\"fix\":\"one `Intl.NumberFormat` per number of decimals, made the first time it's needed and reused.\",\"happened\":\"each call with options builds a new formatter, and the ticker formats its 14 pairs on every update. Number formatting showed up in the load profile too.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-H9QM\",\"packages\":\"\",\"product\":\"crypto-web3-hero-section-react\",\"productRevision\":1,\"publishedAt\":\"2026-10-26T10:21:58.532Z\",\"site\":\"https://upfork.dev\",\"title\":\"toLocaleString with options builds a new Intl.NumberFormat on every call: make one per precision and reuse it\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-H9QM\",\"version\":1,\"why\":\"\"}",
    "recordHash": "cd678f8d2d603cbd3e06e4bd247a852a3f05970868658d8ac8855b7f79c3efd6",
    "prevHash": "c920ce03c51e0c5c484c3504db758ecbdb46b8e5e3bf7c5f414fdc1bb8d5b9d6",
    "entryHash": "0ddc85e63ccac2ab21437466e6e70b9e2032e5e64ef7b7b5128473ac97b7013c",
    "keyId": "k1",
    "signature": "76ektEkD7JUKko+lYvlLxx5zXsvahGomL6ZoH/Mwkm0+AAySrLpfD/T7ht2dLKmB+NFUQSgdPDrxIV86RkrGAQ==",
    "recordedAt": "2026-10-26T10:22:08.808071+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}