# AwesomeMenu: A Path 2.0 Style Menu Built on CoreAnimation

> AwesomeMenu is an Objective-C component that recreates the Path 2.0 menu with CoreAnimation. It offers a familiar radial layout but comes with a clear warning against copying Path's design.

**levey/AwesomeMenu** — GitHub describes it as Path 2.0 menu using CoreAnimation :). The repository metadata lists Objective-C as its primary language. The metadata lists the NOASSERTION license. This article stays within the project description and details documented in the GitHub repository README.

- Repository: https://github.com/levey/AwesomeMenu
- Website: https://github.com/levey/AwesomeMenu
- Stars: 4,951 · Forks: 765
- Language: Objective-C
- License: NOASSERTION
- Published: 2026-08-13 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/levey-awesomemenu

## What AwesomeMenu Actually Does

AwesomeMenu is an Objective-C class that draws a menu in the style of the Path 2.0 app. It is a circular, fanning menu that expands from a central start button, similar to an add button, into a set of option items. The library uses CoreAnimation to animate the items flying out and bouncing into place. This is a specific UI pattern, not a general-purpose menu. It is for iOS developers who want that exact visual effect without building the animation logic from scratch. The README is direct about its purpose: it is a menu with the same look as the story menu of Path. There is no mention of accessibility, localization, or modern iOS features, so the target user is someone who prioritizes a specific visual style over broader UI considerations.

## The Mechanism: CoreAnimation and Geometry

The core mechanism is a set of configurable radii and angles that define where the menu items land. The README lists several properties: startPoint sets the center of the add button, rotateAngle controls the initial rotation, and menuWholeAngle defines the total arc that the items span. The farRadius, nearRadius, and endRadius control the bounce animation. The farRadius is the maximum distance the items travel, nearRadius is the distance they pull back to, and endRadius is the final resting distance from the start button. The timeOffset property staggers the animation delay for each item, creating a sequential flying-out effect. Underneath, CoreAnimation handles the actual movement. The geometry is simple and predictable, but the visual result depends on tuning these values. There is no physics engine or gesture recognizer mentioned; it is a straightforward frame-based animation driven by these parameters.

## Getting It Running: Setup and Configuration

The README provides a concise setup. You create instances of AwesomeMenuItem with images for the normal and highlighted states, plus optional content images. For example, you allocate a start item with bg-addbutton.png and icon-plus.png. Then you create an AwesomeMenu instance with initWithFrame:startItem:optionMenus:, passing an array of menu items. You set the delegate and add the menu to a window. Configuration is done through properties. To move the add button, set menu.startPoint. To change the angle, set menu.rotateAngle. To make the menu span a full circle, set menu.menuWholeAngle = M_PI * 2. The bounce distances are set with farRadius, nearRadius, and endRadius. The animation delay is set with timeOffset. All these are simple float or CGPoint assignments. The code is Objective-C, so you need a project that supports it, likely with a bridging header if you use Swift. The README does not mention CocoaPods or any package manager, so integration is manual: copy the source files into your project.

## A Clear Warning: Do Not Copy Path

The README begins with a stark warning: DO NOT USE IT TO COPY PATH. This is a significant limitation. The library exists to replicate a specific app's design, and the author explicitly tells you not to use it for that purpose. This is likely a legal and ethical caution. If you use this menu in a commercial app that resembles Path's design, you could face legal issues. The warning is not about the code's function but about its intended use. This is a rare and honest admission. It means the library is a demonstration or a starting point, not a ready-to-ship component. If you are building an app that needs a similar menu, you must ensure your design is sufficiently distinct. This warning also suggests that the visual style is not generic; it is tied to a recognizable brand. For a developer, this is a critical consideration before adoption.

## Limitations and Wrong Use Cases

