The ultimate privacy and enhancement tweak for the Facebook iOS app.
Quieten your feed, watch stories anonymously, download Reels & Stories, confirm interactions, and customize the app's appearance.
| Category | Features |
|---|---|
| 📰 Feed | Remove Ads & Sponsored Posts Hide "People you may know", Group & Page suggestions Remove Reels carousel, Threads promo & Stories (tray + single cards) Confirm before liking (prevents accidental likes) |
| 🎬 Reels | Confirm before liking Hide overlay — one tap strips likes, comments, share & caption, leaving just the video Save Reels to Photos |
| 📖 Stories | Watch stories anonymously (Ghost Mode) Disable auto-advance Hide Story Suggestions Save Stories (video & photo) to Photos |
| 🧭 Links | Open external links in your default browser instead of the in-app browser Open in Facebook Safari extension — reopens facebook.com links from Safari in the app, on the exact Reel / post / photo / story |
| 🎨 Appearance | OLED Dark Mode (true black — keeps post dividers, avatars & the status bar legible) Custom App-Icon Picker |
| 🔔 Updates | Built-in update checker — notified in-app when a new version ships, with the changelog and one-tap download from GitHub or Telegram Manual re-check from Settings → Check for Update |
💡 Settings: Long-press any tab bar item (classic or the new iOS 26 liquid-glass bar), the "facebook" wordmark, or the native Facebook settings button.
Planned features and fixes, together with the project's provenance and credits, are documented in ROADMAP_AND_CREDITS.md. Contributions and suggestions are welcome — open an issue or a pull request.
Download the pre-built .ipa file from the Releases section and install it on your device using Feather, Ksing, or any other sideloading tool of your choice.
No Mac required. The Build Facebook Plus (.ipa) workflow builds the tweak from source and injects it into a decrypted Facebook IPA that you provide, then publishes the result as a draft release on your fork.
Important
You must supply your own decrypted Facebook .ipa. We cannot distribute one
for legal reasons.
First time only:
- Fork this repository (top-right Fork button).
- On your fork, open the Actions tab and click I understand my workflows, go ahead and enable them.
To build:
- If your fork is behind, click Sync fork → Update branch.
- Go to Actions → Build Facebook Plus (.ipa).
- Click Run workflow on the right.
- Fill in the inputs:
- Direct download URL to the decrypted Facebook IPA — upload your decrypted
.ipato filebin.net and paste the direct download link to the file. filebin is the recommended host and the one this workflow has been tested with. A link to a web page instead of the file itself will fail validation. - Bundle identifier (optional) — leave blank to keep
com.facebook.Facebook. Set a custom id to install alongside the stock app. The tweak is bundle-id-agnostic, so it activates under whatever id you choose — no other change needed.
- Direct download URL to the decrypted Facebook IPA — upload your decrypted
- Click Run workflow and wait for it to finish (≈10–15 min).
- Download the IPA from your fork's Releases section. The release is created as
a draft — open it, review, and publish. (If you don't see Releases, append
/releasesto your fork's URL, e.g.github.com/<you>/Facebook-Plus/releases.)
The workflow reuses build.sh, so your IPA gets the exact same
injection as a local build — the tweak, the custom app-icons, and the bundled
Open in Facebook Safari extension, all fakesigned for sideloading.
This project requires Theos to build. Ensure you have it installed and configured.
-
Clone the repository (including submodules):
git clone --recursive https://github.com/SHAJON-404/Facebook-Plus.git cd Facebook-Plus -
Set up Python Environment: Create a virtual environment and install the required tools:
python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt && pipx install --force https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip && pipx inject --force cyan lief
-
Automated Pipeline (
build.sh):- Run
./build.shto build every packaging scheme, or narrow it with theSCHEMESvariable (e.g.SCHEMES="rootless rootfull" ./build.sh). - To also produce an injected
.ipa, place a decrypted Facebook.ipaattest/com.facebook.Facebook.ipabefore running.
What
build.shdoes:-
Builds one versioned
.debper scheme intopackages/:Scheme Output rootlessFacebook-Plus-v<version>-rootless.debrootfullFacebook-Plus-v<version>-rootfull.deb -
If a decrypted
.ipais present, injects the rootless build into it withcyanand writespackages/Facebook-Plus-v<facebook-version>-rootless.ipa. The samecyanrun also:- builds every Safari web extension under
OpenInFacebookSafariExtension/from source and injects the resulting.appexinto the app'sPlugIns/; - merges any custom app icons (
fbplus_*.pnginresources/logo/) intoCFBundleAlternateIconsviascripts/icon_plist.py, preserving Facebook's native icons; - fakesigns every injected binary for sideloading.
- builds every Safari web extension under
- Run
Code Editor Setup
Theos does not emit a compilation database by default, causing editors to fail at finding the iOS SDK. Generate one with bear:
make compile-commandsThis writes a per-machine .clangd (with your theos path and SDK baked in) and a compile_commands.json. The database is produced with bear parse-sh from theos's own dry-run (make -n) rather than by intercepting the build, because macOS strips the interception mechanism (DYLD_INSERT_LIBRARIES) from the Xcode toolchain's Apple-signed clang, leaving a plain bear -- make empty. Re-run it after adding new source files. Note: Logos .xm files cannot be fully parsed by clang, so .clangd suppresses false diagnostics while ensuring they compile correctly.
├── Localizations # Translations (ar, bn, de, es, fr, hi, id, it, ja, ko, etc.)
├── OpenInFacebookSafariExtension # Safari web extension built into PlugIns ("Open in Facebook")
├── resources # Assets (App icons, SVGs, and asset bundles)
│ ├── bundle # Compiled UI images and tweak resources
│ ├── logo # Custom app-icons drop folder for build.sh injection
│ └── svg # Source vector graphics
├── scripts # Python utility scripts (e.g., icon merging, svg rendering)
├── src # Tweak source code
│ ├── Core # Constructor, preferences, and resources
│ ├── Features # All the hooks for modifying the Facebook app:
│ │ ├── AppChrome # UI settings gesture (TabBar & Settings Button)
│ │ ├── AppIcons # Custom app-icon picker logic
│ │ ├── Downloads # Reel & Story media downloaders (save to Photos)
│ │ ├── Feed # Feed-related hooks (ads, suggestions, Reels)
│ │ ├── Language # UI language override hooks
│ │ ├── LikeConfirmation # Confirm before liking logic
│ │ ├── Links # Open external links in the default browser (not the IAB)
│ │ ├── OLED # True dark mode implementation
│ │ ├── Onboarding # Welcome screen controller
│ │ ├── Stories # Story-related hooks (Ghost mode, auto-advance block)
│ │ └── Update # In-app update checker + update screen (GitHub Releases)
│ ├── PluginsInject # Sideload compatibility layer (Keychain / App-Group / CloudKit)
│ ├── Settings # The Facebook Plus in-app settings UI
│ └── UI # Shared UI components
│ ├── Sheet # Bottom sheet controllers
│ └── Toast # HUD / Progress pills
└── test # Input IPA directory and test scripts
Resilient Hooking: Each hook dynamically verifies that its target class and selector exist before installation. If a Facebook update changes a specific class, only that single feature degrades safely without crashing the entire tweak. The settings gesture, for example, hooks both the classic tab bar and the new iOS 26 liquid-glass bars so long-press keeps working across iOS versions.
Third-party code, inspirations, and attributions are documented in ROADMAP_AND_CREDITS.md.
This project is open-source and distributed under the terms of the GNU General Public License v3.0 (GPL-3.0).
Please refer to the LICENSE file for more details.
Copyright © 2026 S. SHAJON