{"repo":"FluidGroup/swiftui-messaging-ui","free":true,"listed":false,"github":"https://github.com/FluidGroup/swiftui-messaging-ui","clone":"git clone https://github.com/FluidGroup/swiftui-messaging-ui.git","description":"For SwiftUI apps - a primitive component to make Chat-UI with stable prepending - no scroll jumps when loading older messages.","language":"Swift","stars":76,"topics":["chat","messaging","swiftui"],"license":"Apache-2.0","category":"chat-messaging","readme_excerpt":"swiftui-messaging-ui MessagingUI provides stable, composable primitives for building chat interfaces. Chat UIs are deceptively complex. They need to handle smooth bidirectional scrolling, keyboard-driven layout changes, gesture interactions, and visible-area preservation when older or newer messages are loaded. This library focuses on the hard parts of chat UI infrastructure, so each app can compose its own experience on top. Auto Scrolling Prepending without jumps Revealing Info :--- :--- :-- Loading Indicator (top, bottom) Typing Indicator :--- :--- The Prepending Problem Standard SwiftUI List and ScrollView cause scroll position jumps when prepending items. In chat apps, loading older messages creates jarring visual shifts as content is inserted above the current view. contentOffset Adjustment is Fragile A common workaround is adjusting contentOffset after prepending. However, this requires: - Precise timing of when prepend operations complete - Exact knowledge of inserted content height before layout - Careful handling when multiple operations occur together (prepend + update + remove) In practice, this approach breaks easily with complex data flows. The Virtual Layout Solution This library takes a different approach: a virtual content layout with a 100-million-point content space where items are anchored at the center. Prepending simply extends content upward without ever changing contentOffset , eliminating the timing and coordination problems entirely. Key Features - S","default_branch":null,"files":null,"tree":[],"storefront":"/r/FluidGroup","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/FluidGroup/swiftui-messaging-ui/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}