• v2.0.19 1d2574dcbe

    thoralf released this 2026-09-14 21:23:00 +02:00 | 4626 commits to main since this release

    Fixed

    • The app no longer keeps every scrolled-past post in memory. A timeline appended
      every loaded page to its list and never dropped anything, so posts, their DOM and the
      matching states entries piled up for as long as the reader kept scrolling. Measured
      against a build: ~37 DOM nodes and ~0.12 MB of heap per post, with no ceiling — 520
      posts came to 19.6k nodes and 74 MB. Upstream's state GC could not reclaim any of it,
      because it deliberately skips posts that are still mounted. A browser tab gets closed
      or reloaded and never notices; the Android app is one process that stays alive for
      days. Timelines now keep at most 200 posts mounted, which holds the same run at ~8k
      nodes and lets the GC clear the rest. The reading position is unaffected — an anchored
      post stays put to within 0.4 px when older ones are dropped.
    • Aborting a link preview no longer raises an unhandled rejection. StatusCard cancels
      its unfurl request when a post unmounts but never caught the resulting rejection; with
      posts now unmounting during scrolling, that fired on every trim.
    Downloads