

Stillfeed (ehemals Social Reader)
Eine Android-App, mit der ich Reddit, X, Facebook und Instagram lesen kann, ohne ständige „Antworten"- und „Posten"-Buttons und mit weniger Werbung. Selbst gebaut, weil ich die Kontrolle über meine Accounts und meine Ruhe beim Lesen behalten wollte. Angefangen hat sie als privater „Social Reader", inzwischen heißt sie Stillfeed und ist für alle da.
Lange war das ein reines Ich-Projekt. Irgendwann fand ich: Wenn mir das Lesen ohne Dauer-Aufforderung so gut tut, geht es anderen vielleicht genauso. Also habe ich mich entschlossen, das Resultat öffentlich zu stellen. Der Quellcode bleibt bei mir, die fertige App (APK) teile ich aber gern. Dabei hat sie auch einen neuen Namen und ein neues Icon bekommen: aus „Social Reader" wurde Stillfeed. Enjoy the (fast) silence.
Wer sie ausprobiert und etwas findet, das hakt, oder eine Idee für einen weiteren Filter hat: Verbesserungsvorschläge und Fixes nehme ich gern an, am einfachsten als Issue auf GitHub. Große Umbauten wie Posten oder Konten-Verwaltung sind aber bewusst nicht das Ziel.
01Warum überhaupt?
Ich nutze Reddit und X regelmäßig, Facebook und Instagram gelegentlich, vor allem, um Familieninhalte zu lesen und in Familien-Chats erreichbar zu sein. Mein Nutzungsverhalten ist eher passiv: mal ein Like, aber kein Posten oder Kommentieren.
Vorher hatte ich eine fremde „Social-Browser"-App („Friendly") genutzt und damit Account-Probleme bekommen. Das war der Auslöser, eine eigene Lösung zu bauen, mit voller Kontrolle über Privatsphäre und Login-Sicherheit, ohne dass meine Zugangsdaten durch fremde Server laufen.
02Wie es funktioniert
Die App ist mit Flutter gebaut und zeigt die vier Netzwerke jeweils in einer eigenen WebView. Anfangs lagen alle vier Tabs dauerhaft in einem IndexedStack, damit die angemeldeten Sitzungen und die Feed-Position beim Tab-Wechsel erhalten bleiben. Das hatte einen praktischen Vorteil (man konnte dort weitermachen, wo man zuletzt war), aber auch einen handfesten Nachteil: Vier gleichzeitig lebende Webansichten haben den Arbeitsspeicher volllaufen lassen und mein damaliges S22 Ultra spürbar warm werden lassen. Deshalb halte ich jetzt nur noch den aktiven Tab live; die anderen werden erst beim Umschalten geladen. Das kostet den Komfort, exakt an der alten Scroll-Position weiterzulesen, hält das Gerät dafür kühl und den RAM im Rahmen. Unten sitzt eine schlanke, nur 44 px hohe Icon-Leiste zum Umschalten.
4 Tabs, eine Oberfläche
Reddit, X, Facebook und Instagram in einer App, kein Wechsel nötig. Aktiv gehalten wird der laufende Tab, schonend für RAM und Temperatur.
Buttons & Werbung ausblenden
Per JavaScript werden Compose-Buttons, Kommentarfelder, Stories und Werbeblöcke versteckt.
Logins bleiben lokal
Die Anmeldungen liegen nur auf dem Gerät. Nach dem Start entsperrt ein Fingerabdruck die App.
Bilder speichern
Bilder lassen sich per langem Druck herunterladen. Video-Download habe ich bewusst wieder entfernt (siehe unten).
03Das Ausblenden im Detail
Der spannendste Teil: unerwünschte Elemente verschwinden zu lassen, ohne die Seiten kaputtzumachen. Umgesetzt über gezielte JavaScript-Injection pro Plattform:
- Reddit & X: ein in ein IIFE gekapselter
MutationObservererkennt neu nachgeladene Inhalte und blendet Werbung und Compose-Buttons laufend aus, auch beim Endlos-Scrollen. - Facebook: Ausblenden über ARIA-Rollen und ein „Text-Climbing" (vom passenden Text zum richtigen Container hochlaufen), trifft Composer, Kommentarboxen, Stories-Karussell und Vorschläge/Sponsored-Einträge.
- Instagram: Stories-Leiste, untere Navigation und Werbeeinträge raus, ebenfalls per Text-Climbing (zum Nebeneffekt der Feed-Lücken siehe unten).
- Alles läuft über
display:none !important, aber abgesichert durch eine Schutzregel, die keinen Container ausblendet, der den eigentlichen Feed enthält.
Damit Facebook den Messenger direkt in der WebView zulässt (statt „App öffnen"), bekommt es einen Desktop-User-Agent; die anderen laufen mit einem mobilen Chrome-User-Agent. intent://-Aufrufe für den Messenger werden abgefangen und auf facebook.com/messages umgeleitet.
04Herausforderungen & Lösungen
Ein früher, zu aggressiver Ausblend-Versuch bei Instagram hat versehentlich die ganze Seite schwarz gemacht: Die Regel hat einen Container erwischt, der den gesamten Feed enthielt.
Eine Guard-Funktion (srContainsFeed()) prüft vor jedem Ausblenden, ob ein Element den Feed/Artikel/Hauptbereich enthält. Wenn ja, wird es nicht versteckt. Seitdem bleibt der Feed sichtbar und nur der Ballast verschwindet.
Bei Instagram wird zwar zuverlässig viel Werbung ausgeblendet, aber mit einem Nebeneffekt: Wo ein Werbeeintrag entfernt wird, bleibt im Feed eine Lücke. Man scrollt und sieht für ein, zwei Positionen kurz nichts (im Screenshot unten markiert). Instagram rendert den Feed offenbar mit festen Platzannahmen, sodass der Bereich nach dem Ausblenden nicht sauber nachrückt. Ich habe mich daran gewöhnt. Eine elegantere Lösung (die Lücke sauber kollabieren zu lassen) steht noch auf meiner Liste.
Bei Reddit, X und Facebook sieht man Post-Buttons oder Werbung für einen kurzen Moment noch, bevor sie nach knapp einer Sekunde verschwinden. Grund: Das Ausblenden greift erst, wenn die Elemente schon gerendert sind. Für mich ist das völlig okay, der Feed bleibt lesbar, und der kurze Moment stört den Lesefluss nicht wirklich.
Bilder herunterzuladen war einfach; bei Videos kam nur „Stream kann nicht heruntergeladen werden", weil die echte Datei-URL im Seiten-Code versteckt ist.
Ich hatte es zeitweise über einen kleinen fetch-/XHR-Patch versucht, der die MP4-Adressen aus den JSON-Antworten fischt (u. a. Facebooks browser_native_hd_url). In der Praxis war das aber zu fehleranfällig. Segmentierte Streams, ständig wechselnde Adressen und Tokens. Deshalb habe ich den Video-Download bewusst wieder entfernt. Für mich verschmerzbar: Der Download von Bildern klappt zuverlässig, und das reicht mir völlig.
In den Einstellungen gibt es einen kleinen Checker, der pro Plattform ausliest, wie oft welche Filterregel gegriffen hat (grün/orange/grau). So sehe ich sofort, ob nach einem Update einer Plattform eine Regel nicht mehr passt.
05Stand & Ausblick
Die App läuft im Alltag stabil und ist für mich sehr gut nutzbar, nicht perfekt, aber genau das, was ich wollte. Da die Plattformen ihr Layout regelmäßig ändern, müssen die Filterregeln ab und zu nachgezogen werden. Seit der Veröffentlichung liegen die Filterregeln zentral auf GitHub und werden von der App automatisch geholt: Ein Filter-Update braucht also keine neue APK mehr.
Für die öffentliche Version ist noch einiges dazugekommen: Reaktionen (Likes) sind ab Werk gesperrt und lassen sich per Schalter freischalten, genauso wie der Facebook-Messenger. Die Oberfläche gibt es auf Deutsch und Englisch, dazu erzwungener Dark Mode, eine old.reddit-Option und eine Nur-Text-Ansicht für externe Links. Cookie-Abfragen der Plattformen blende ich bewusst nicht weg, das soll jeder selbst entscheiden.
Inzwischen habe ich die App signiert und den Gerätewechsel mitgemacht, vom S22 Ultra auf das neue S26 Ultra. Dort ließ sie sich problemlos installieren und läuft genauso wie zuvor.
Was noch offen ist (und was erledigt wurde)
- Erledigt: Compose-Button bei Facebook. Der kleine runde Stift zum Schreiben unten rechts saß lange außerhalb des Bereichs, den meine Filter abklappern. Inzwischen ist er behoben.
- Kurzes Aufblitzen: Die Posten- und Kommentieren-Buttons sieht man beim Öffnen noch kurz, sie verschwinden aber in weniger als einer Sekunde. Etwas Besseres habe ich bisher nicht gefunden, weil das Ausblenden erst greifen kann, wenn die Elemente gerendert sind.
- Einklappen bei Instagram: Die Einklapp-Funktion für ausgeblendete Werbung ist nicht ganz so schnell, wie man es sich wünschen würde. Damit kann man aber leben.
Das passt zu meiner Nutzung: Außer dem Facebook-Chat mit Familie und Freunden poste ich nichts, ich lese nur. Genau dafür ist die App gebaut.
Denkbare Erweiterungen
Die Struktur lässt sich leicht ausbauen. Man könnte weitere Plattformen ergänzen oder umgekehrt in den Einstellungen einzelne abwählen, bis hin zu „nur eine anzeigen, den Rest ausblenden", je nachdem, was man gerade möchte. Die Plattform-Schalter dafür gibt es schon, abgewählte Netzwerke tauchen dann weder in der Leiste auf noch werden sie geladen.
06Screenshots
Startbildschirm, Feed-Ansicht und Einstellungen der veröffentlichten Version. Der Feed ist eine Demo mit Platzhalter-Inhalt, damit keine fremden Beiträge auf meiner Seite landen. (Antippen zum Vergrößern.)



