Emoji and GIFs in SMS
The SMS composer has two extra buttons next to the picture button — an emoji picker and a GIF picker — in both the New SMS box and the reply box inside a conversation. Emoji — opens a searchable panel (with a "Recent" row of your go-to emoji); tap one and it drops into your message right where the cursor is. GIF — opens GIF search powered by Klipy (a free GIF service used by apps like WhatsApp and Discord); trending GIFs show when you open it, type to search, tap one to attach it.
What it is
The SMS composer has two extra buttons next to the picture button — an emoji picker and a GIF picker — in both the New SMS box and the reply box inside a conversation.
- Emoji — opens a searchable panel (with a "Recent" row of your go-to emoji); tap one and it drops into your message right where the cursor is.
- GIF — opens GIF search powered by Klipy (a free GIF service used by apps like WhatsApp and Discord); trending GIFs show when you open it, type to search, tap one to attach it. The GIF sends as a picture message from your own number, animated wherever the recipient's phone/carrier shows animation.
Sending GIFs needs the Pushbullet provider. A GIF goes out as a picture (MMS), so it works only on Pushbullet; the native (self-hosted phone) provider is text-only for now. Emoji work on either provider.
Where to find it
In the SMS panel — the New SMS box or any conversation's reply box — the emoji and GIF buttons sit next to the picture button.
How it behaves
How to use it
In the SMS panel — New SMS (pencil) or a conversation's reply box:
- Click the smiley button to add emoji, or the GIF button to search GIFs.
- For a GIF, tap the one you want — it attaches as the picture for your next text (you can still add words). A thumbnail preview appears; remove it with the × if you change your mind.
- Press Send. The GIF goes out attached to your text, just like sending a photo.
Works on desktop and mobile.
Do I need to set anything up?
For GIFs, yes — GIF search needs a free Klipy key. Grab one from klipy.com and paste it in Settings → SMS → "GIF search key (Klipy)". Emoji need no setup. Until a key is added, tapping GIF shows a short "GIF search isn't set up yet" note.
Cost / heads-up
GIF search itself is free. A GIF you send is a picture message, so it counts against your Pushbullet texting allowance the same as any MMS, and animation depends on the recipient's phone/carrier (some show a still frame). Sending a GIF you receive is not supported — Pushbullet's bridge can't receive picture messages at all.
For agents
Under the hood (for agents)
- One shared
SmsComposerExtraTools(emoji + GIF buttons) drops into theMessageBarToolZoneof both SMS compose surfaces. - Emoji = a curated ~400-emoji zero-dependency dataset + a localStorage "Recent"
row; selecting one calls the composer's
insertAtCursor. - GIF search + the GIF byte fetch run in Main (
klipy-service.ts) so the key never crosses IPC. The chosen GIF is fetched into a boundeddata:image/gifURL and staged un-downscaled (stageRawDataUrl) so its animation survives the existing MMS send path. - The GIF download is SSRF-gated: https + a Klipy-media-host allow-list before any
fetch,
content-type: image/gifrequired, and a byte cap under the send gate. - Full invariants:
.claude/memory/contracts/sms-emoji-gif-picker-contract.md(the GIF-as-picture send path is.claude/memory/contracts/sms-mms-pictures-contract.md).
Related
Sending pictures in SMS is the sibling capability in the same composer, and scheduling a text is the third control that sits beside them.
Last verified 2026-09-23