ikhaled-ali/emojisreactionkit
A modern, lightweight drop-in replacement for iOS context menus — with emoji reactions, animated transitions, haptic feedback, and full theme customization.
✨ Features
- 🧩 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.
📷 Preview
[EmojisReactionKit] [EmojisReactionKit]
⚙️ Requirements
- iOS 13+
📦 Installation
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.
🛠️ Usage
Full Reaction + Menu
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)Only Emoji Reaction?
ReactionConfig(
itemIdentifier: indexPath,
emojis: ["👍🏼", "😂", "❤️", "👌🏼"]
)
yourView.react(with: config, delegate: self)🧩 Delegate
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.
📚 FAQ
- 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.
📄 License
MIT License. See <a target="_blank" href="https://github.com/ikhaled-ali/EmojisReactionKit/blob/main/LICENSE">LICENSE</a> for more info.
Package Metadata
Repository: ikhaled-ali/emojisreactionkit
Default branch: main
README: README.md