Contents

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.

😎 Author

Made with ❤️ by iKʜAʟED〆

Package Metadata

Repository: ikhaled-ali/emojisreactionkit

Default branch: main

README: README.md