Swiftpack.co -  danielsaidi/Sheeeeeeeeet as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Sheeeeeeeeet is a Swift library for creating menus, custom action sheets, context menus etc.
.package(url: "https://github.com/danielsaidi/Sheeeeeeeeet.git", from: "3.1.4")


Version Platform Swift 5.1 MIT License Twitter: @danielsaidi

About Sheeeeeeeeet

Sheeeeeeeeet lets you create menus that can be presented as iOS 13 context menus, custom action sheets, alert controllers or in any way you like.

Sheeeeeeeeet comes with many item types (standard items, buttons, titles, toggles etc.) and can be extended with your own custom item types.

Sheeeeeeeeet's custom action sheets can be styled to look just like a UIAlertController or completely different. You can also customize how they are presented and dismissed.


Swift Package Manager



pod "Sheeeeeeeeet"

Creating a menu

With Sheeeeeeeeet, you start with creating a menu, like this:

let item1 = MenuItem(title: "Int", value: 1)
let item2 = MenuItem(title: "Car", value: Car())
let button = OkButton(title: "OK")
let items = [item1, item2, button]
let menu = Menu(title: "Select a type", items: items)

Sheeeeeeeeet has many built-in item types, e.g. buttons, select items, links etc. A complete list can be found here.

You can also create your own custom item types by inheriting any of the existing ones. For instance, if you build a car rental app, you can create a car-specific item that takes a Car model.

You can even create your own menu types by subclassing Menu. This makes it possible to create app-specific menus that provide specific functionality, handle specific tasks etc.

Present a menu as an action sheet

You can present menus as custom action sheets:

let sheet = menu.toActionSheet(...) { sheet, item in ... }
sheet.present(in: vc, from: view) { sheet, item in ...
    print("You selected \(item.title)")

You can find more information in this action sheet guide.

Add a menu as a context menu

You can add menus as iOS 13 context menus to any view you like:

menu.addAsContextMenu(to: view) { sheet, item in ...
    print("You selected \(item.title)")

You can find more information in this context menu guide.

Present the menu as an alert controller

You can present menus as UIAlertControllers:

let delegate = menu.presentAsAlertController(in: self, from: view) { sheet, item in ...
    print("You selected \(item.title)")

You can find more information in this alert controller guide.

Demo App

This repository contains a demo app that demonstrates different menus and menu items, including subclassing and appearance adjustments.

To try it out, open and run the Sheeeeeeeeet.xcodeproj project.

Contact me

Feel free to reach out if you have questions or if you want to contribute in any way:

Sponsors and Clients

This project is proudly sponsored by the following individuals:

You can support my work by sponsoring the project on GitHub Sponsors or hiring me for consultation. I'd be happy to help you out in any way that I can.


Sheeeeeeeeet is available under the MIT license. See LICENSE file for more info.


Stars: 1254
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

1 year ago

This version prepares the library for Xcode 11.4 and Swift 5.2 and upgrades external dependencies.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API