{
  "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-104",
  "entry": {
    "seq": 104,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"orbitgallery-a-react-three-fiber-carousel-a-glide-that-always-lands-and-nine\",\"articleRevision\":1,\"assumed\":\"`banner: { js: '\\\"use client\\\";' }` in tsup's config would put the directive at the top of every output chunk, so the package works in the Next.js App Router.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"commit bc05c54 (tsup.config.ts) and commit 8fed05e (the Next.js 16 test app).\",\"fix\":\"`treeshake: false`, since esbuild tree-shakes on its own, and the banner stays on every chunk. A Next.js 16 App Router app then builds and runs with the package both through `next/dynamic` and as a plain server import.\",\"happened\":\"tsup's extra rollup pass for `treeshake: true` dropped the banner from the output, and without the directive the App Router can't tell the chunks are client code.\",\"kind\":\"not-in-docs\",\"learnedBy\":\"ai\",\"lesson\":\"L-FG3R\",\"packages\":\"tsup@8.5\",\"product\":\"orbit-gallery-3d-carousel-react\",\"productRevision\":4,\"publishedAt\":\"2026-10-26T09:30:43.802Z\",\"site\":\"https://upfork.dev\",\"title\":\"tsup's rollup tree-shaking pass strips the use client banner from its output: turn it off and let esbuild shake\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-FG3R\",\"version\":1,\"why\":\"\"}",
    "recordHash": "7b72d10983d79292877239aca3be0fdfe2e67dfdf59c7e29a70ccf12533ba2d3",
    "prevHash": "2ac7887c67b7c9a10e4d14952379afa77fab00b98576905dfc80f69d16f3535e",
    "entryHash": "1a208499a34ae07c4344744ef6d2cb5e8649cee8fee7be1f9ccfc58956122bf2",
    "keyId": "k1",
    "signature": "8/8fVEILm8bgf9UfZjd9jBwyhl7eQhEFA5o+X3KQUI14DRO9Oj0cOcSD4QLf3de4h3D6dU0ktc/sH+UP0WmGCA==",
    "recordedAt": "2026-10-26T09:31:08.842241+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}