Skip to content

About

A cleaner, ad‑free Facebook — no ads, no clutter, a few handy tweaks.

Topics

Resources

Stars

94 stars

Watchers

2 watching

Forks

Repository files navigation

Facebook Plus logo

Facebook Plus

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.

License Platform Version


✨ Features

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.


🗺️ Roadmap & Credits

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.


🚀 Installation

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.

⚡ Build your own IPA with GitHub Actions

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:

  1. Fork this repository (top-right Fork button).
  2. On your fork, open the Actions tab and click I understand my workflows, go ahead and enable them.

To build:

  1. If your fork is behind, click Sync fork → Update branch.
  2. Go to Actions → Build Facebook Plus (.ipa).
  3. Click Run workflow on the right.
  4. Fill in the inputs:
    • Direct download URL to the decrypted Facebook IPA — upload your decrypted .ipa to 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.
  5. Click Run workflow and wait for it to finish (≈10–15 min).
  6. 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 /releases to 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.

🛠️ Building from Source & Automated Injection

This project requires Theos to build. Ensure you have it installed and configured.

  1. Clone the repository (including submodules):

    git clone --recursive https://github.com/SHAJON-404/Facebook-Plus.git
    cd Facebook-Plus
  2. 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
  3. Automated Pipeline (build.sh):

    • Run ./build.sh to build every packaging scheme, or narrow it with the SCHEMES variable (e.g. SCHEMES="rootless rootfull" ./build.sh).
    • To also produce an injected .ipa, place a decrypted Facebook .ipa at test/com.facebook.Facebook.ipa before running.

    What build.sh does:

    • Builds one versioned .deb per scheme into packages/:

      Scheme Output
      rootless Facebook-Plus-v<version>-rootless.deb
      rootfull Facebook-Plus-v<version>-rootfull.deb
    • If a decrypted .ipa is present, injects the rootless build into it with cyan and writes packages/Facebook-Plus-v<facebook-version>-rootless.ipa. The same cyan run also:

      • builds every Safari web extension under OpenInFacebookSafariExtension/ from source and injects the resulting .appex into the app's PlugIns/;
      • merges any custom app icons (fbplus_*.png in resources/logo/) into CFBundleAlternateIcons via scripts/icon_plist.py, preserving Facebook's native icons;
      • fakesigns every injected binary for sideloading.
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-commands

This 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.


🏗️ Project Architecture

├── 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.

📜 Provenance & Credits

Third-party code, inspirations, and attributions are documented in ROADMAP_AND_CREDITS.md.

⚖️ License

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

About

A cleaner, ad‑free Facebook — no ads, no clutter, a few handy tweaks.

Topics

Resources

Stars

94 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages