# The UI kit of shared Discourse components, helpers, and modifiers

**URL:** <https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319>\
**Category:** Developer Guides\
**Created:** [31 באוגוסט,‏ 2026,‏ 5:34pm UTC](https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319 "2026-08-31T17:34:15Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)\
**Post date:** [14 בנובמבר,‏ 2026,‏ 2:27am UTC](https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319/2 "2026-11-14T02:27:22Z")

</div>

> [@system](#):
>
> `DAsyncContent` Render content that is loaded asynchronously. Give it a promise, a `TrackedAsyncData`, or a function that fetches the data via `@asyncData`, and fill the `loading`, `content`, `empty`, and `error` blocks; it reloads when `@context` changes, so there is no need to hand-roll loading flags and error handling.

This looks super promising. No need for a tracked loading var with a spinner anymore! Perhaps it’s time to update some components now.

---

_[View the full topic](https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319)._
