dekatotoro/SlideMenuControllerSwift
iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app. It is written in pure swift.
Stale — last commit 3y ago
worst of 4 axeslast commit was 3y ago; no tests detected…
no tests detected; no CI workflows detected…
Documented and popular — useful reference codebase to read through.
last commit was 3y ago; no CI workflows detected
- ✓21+ active contributors
- ✓MIT licensed
- ⚠Stale — last commit 3y ago
Show 3 more →Show less
- ⚠Concentrated ownership — top contributor handles 56% of recent commits
- ⚠No CI workflows detected
- ⚠No test directory detected
What would change the summary?
- →Use as dependency Mixed → Healthy if: 1 commit in the last 365 days; add a test suite
- →Fork & modify Mixed → Healthy if: add a test suite
- →Deploy as-is Mixed → Healthy if: 1 commit in the last 180 days
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Great to learn from" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/dekatotoro/slidemenucontrollerswift)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/dekatotoro/slidemenucontrollerswift on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: dekatotoro/SlideMenuControllerSwift
Generated by RepoPilot · 2026-05-10 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/dekatotoro/SlideMenuControllerSwift shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Stale — last commit 3y ago
- 21+ active contributors
- MIT licensed
- ⚠ Stale — last commit 3y ago
- ⚠ Concentrated ownership — top contributor handles 56% of recent commits
- ⚠ No CI workflows detected
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live dekatotoro/SlideMenuControllerSwift
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/dekatotoro/SlideMenuControllerSwift.
What it runs against: a local clone of dekatotoro/SlideMenuControllerSwift — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in dekatotoro/SlideMenuControllerSwift | Confirms the artifact applies here, not a fork |
| 2 | License is still MIT | Catches relicense before you depend on it |
| 3 | Default branch master exists | Catches branch renames |
| 4 | Last commit ≤ 1006 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of dekatotoro/SlideMenuControllerSwift. If you don't
# have one yet, run these first:
#
# git clone https://github.com/dekatotoro/SlideMenuControllerSwift.git
# cd SlideMenuControllerSwift
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of dekatotoro/SlideMenuControllerSwift and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "dekatotoro/SlideMenuControllerSwift(\\.git)?\\b" \\
&& ok "origin remote is dekatotoro/SlideMenuControllerSwift" \\
|| miss "origin remote is not dekatotoro/SlideMenuControllerSwift (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
&& ok "license is MIT" \\
|| miss "license drift — was MIT at generation time"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 1006 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~976d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/dekatotoro/SlideMenuControllerSwift"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
SlideMenuControllerSwift is a pure Swift library that implements a slide-out menu UI pattern inspired by Google+, Feedly, iQON, and Ameba iOS apps. It provides a container view controller that manages a main content area with left and right slide-out menu panels, allowing users to reveal hidden navigation menus via gestures or button taps without replacing the main view hierarchy. Monolithic structure: the core SlideMenuController.swift logic is in the root or SlideMenuControllerSwift/ folder, example/demo VCs (MainViewController.swift, LeftViewController.swift, RightViewController.swift) occupy the same directory, and configuration is managed via a SlideMenuOptions class (not visible in file list but referenced in README). Storyboard support via subclassing SlideMenuController.
👥Who it's for
iOS developers building apps in Swift who need a polished side-menu navigation pattern with minimal setup. Specifically targets developers who want the Google+/Feedly-style slide menu without building custom gesture handling and view layout logic from scratch.
🌱Maturity & risk
This is a mature, stable library suitable for production use. It was actively maintained and has achieved wide adoption (visible via CocoaPods/Carthage distribution), though commit activity appears to have plateaued—typical for a feature-complete, low-maintenance library. No visible test suite in the file list raises minor concerns about regression detection.
Low-to-medium risk: the library is single-maintainer (dekatotoro) with no visible CI/CD setup, and the repo shows signs of dormancy with no recent commit data provided. It has zero external dependencies (pure Swift), mitigating supply-chain risk. The lack of automated tests means regressions on iOS version updates or Swift language changes could slip through undetected.
Active areas of work
No recent activity is visible in the provided data. The CHANGELOG.md exists but its contents are not shown; no open issues, PRs, or milestones are listed. The repo appears to be in maintenance mode rather than active development.
🚀Get running
git clone https://github.com/dekatotoro/SlideMenuControllerSwift.git
cd SlideMenuControllerSwift
open SlideMenuControllerSwift.xcodeproj
# In Xcode, select SlideMenuControllerSwift-iOS scheme and press Cmd+R to run the demo app
Alternatively, add to Podfile: pod 'SlideMenuControllerSwift' and run pod install.
Daily commands: Open SlideMenuControllerSwift.xcodeproj in Xcode, select the SlideMenuControllerSwift-iOS scheme from the toolbar, and press Cmd+R. The demo app will launch with MainViewController as the central view, LeftViewController and RightViewController as slide-out menus.
🗺️Map of the codebase
- SlideMenuControllerSwift/SlideMenuController.swift: Core container controller managing layout, gestures, and pan-to-reveal logic for left/right menus (inferred as primary class, not explicitly listed but referenced throughout docs)
- SlideMenuControllerSwift/ExSlideMenuController.swift: Example or extension showing subclassing patterns and custom configuration, instructional for developers integrating into their own apps
- SlideMenuControllerSwift/LeftViewController.swift: Concrete example of a left menu implementation (UITableViewController) that developers can use as a template
- SlideMenuControllerSwift/RightViewController.swift: Concrete example of a right menu implementation mirroring LeftViewController pattern
- SlideMenuControllerSwift/MainViewController.swift: Example main content view controller showing how to integrate slideMenuController() navigation and button setup
- SlideMenuControllerSwift/AppDelegate.swift: Demonstrates correct initialization of SlideMenuController as the root view controller in application(_:didFinishLaunchingWithOptions:)
- SlideMenuControllerSwift.podspec: CocoaPods manifest defining library metadata, version, and supported Swift/iOS versions—critical for distribution
🛠️How to make changes
To customize menu behavior: Edit SlideMenuOptions (configure before init: SlideMenuOptions.leftViewWidth = 250). To add menu items: Modify LeftViewController.swift and RightViewController.swift (UITableViewController subclasses in the list). To wire gestures to actions: Subclass SlideMenuController or extend ExSlideMenuController.swift (existing example). To add a non-menu screen: Reference NonMenuController.swift as a template.
🪤Traps & gotchas
(1) Configuration timing: SlideMenuOptions must be set before SlideMenuController initialization; setting them after has no effect. (2) Storyboard gotcha: awakeFromNib() must call super.awakeFromNib() at the end, not the beginning, or menu controllers won't initialize. (3) Swift version locking: .swift-version file exists, suggesting the library requires a specific Swift version—check compatibility before upgrading Xcode. (4) Gesture conflicts: Adding your own custom gestures to the main VC may conflict with the built-in pan gesture for revealing menus.
💡Concepts to learn
- Container View Controller Pattern — SlideMenuController is a UIViewController subclass that acts as a container, managing the hierarchy, lifecycle, and transitions of child view controllers (main + left/right menus). Understanding this UIKit pattern is essential for customization.
- Pan Gesture Recognizer (UIGestureRecognizer) — The library uses UIPanGestureRecognizer to detect swipe/drag gestures on screen edges to reveal menus. Customizing or debugging menu reveal behavior requires understanding gesture state transitions and view translation.
- View Transform & CATransaction — Slide-out menu animations use CGAffineTransform or CABasicAnimation to scale/translate views as the menu reveals. Understanding these Core Animation concepts is needed to tweak animation timings or styles.
- responder Chain & Hit Testing — When a menu is partially visible, touches may need to be routed to the menu or main content area depending on position. The library likely uses hitTest(_:with:) or responder chain manipulation to manage this.
- Storyboard Instantiation & awakeFromNib — The README documents a Storyboard-friendly pattern using awakeFromNib() to instantiate child VCs. Understanding IB serialization and nib lifecycle is critical for developers using Storyboards with SlideMenuController.
- CocoaPods & Carthage Distribution — SlideMenuControllerSwift is distributed as a library via CocoaPods (.podspec) and Carthage. Understanding how pure-Swift libraries are packaged and versioned is important for dependency management and adoption.
🔗Related repos
InteractivePlayerView-iOS/InteractivePlayerView— Another pure-Swift gesture-driven UI library for iOS, showcasing similar pan/swipe interaction patternsfastlane/fastlane— While different domain (CI/CD), commonly used to automate testing and distribution of Swift libraries like this oneCarthage/Carthage— Package manager explicitly supported by this project; users of SlideMenuControllerSwift often prefer Carthage for dependency managementrealm/realm-swift— Representative mature, widely-adopted Swift library with similar CocoaPods/Carthage distribution strategy and storyboard integration patternsSwiftyJSON/SwiftyJSON— Community-standard pure-Swift library showing best practices for distribution, README documentation, and CocoaPods metadata that SlideMenuControllerSwift follows
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add unit tests for SlideMenuController core functionality
The repo has minimal test coverage. SlideMenuControllerSwiftTests/SlideMenuControllerSwiftTests.swift exists but is likely empty or contains only placeholder tests. The main library logic (ExSlideMenuController.swift, SlideMenuController extensions) lacks comprehensive unit tests for menu open/close animations, gesture detection, and state management.
- [ ] Examine current SlideMenuControllerSwiftTests/SlideMenuControllerSwiftTests.swift to understand existing test structure
- [ ] Add unit tests for ExSlideMenuController.swift methods (menu reveal/hide animations, touch handling)
- [ ] Add tests for UIViewController extensions in SlideMenuControllerSwift/UIViewController.swift to verify menu controller integration
- [ ] Add tests for gesture recognizer behavior and menu state transitions
- [ ] Ensure tests run reliably with XCTest framework
Create a GitHub Actions CI workflow for automated testing and building
No CI/CD pipeline is visible in the repo structure. The project has .swift-version and an xcodeproj, but no GitHub Actions workflows. Adding CI will catch regressions early and signal quality to users. The .gitignore and xcodeproj structure are already in place.
- [ ] Create .github/workflows/build-test.yml to run tests on iOS with xcodebuild
- [ ] Configure the workflow to test against multiple Swift versions (reference .swift-version)
- [ ] Add step to build the example app (SlideMenuControllerSwift target)
- [ ] Add step to validate CocoaPods spec with pod spec lint SlideMenuControllerSwift.podspec
- [ ] Configure workflow to run on push and pull requests to main/master branches
Extract reusable UIView/UIViewController extensions into a dedicated Source module
The library mixes example app code with library code. Files like UIView.swift, UIViewController.swift, UIImage.swift, UIApplication.swift, UIColor.swift, String.swift, and UITableViewExtension.swift in the SlideMenuControllerSwift/ folder are library utilities but are co-located with example app code (AppDelegate.swift, various ViewControllers). Moving these to Source/ (which exists but appears incomplete) will clarify what's framework vs. example, and make the library easier to maintain and document.
- [ ] Review files in SlideMenuControllerSwift/ to identify which are core library utilities vs. example-specific code
- [ ] Move library extension files (UIView.swift, UIViewController.swift, UIImage.swift, UIApplication.swift, UIColor.swift, String.swift, UITableViewExtension.swift) to Source/ directory
- [ ] Update SlideMenuControllerSwift.podspec to reference Source/ for library files, excluding example app controllers
- [ ] Update project.pbxproj to ensure Source/ files are included in the framework target but example controllers are not
- [ ] Update README.md's Installation section to clarify what files are part of the framework vs. example app
🌿Good first issues
- Add unit tests for gesture recognition: SlideMenuController lacks automated tests (no Test target visible). Create a test file to verify pan-to-open, tap-to-close, and edge-case gesture detection (e.g., pan at wrong angle should not trigger).
- Document SlideMenuOptions class: The README references SlideMenuOptions properties (leftViewWidth, contentViewScale) but the class definition is not visible in the file list and has no documented API. Create a markdown document listing all available options with examples and default values.
- Add SwiftUI wrapper component: Create a new file SlideMenuControllerSwiftUI.swift wrapping SlideMenuController in a UIViewControllerRepresentable to support modern SwiftUI projects, then add example in Examples/ folder.
⭐Top contributors
Click to expand
Top contributors
- @dekatotoro — 56 commits
- @Pluto-Y — 9 commits
- @alexanderkhitev — 6 commits
- @pmusolino — 4 commits
- @zirinisp — 4 commits
📝Recent commits
Click to expand
Recent commits
f67bb23— Update podspec (dekatotoro)4228ef9— Update README (dekatotoro)53579d4— Update CHANGELOG (dekatotoro)38c39f4— Merge pull request #348 from dekatotoro/swift4 (dekatotoro)88ed3c2— Fix warning (dekatotoro)5ecf9c1— Update to Swift4 (dekatotoro)4f764df— Update podspec to 3.0.2 (dekatotoro)bbd337c— Merge pull request #301 from MaikoHermans/patch-1 (pmusolino)d644951— Update README.md (MaikoHermans)1e7f55e— Added downloads badge in README, fix typos in other badges (pmusolino)
🔒Security observations
The SlideMenuControllerSwift repository demonstrates generally good security practices for an iOS UI component library. No critical vulnerabilities were identified. The main concerns are: (1) user-specific Xcode configuration files committed to version control, (2) potentially outdated build toolchain specifications, and (3) lack of explicit security reporting guidelines. The codebase focuses on UI presentation logic without apparent network requests, database operations, or direct user input handling that would introduce injection risks. No hardcoded credentials or secrets were detected in the file structure. Recommended improvements include proper .gitignore configuration and establishment of a security disclosure policy.
- Medium · Xcodeproj User Data Committed to Repository —
SlideMenuControllerSwift.xcodeproj/xcuserdata/. User-specific Xcode project configuration files (xcuserdata) are committed to the repository. This includes personal preferences, schemes, and potentially sensitive build settings that may vary by developer environment. These files should be excluded via .gitignore. Fix: Add 'xcuserdata/' to .gitignore to prevent committing user-specific project data. These files should be generated locally per developer. - Low · Legacy Swift Version Specification —
.swift-version. The repository contains a .swift-version file which is used by older package managers. This may indicate the project is using outdated dependency management practices or legacy Swift toolchain specifications. Fix: Verify that the Swift version requirements are current and consider using modern package manager specifications (SPM with Package.swift) instead of .swift-version files. - Low · Missing Dependency Lock File —
Repository root. No Package.resolved or Podfile.lock file is visible in the file structure. This may indicate missing version pinning for dependencies, which could lead to inconsistent builds across different environments. Fix: Ensure dependency lock files (Podfile.lock for CocoaPods or Package.resolved for SPM) are committed to the repository to guarantee reproducible builds. - Low · Minimal Security Documentation —
Repository root. No SECURITY.md or security policy file is present in the repository. This makes it difficult for security researchers to responsibly report vulnerabilities. Fix: Create a SECURITY.md file documenting how to report security issues responsibly and what users should do if they discover vulnerabilities.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.