The library is old. The README does not mention iOS version support, but the use of CoreAnimation and the style of code suggests it was built for early iOS versions. There is no mention of Swift, storyboards, or SwiftUI. If you are building a modern app, you will need to integrate Objective-C code, which is possible but adds friction. There is no mention of gesture handling, so the menu only responds to taps on the start item. There is no mention of custom animations beyond the bounce, so you cannot easily change the easing or add new effects without modifying the source. The library is also not actively maintained. The last push date is unknown, and there are no recent releases. This means you are on your own for bug fixes. The wrong use case is a production app that requires ongoing support, modern language features, or a unique menu style. It is also wrong if you need a menu that works with VoiceOver, as the README does not indicate any accessibility support.

## Alternatives: QuadCurveMenu and Beyond

The README thanks acomoans for QuadCurveMenu, which is a similar project. QuadCurveMenu is another Objective-C library that provides a curved menu, but it uses a different animation approach. The README does not describe the differences, but the acknowledgment suggests that AwesomeMenu drew inspiration from it. If you want a similar radial menu without the Path-specific look, QuadCurveMenu might be a more generic option. However, the README does not provide details on QuadCurveMenu's features, so you would need to investigate it separately. Another alternative is to build your own menu using UIDynamics or UIViewPropertyAnimator, which gives you full control and avoids any design imitation issues. That approach requires more work but offers flexibility and modern API support. The key difference is that AwesomeMenu is a finished component with a specific look, while building your own lets you tailor the behavior and appearance.

## Maintenance, Licensing, and Upgrade Cost

The license is listed as NOASSERTION, which means there is no clear open-source license. This is a major concern. Without a license, you technically have no permission to use, modify, or distribute the code, even for personal projects. The README does not mention any license terms. This is a legal gray area. You should contact the author or check the repository for a license file before using it in any project. The maintenance cost is low because the code is small and likely stable, but the upgrade cost is high if you need to adapt it to modern iOS. There are no releases, so you cannot track changes or expect updates. The code is likely compatible with older iOS versions, but you may need to update it for newer SDKs, such as adjusting for safe areas or modern animation APIs. The lack of a license and the explicit warning against copying Path make this a risky dependency for anything beyond a learning exercise.

## Conclusion

Adopt AwesomeMenu if you need a quick, visually engaging radial menu for an iOS app and you are comfortable with its age and lack of formal licensing. Avoid it if you are building a production app that requires modern Swift, accessibility, or a license that permits commercial use without review. Before using it, verify the license status with the repository owner, test the animation on your target devices, and inspect the code for any private API usage that could affect App Store approval.

## FAQ

### What is AwesomeMenu?

It is an Objective-C iOS menu that reproduces the look of the story menu of Path using CoreAnimation. The README opens by telling you not to use it to copy Path, and credits pashields for the demo video and acoomans for the menu options.

### How do I add AwesomeMenu to an iOS project?

The repository ships AwesomeMenu.podspec and AwesomeMenu.xcodeproj. The documented use is to build AwesomeMenuItem objects, create AwesomeMenu with initWithFrame:startItem:optionMenus:, assign menu.delegate, and add the menu as a subview of the window. No installation command is given in the README.

### Which images does AwesomeMenu need?

Each item takes a normal image, a highlighted image, a content image, and a highlighted content image, all loaded with `[UIImage imageNamed:]`, for example bg-menuitem.png, bg-menuitem-highlighted.png, and icon-star.png. The start item uses bg-addbutton.png and icon-plus.png with their highlighted variants.

### How do I tune the AwesomeMenu animation?

`menu.startPoint` sets where the center of the add button is, `menu.rotateAngle` and `menu.menuWholeAngle` set the layout of the ring, `menu.timeOffset` sets the per-item delay, `menu.farRadius` and `menu.nearRadius` adjust the bounce, and `menu.endRadius` sets the distance from the add button to the items.

### Is AwesomeMenu still maintained?

No commits have landed since the last push on 2018-09-28, and the repository has no GitHub releases. A LICENSE.txt file sits at the root, so read it before shipping the code in a product of your own.

## Sources

- [Official documentation](https://github.com/levey/AwesomeMenu)
- [Official README](https://github.com/levey/AwesomeMenu#readme)
- [Project repository](https://github.com/levey/AwesomeMenu)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/levey-awesomemenu
