# Discourse Stickers

**URL:** https://meta.discourse.org/t/discourse-stickers/280873
**Category:** Theme component
**Created:** [October 3, 2023, 11:19am UTC](https://meta.discourse.org/t/discourse-stickers/280873 "2023-10-03T11:19:44Z")
**Posts on this page:** 1
**Showing post:** 12

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [August 14, 2026, 2:31pm UTC](https://meta.discourse.org/t/discourse-stickers/280873/12 "2026-08-14T14:31:04Z")

</div>

## Discourse Stickers v2.0

This release is a fairly significant modernization of the component. Besides a number of internal improvements, the sticker configuration has been redesigned to make managing larger sticker collections much easier.

 ![Screenshot 2026-08-14 at 16.28.56](https://global.discourse-cdn.com/meta/original/4X/b/f/c/bfc04ecd87b3012b5057dc43775e59d2ba11b3f7.png)  
 ![Screenshot 2026-08-14 at 16.29.18](https://global.discourse-cdn.com/meta/original/4X/4/2/d/42d8d5729bb092f4117a11a557be625ea78c7305.png)  
 ![Screenshot 2026-08-14 at 16.29.25](https://global.discourse-cdn.com/meta/original/4X/3/5/4/354f2222f559ef53b81268e1d57b3841f46866fc.png)  
 ![Screenshot 2026-08-14 at 16.29.07](https://global.discourse-cdn.com/meta/original/4X/3/3/9/339bd3f2937aa15cb60870d94bcf03127e4da374.png)

## 🎨 A completely redesigned sticker setting

The biggest change in v2.0 is the sticker configuration itself.

The old version stored stickers as a JSON setting containing values such as:

- `title`

- `emoji`

- `previewUrl`

- `markdownUrl`

In v2.0, this has been replaced with Discourse’s native **`objects` setting type**.

Each sticker is now a proper configurable object with its own fields:

- **Title** - the sticker name / tooltip text

- **Group** - optionally organize stickers into groups

- **Emoji badge** - optionally display a small emoji in the corner

- **Image** - upload the sticker directly through the setting

- **Categories** - optionally restrict stickers to specific categories

- **Hide from direct messages** - control whether a sticker is available in DMs

- **Chat channels** - optionally restrict stickers to specific public chat channels

This makes the sticker configuration much easier to understand and maintain, especially for larger collections.

## 🍱 Sticker groups and filtering

You can now assign stickers to a **Group**.

When multiple groups are available, the sticker picker automatically displays a filter bar at the top.

You can switch between:

- **All**

- individual groups

- **Other** for stickers without a group

The filter is generated dynamically from the stickers currently available to the user.

## 🏷 Category-specific stickers

Stickers can now optionally be assigned to specific Discourse categories.

If a sticker has categories configured, it will only appear in the regular post/reply composer when one of those categories is selected.

If no categories are configured, the sticker remains available everywhere.

## 💬 More control over Chat stickers

v2.0 adds more control over sticker availability in Discourse Chat.

You can now:

- hide individual stickers from direct messages;

- restrict stickers to specific public chat channels;

- leave the channel setting empty to make a sticker available in all public/category chat channels.

This allows administrators to maintain different sticker sets for different parts of their community.

## 🚫 Published stickers are no longer clickable

Published stickers are now treated as non-interactive images.

They no longer open the Discourse lightbox when clicked.

This applies both to:

- stickers in regular posts;

- stickers posted in Chat.

The goal is to make stickers behave more like actual sticker/reaction content rather than normal uploaded images.

## 🪹 Better empty state

If no stickers are available for the current context, the picker now displays a proper empty state instead of simply showing an empty picker.

 ![Screenshot 2026-08-14 at 16.34.41](https://global.discourse-cdn.com/meta/original/4X/6/1/9/6190835f165dc232bf017e13022a593b2cab7b02.png)

For example, this can happen when category or Chat restrictions prevent any sticker from being available.

## 🔄 Existing sticker configurations are migrated

One of the most important parts of v2.0 is that existing installations **do not need to recreate their sticker collection**.

The old `sticker_images` JSON setting is automatically migrated to the new `objects` format when the component is updated.

Existing sticker titles and emoji values are preserved.

Most importantly, existing uploaded sticker images are also migrated automatically.

So if you already have dozens of stickers configured, updating to v2.0 should **not require you to upload all of them again**.

The old `markdownUrl` property is no longer needed and is not carried over because the new `Image` field represents the actual Discourse upload.

* * *

> <https://github.com/VaperinaDEV/discourse-stickers/pull/5>
>
> Modernizes the component and significantly expands sticker management.
> 
> \### Wh…at's included
> 
> \- Migrate \`sticker\_images\` from the legacy JSON setting to Discourse's native \`objects\` setting.
> \- Add native image uploads for stickers.
> \- Add optional sticker groups with filtering in the picker.
> \- Add category-based sticker visibility.
> \- Add Chat-specific visibility controls for direct messages and channels.
> \- Modernize the sticker modal to Glimmer.
> \- Improve sticker selection by passing the selected sticker directly to the action.
> \- Prevent published stickers from opening the lightbox.
> \- Add a proper empty state when no stickers are available.
> \- Add localization for the new UI and settings.
> \- Add a settings migration that preserves existing sticker titles, emojis, and uploaded images when upgrading from the previous version.
> 
> \### Migration
> 
> Existing \`sticker\_images\` configurations are automatically migrated when the component is updated.
> 
> Legacy sticker image URLs are resolved back to their existing Discourse uploads, so existing stickers do not need to be uploaded again.
> 
> The legacy \`markdownUrl\` property is no longer used because the new \`image\` property directly represents the sticker upload.

I’ve updated the [OP](https://meta.discourse.org/t/discourse-stickers/280873) too.

---

_[View the full topic](https://meta.discourse.org/t/discourse-stickers/280873)._
