The alternative App Store that fits in your pocket.
Install, refresh, and manage sideloaded apps — entirely on-device, no computer required.
Most sideloaders need either a jailbreak or a Mac running companion software. MiniStore needs neither.
After the initial setup, everything happens on your phone. Install apps, refresh them before they expire, update them — all over Wi-Fi, directly on-device. The secret is minimuxer, a Rust library that runs inside iOS's sandbox and handles device communication using Apple's own protocols. No Mac. No USB. No daemon running in the background on a computer somewhere.
MiniStore is a fork of SideStore and AltStore, rebuilt with a sharper focus on stability, performance, and a display layer that doesn't feel like an afterthought.
- Truly untethered — Wi-Fi signing and refresh, no companion app required after setup
- Free Apple ID — uses your personal development certificate; apps are valid for 7 days and auto-refreshed before they expire
- Multiple sources — add any AltStore-compatible source URL and browse its apps directly
- App sorting — sort the browse feed by name, developer, or last-updated date, saved per source
- App backups — back up and restore sideloaded apps via the bundled AltBackup companion
- Stable + nightly tracks — flip "Beta Updates" in Settings to follow the nightly build channel
This is where MiniStore goes beyond the basics. The Display screen in Settings gives you real control over how the app looks:
| Toggle | What it does |
|---|---|
| OLED Dark Mode | Pure-black backgrounds in dark mode. Your battery thanks you. |
| Hide Tab Bar Labels | Strips the text from tab bar icons for a cleaner look. |
| Compact My Apps Cards | Shrinks installed app cards from 88 → 60pt. More apps on screen at once. |
| Accent Color | Replace the default teal with any color — presets or a full color picker. |
| Widget Accent Color Sync | Pushes your accent color to the home screen widget so it all matches. |
| Reduce Blur | Solid navigation bar in the browse feed instead of frosted glass. |
Track your sideloaded apps' expiry countdowns right from your home screen.
- Multiple sizes — small, medium, and large home screen configurations
- Lock screen — compact complications with expiry progress rings
- StandBy mode — full-screen layout when your phone is on the charger
- Accent color sync — respects whatever accent color you've set in the app
- iOS 26 glass — automatically adapts to the new glass home screen mode
MiniStore has been carefully tuned for iOS 26's Liquid Glass redesign:
- Navigation bar appearances are correctly scoped — item-level and bar-level set together where needed to fully suppress the glass compositor
- The browse tab's "Reduce Blur" mode correctly overrides the glass material at the right level
- Large-title rendering in the settings stack is preserved (scroll-edge always stays glass)
- Custom bar button items nil themselves out instead of just hiding, preventing ghost glass capsule artifacts
- The
#unavailable(iOS 26)guard inNavigationBar.layoutSubviewsskips the ContentView position adjustment that would cause layout artifacts on the new bar design
| Requirement | Version |
|---|---|
| iOS | 17.1+ |
| Xcode (to build) | 26+ |
| Rust toolchain (to build) | stable via rustup |
| Apple ID | Free or paid |
Download the latest MiniStore.ipa from the Releases page and install it using any AltStore-compatible sideloader.
Once installed, MiniStore can update itself — just keep an eye on the "My Apps" tab.
# Clone with submodules — minimuxer and AltSign are both submodules
git clone --recursive https://github.com/The-Big-Mini/MiniStore.git
cd MiniStore
# Install Rust (minimuxer build step)
brew install rustup
rustup install stable
# Set up code signing for local builds
cp CodeSigning.xcconfig.sample CodeSigning.xcconfig
# Fill in your DEVELOPMENT_TEAM in CodeSigning.xcconfig
# Build, fake-sign extensions, and package
make build
make fakesign
make ipaThe IPA lands at MiniStore.ipa in the repo root. For CI/unsigned builds, make build automatically uses AltStoreFree.entitlements with CODE_SIGNING_ALLOWED=NO.
Tip:
MARKETING_VERSIONinBuild.xcconfigis the single source of truth for version numbers. Don't edit it anywhere else.
AltStore/ Main app target (Swift + ObjC)
Browse/ Source browser — search, sort, install from any source
My Apps/ Installed apps — expiry countdowns, refresh, backup/restore
Settings/ Settings UI including Display and Accent Color screens
Operations/ Async pipeline: download → verify → resign → send → install
Components/ Shared cells, cards, navigation bar, pill buttons
AltStoreCore/ Shared framework — CoreData models, extensions, UserDefaults
AltWidget/ WidgetKit extension — home screen, lock screen, StandBy
AltBackup/ Companion backup app (embedded as an IPA inside the main bundle)
SideStore/ minimuxer Rust bridge + IfManager Wi-Fi interface layer
Dependencies/
AltSign/ Apple developer portal API — certificate + profile management
minimuxer/ Rust static library — on-device device communication
Roxas/ Riley Testut's UIKit framework powering collection views
xcconfigs/ Per-target build settings (all inherit from Build.xcconfig)
scripts/ci/ Python CI helpers — versioning, release notes, workflow logic
MiniStore signs apps with your personal Apple development certificate — the same kind Xcode uses when running an app on your own device. Free accounts get 7-day validity per app; paid developer accounts get a full year.
The refresh flow re-signs apps before they expire. minimuxer runs inside the iOS sandbox, communicating with the device over a loopback Wi-Fi channel using Apple's own lockdown protocol. This is what makes the whole thing untethered — the "device" it's talking to is the same device it's running on.
Anisette data (Apple's time-sensitive authentication token) is fetched from a community server. The server URL is configurable under Settings → Advanced if you want to run your own.
Two sources are pre-loaded at first launch:
| Source | What's in it |
|---|---|
| Mini's Repo | A curated personal collection — EeveeSpotify, YouTube tweaks, X/Twitter mods, and more |
| MiniStore Updates | How the app updates itself. Don't remove this one. |
Tap the + button in the Sources tab to add any AltStore-compatible source by URL. The source icon and tint color will be used throughout the browse experience once it loads.
| Channel | Trigger | Notes |
|---|---|---|
| Stable | Manual tag push or workflow dispatch | Attached to GitHub Releases |
| Nightly | 00:00 UTC daily (if commits exist) | Opt in via Settings → Beta Updates |
| PR builds | Every push to a PR (Swift/config changes) | IPA attached to the PR by Actions |
All pipelines run on macos-26 / Xcode 26.2. The version number is stamped by scripts/ci/workflow.py before building, so you never need to manually update version fields in multiple places.
Pull requests welcome. A few things worth knowing before diving in:
Architecture:
- The operations pipeline (
AltStore/Operations/) usesNSOperation, notasync/await. Don't mix them in the same chain — dependency management, cancellation, and progress reporting are all built around the NSOperation model. - UI is actively migrating from UIKit to SwiftUI. New screens are written in SwiftUI and hosted in
UIHostingControllerwhere they plug into the existing UIKit navigation stack. Existing UIKit screens are being rewritten in SwiftUI incrementally — the What's New screen was the first. - Never hardcode bundle IDs — debug builds append the team ID suffix, so
com.SideStore.SideStore.S32Z3HMYVQandcom.SideStore.SideStoreare the same app in different build configurations.
A few gotchas:
side.json/sidenightly.jsonare the self-update sources and live in this repo, served raw from thedevelopbranch. CI stamps them automatically on each stable/nightly build — no manual editing needed. (The oldMiniStore-Publicmirror was retired in 2026-06; this repo is public now.)- The minimuxer
documentsDirectoryargument must stay as.absoluteString, not.path. The Rust bridge expects thefile://prefix. This has been changed twice by mistake and reverted both times. configureWithDefaultBackground()must stay onscrollEdgeAppearancein the settings stack. Using an opaque appearance there suppresses large-title rendering on iOS 26.
The project uses a Claude Code intelligence system (.claude/) with architecture decision records, gotcha documentation, and pattern guides. Worth reading if you're making structural changes.
See CONTRIBUTING.md for the full development setup walkthrough.
MiniStore wouldn't exist without:
- Riley Testut — for building AltStore, AltSign, and Roxas, and open-sourcing all of it
- SideStore contributors — for proving untethered was actually achievable and sharing how
- jkcoxson — for minimuxer, em_proxy, and basically the entire on-device communication stack
- The broader sideloading community for keeping the ecosystem alive
Licensed under the AGPL v3. See LICENSE.md for the full text.
Portions derived from AltStore and SideStore, both AGPL v3. The minimuxer library carries its own license.