iOS tweak for Apollo for Reddit app that lets you continue using Apollo with your own API keys after its shutdown in June 2023. The tweak also unlocks several Ultra features and includes several enhancements and fixes.
Note
Apollo-ImprovedCustomApi is now Apollo-Reborn
May 22, 2026 — This project is now under team-based maintainership to keep Apollo polished and sustainably maintained for the community - join us at r/ApolloReborn!
Apollo Reborn team: @JeffreyCA, @icpryde, @jordanearle, @nickclyde, @DeltAndy123 ❤️
Pre-built IPAs and AltStore Classic/SideStore/Feather sources are now available at apolloreborn.app!
![]() |
![]() |
![]() |
![]() |
![]() |
- Use Apollo with your own Reddit and Imgur API keys (don't have one?)
- Fully working Imgur integration
- Native Reddit media upload support (images, albums, and videos)
- Liquid Glass icons and UI enhancements for iOS 26+
- Reddit
/s/share links support - Pixel Pals support on newer iPhone models
- Image viewer and video playback fixes and enhancements
- Proxy Imgur images through DuckDuckGo for regional blocks
- Deep linking support for Steam, YouTube Shorts
- Auto-collapse pinned comments
- New Comments Highlightifier
- Saved Categories
- App Icons + Wallpapers (Community Icon Pack, SPCA Animals, Ultra Icons, "sekrit" app icons)
- Pixel Pals (including hidden "Artificial Superintelligence")
- Themes (including hidden "Chumbus" theme)
- Backup & Restore: Export and import Apollo and tweak settings as a .zip
- Custom Subreddit Sources: Use external URLs for random and trending subreddits
- Recently Read Posts: View all recently read posts from the Profile tab
- Editable Saved Categories: Add, rename, and delete saved post categories (Settings > Saved Categories)
- Bulk in-place translation: Translate posts and comments in-place with configurable provider and target language (Settings > Translation)
- Tap timestamp for creation date: Tap a comment or post's relative-time label to see the absolute creation date and time
- Tag Filters: Blur NSFW and/or Spoiler posts (including titles) in feeds, with per-subreddit overrides (Settings > Tag Filters)
- Inline Media Previews: Render images, GIFs, videos, and Imgur albums inline within posts and comments (Settings > Custom API > Media > Inline Media Previews)
- Rich Link Previews: Render metadata-rich link cards in post bodies and comments (Settings > Custom API > Media)
- User Profile Pictures: Show Reddit user avatars next to usernames in feeds, comments, and user profiles (Settings > Custom API > Media > Show User Profile Pictures)
- Self-hosted Notifications (advanced): Optionally route push registrations, watchers, and inbox checks through your own forked apollo-backend instance instead of having those requests silently dropped (Settings > Custom API > Notification Backend)
The legacy Apollo push backends went dark in June 2023 and are otherwise blocked by the tweak. If you run your own instance of nickclyde/apollo-backend (with your own Reddit OAuth CLIENT_ID / CLIENT_SECRET baked into its env vars), you can set the URL under Settings > Custom API > Notification Backend and the tweak will route all apollopushserver.xyz, beta.apollonotifications.com, and apolloreq.com traffic to that host instead. Leave the field empty to keep the current "silently dropped" behavior.
Important
APNs delivery requires a real aps-environment entitlement, which Apple only grants under a paid Apple Developer team. Free-account sideloads can still register and exercise the watcher CRUD, but push notifications will never actually arrive.
- Long-tapping share links open in the in-app browser
There are a few ways to open Reddit links in Apollo, depending on your browser and which IPA variant you installed.
Apollo's bundled "Open in Apollo" Safari extension now works again on sideloaded builds (it previously got stranded on an openinapollo.com interstitial). Enable it under Settings > Safari > Extensions > Open in Apollo, allow it on reddit.com, and Reddit links will open straight in Apollo. Available on the standard and Liquid Glass IPA variants (the extension is removed from the no-extensions variants).
If you installed a no-extensions variant, or you're on a jailbreak/.deb install, use the app-independent userscript instead:
- Install the free Userscripts app (a Safari extension) and enable it for
reddit.comin Settings > Safari > Extensions. - Open
userscript/open-in-apollo.user.jsin Safari, tap the aA menu → Userscripts, and install it.
It auto-redirects Reddit pages to Apollo and rewrites Reddit links on Google/Bing/DuckDuckGo results. (Search-result rewriting is inspired by AnthonyGress's userscript, which also works.)
Apollo's bundled "Open in Apollo" share-sheet action is fixed in this build and works from any browser: on a Reddit page tap Share → Open in Apollo and it opens straight in Apollo. (This was previously believed impossible — the stock action called the deprecated -[UIApplication openURL:] that iOS 18+ force-fails — but it now opens the link via a non-deprecated path.) Available on the standard and Liquid Glass variants.
⚠️ Depends on how you install. The action runs inside an app extension, which on iOS 26 only launches if your installer sets the appex's main-binary code-signing flag. AltStore and SideStore do this (confirmed), as do Xcode and Apple'scodesign(scripts/resign-ipa-codesign.shre-signs an IPA this way for directideviceinstaller/Configurator install). Sideloadly and Feather currently do not — with them the extension is killed at launch and the action silently does nothing. If you installed with one of those, use the Shortcut below; it's signer-independent.
A one-time Shortcut does the same thing from the share sheet on any browser. It rewrites the reddit.com URL to Apollo's apollo:// scheme and runs Open URLs — the one launch path iOS always allows from the share sheet (no private APIs; works on any sideload or jailbreak).
Build the "Open in Apollo" shortcut (about a minute)
In the Shortcuts app, create a shortcut named Open in Apollo with these actions, in order:
- Get URLs from Shortcut Input — coerces the shared link/web page into a URL.
- Replace Text — Find
^https?://([a-z0-9-]+\.)*reddit\.com, Replaceapollo://reddit.com, Regular Expression: On, input = the URLs from step 1. - (optional, for
redd.itlinks) Replace Text — Find^https?://([a-z0-9-]+\.)*redd\.it, Replaceapollo://redd.it, Regular Expression: On, input = the Updated Text from step 2. - Open URLs — input = the Updated Text from the last Replace Text.
Then in the shortcut's settings (ⓘ) turn on Show in Share Sheet and, under Share Sheet Types, leave only URLs enabled.
Only the scheme + host are rewritten, so the full path/query is preserved — comment permalinks, profiles, and /s/ share links all open correctly (the same apollo://reddit.com/<path> form the Safari extension and userscript produce). To share it with others, open the shortcut → Share → Copy iCloud Link.
Then, in any browser, on a Reddit page tap Share → Open in Apollo.
Important
Reddit and Imgur no longer allow new API key creation so you'll need to share or use existing keys.
Reddit has also recently started revoking API keys that are specifically used for Apollo or any other third party client. If you still have your own working key, see Avoiding API key revocations.
Reddit has a special deal with Dystopia and RedReader to use the API for free for accessibility reasons. It is possible to use the client ID from one of those apps on either iOS or Android:
- Install Dystopia from the App Store (if running iOS) or RedReader from the Play Store (if running Android).
- Log in with your Reddit account in Dystopia/RedReader and allow it access to your account.
- After logging in, you should receive an email from Reddit with the subject "You’ve authorized a new app in your Reddit account". Open the email and look for the text after "App ID". Copy that value.
- In Apollo Reborn's settings, go to Custom API and enter the following values:
- Reddit API Key: Paste the App ID you copied from the email
- Redirect URI:
- If using Dystopia:
dystopia://response - If using RedReader:
redreader://rr_oauth_redir
- If using Dystopia:
- User Agent:
- If using Dystopia:
ios:com.CarbonDev.Dystopia:v1.0.1(by /u/DystopiaForReddit) - If using RedReader:
RedReader/1.25.1
- If using Dystopia:
- Log in to Reddit in Apollo normally. Reddit should ask to connect your Reddit account with Dystopia/RedReader instead of your own Reddit app. Accept the connection and you should be good to go!
Credits to this guide for the original workaround with RedReader.
More discussion in #82 and #367.
Note
This section is for users who still have their own Reddit API key. If you're using the Dystopia/RedReader client IDs from the section above, do not change any of these values — that setup only works because it matches those apps' settings exactly.
Reddit doesn't publish how it decides which keys to revoke, but past revocation waves appear to target keys that identifiably belong to third-party clients. Keys whose settings don't mention Apollo have tended to survive. There are no guarantees, but you can remove the obvious signals. Reddit can see:
- Your API app's registered settings at reddit.com/prefs/apps: name, description, about URL, and redirect URI.
- The
redirect_urisent with every sign-in request. - The
User-Agentheader on all API traffic.
To scrub these:
- Rename your Reddit API app. At reddit.com/prefs/apps, edit your app so the name, description, and about URL don't contain "Apollo", "Reborn", or the name of any other third-party client. Something generic and personal works best (e.g.
my-ios-app). - Change the redirect URI. In the same edit form, replace
apollo://reddit-oauthwith a personal scheme (e.g.myscheme://reddit-oauth), then enter the exact same value in Apollo Reborn's settings under Custom API → Redirect URI. On v3.1.0 or later no IPA patching is needed — any scheme works (see Custom Redirect URI if you're on an older version). You won't be signed out: the redirect URI is only checked at sign-in time, so existing sessions keep refreshing normally. - Set a custom User Agent. In Custom API → User Agent, don't leave the field blank — the built-in default is the same browser string for every Apollo Reborn user, which is itself a fingerprint. Use Reddit's recommended format, personalized to you:
ios:<your.bundle.id>:v1.0 (by /u/<your_username>). - (Sideloaders, optional) Pick a bundle ID without "Apollo". The bundle ID isn't sent to Reddit directly, so this is the least important signal, but it keeps "Apollo" out of any string that could end up in your user agent and costs nothing to change at signing time.
Finally, don't copy these examples verbatim. If everyone adopts the same "safe" name and redirect URI, that just becomes the next thing to scan for. The goal is to look like a small one-off personal script, which means values unique to you.
Note
Starting with Apollo Reborn v3.1.0, patching the Info.plist is no longer required to use a custom redirect URI. This section will remain for older versions, but if you're on v3.1.0 or later you can just enter your custom redirect URI in the tweak settings and it will work without any additional patching.
The redirect URI scheme (the part before ://) must be registered in the Apollo IPA's Info.plist under CFBundleURLTypes, otherwise the OAuth callback won't return to Apollo. Add your scheme with patch.sh or the Build IPA GitHub Action:
./patch.sh Apollo.ipa --url-schemes customResulting Info.plist entry:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>twitterkit-xyz</string>
<string>apollo</string>
<string>custom</string> <!-- enables custom://reddit-oauth -->
</array>
</dict>
</array>patch.sh and the Build IPA GitHub Action apply optional patches to a stock Apollo IPA. By default they do not inject the tweak (the Action has an inject_tweak toggle for that) - locally use Sideloadly or build-ipa.sh to inject.
./patch.sh <path_to_ipa> [--liquid-glass | --liquid-glass-icons] [--url-schemes <schemes>] [--remove-code-signature] [-o <output>]Available patches:
--liquid-glass- enables the iOS 26 Liquid Glass UI and installs a pack of Liquid Glass icons that can be switched between in the tweak's in-app icon picker.--liquid-glass-icons- installs the Liquid Glass icon catalog only, without the iOS 26 UI chrome (skips thevtoolbuild-version bump that opts the app into the iOS 26 runtime, so legacy UIKit behaviors like the bottom-tab swipe gesture are preserved). Mutually exclusive with--liquid-glass.--url-schemes <list>- adds comma-separated URL schemes toCFBundleURLTypes(see Custom Redirect URI, obsolete on v3.1.0+).--remove-code-signature- strips the existing code signature.
To run via GitHub Actions, fork this repo and trigger Actions > Build IPA. It can inject the tweak (inject_tweak), strip extensions (no_extensions), apply Liquid Glass (liquid_glass) or Liquid Glass icons only (liquid_glass_icons), add URL schemes, and remove the code signature in one run, from an Apollo IPA URL.
Recommended configuration:
- Use automatic bundle ID: unchecked — pick a bundle ID that doesn't contain "Apollo" (e.g.
com.foo.bar, see Avoiding API key revocations) - Signing Mode: Apple ID Sideload
- Inject dylibs/frameworks: checked - add the
.debvia +dylib/deb/bundle- Cydia Substrate: checked
- Substitute / Sideload Spoofer: unchecked
build-ipa.sh builds the tweak .deb and injects it into an Apollo IPA. For this repo's already-injected Apollo-base.ipa, it uses the repo-local scripts/inject-deb-local.sh replacement injector first, so azule/cyan are not required for normal test builds. For a truly stock IPA without the injection scaffold, install azule or cyan; signing/sideloading is still handled by your preferred signer.
make package
./build-ipa.sh --ipa ./Apollo.ipa [--deb ./packages/<tweak>.deb] [-o ./packages/Apollo-Tweaked.ipa]For the in-house four-variant IPA release flow, AltStore Classic/SideStore/Feather source generation, and the meaning of the “No Extensions” builds, see DISTRIBUTION.md. Apollo-Reborn is intended for AltStore Classic, not AltStore PAL.
Requirements:
Instructions:
git clone https://github.com/Apollo-Reborn/Apollo-Reborncd Apollo-Reborngit submodule update --init --recursivemake packageormake package THEOS_PACKAGE_SCHEME=rootlessfor rootless variant
Thank you to these wonderful people:
JeffreyCA Maintainer ☕ |
icpryde Maintainer ☕ |
jordanearle Maintainer |
nickclyde Maintainer |
DeltAndy123 Maintainer |
EthanArbuckle Code |
iCrazeiOS Code |
hllvc Code |
yodaluca23 Code |
ep0chzero Code |
mmshivesh Code |
Uranosphaerite Code |
wdeezy Code |
ryannair05 Code |
ichitaso Code |
epheterson Code |
nunoo Code |
lampemw Code |
rebelancap Code |
nackerr Code |
iGerman00 Design |
jryng Design |
bajader Design |
metalnakls Design |
paulo1manso Design |
harumatsu Design |




