A modern, lightweight drop-in replacement for iOS context menus β with emoji reactions, animated transitions, haptic feedback, and full theme customization. Perfect for messaging apps, comments, or any UI that could benefit from emoji-based interaction.
Built from scratch to offer a familiar yet customizable interaction β ideal for chat interfaces, social feeds, and interactive content.
- π§© Attach to any UIView β just call
.react(...) - π¨ Customizable UI:
- Show/hide emoji reactions
- Show/hide Menu actions
- π¬ Smart gesture handling:
- Works with any guester you want
- Pan-to-select emoji or action with haptic feedback
- π₯ Smooth transitions
- π οΈ Fully themeable β light/dark styles, blur options, more icon etc.
- iOS 13+
Use Swift Package Manager:
In Xcode:
- Go to File > Add Package Dependencies
- Enter the repository URL: https://github.com/ikhaled-ali/EmojisReactionKit.git
- Choose the latest version and add the package.
import EmojisReactionKit
let reactConfig = ReactionConfig(
itemIdentifier: indexPath,
emojis: ["ππΌ", "π", "β€οΈ", "ππΌ"],
menu: UIMenu(title: "", children: [
UIAction(identifier: "reply", title: "Reply", image: UIImage(systemName: "arrowshape.turn.up.left")) { _ in // βοΈ Keep it empty and Handle action in delegate!
}
]),
startFrom: .center
)
reactionPreview = yourView.react(with: reactConfig, delegate: self)ReactionConfig(
itemIdentifier: indexPath,
emojis: ["ππΌ", "π", "β€οΈ", "ππΌ"]
)
yourView.react(with: config, delegate: self)func didDismiss(on identifier: Any, action: UIAction?, emoji: String?, moreButton: Bool) {
if let emoji = emoji {
print("User reacted with: \(emoji)")
} else if let action = action {
print("User selected action: \(action.identifier)")
}else if moreButton {
print("more button clicked")
}
}For detailed examples, check out the example project included in the repository.
- Does it support RTL layouts? β Yes, RTL is supported out of the box.
- Can I disable the emoji reaction or menu? β Yes. Just pass an empty emojis array or set menu: nil.
- How do I theme it? Use the ReactionTheme to customize blur, background, and icon appearance.
MIT License. See LICENSE for more info.
Made with β€οΈ by iKΚAΚEDγ


