Canva Austria GmbH.
Multiplatform Strategy for the remove.bg Apps
Description
Andreas Braumann von Kaleido untersucht in seinem devjobs.at TechTalk die Vor- und Nachteile von Flutter und wie man damit alle remove.bg Apps in einer einheitlichen Technologie haben könnte.
Beim Videoaufruf stimmst Du der Datenübermittlung an YouTube und der Datenschutzerklärung zu.
Video Zusammenfassung
In "Multiplatform Strategy for the remove.bg Apps" erläutert Andreas Braumann die bestehende Landschaft—eine Electron/Vue-Desktop-App, eine native Android-WebView-App ohne iOS und In-App-Käufe sowie ein Go-basiertes CLI—und die Ziele einer einheitlichen Codebasis, gemeinsamen Builds/Tests und geteilten Assets. Er vergleicht React Native und native Entwicklung für Mobile, Node.js bzw. Rust fürs CLI und ein aktualisiertes Electron für Desktop, und schlägt Flutter/Dart als Multi-Plattform-Kandidaten vor: ein gemeinsamer Kern (Auth, API-Key-Validierung, Background Removal) für Android, iOS, Desktop, CLI und optional Web, mit Android-Prototyp und Beta-Status am Desktop. Zuschauer können die gezeigten Abwägungen und die Konsolidierungsstrategie auf eigene Multi-Plattform-Stacks und Build-Pipelines übertragen.
Multiplatform-Strategie für die remove.bg Apps: Warum Flutter den nächsten Konsolidierungsschritt möglich machen könnte
Kontext: Ein Produkt, viele Oberflächen – und die Suche nach einem einheitlichen Weg
In „Multiplatform Strategy for the remove.bg Apps“ skizziert Andreas Braumann (Canva Austria GmbH.) die Lage: remove.bg existiert heute als Desktop-App, Android-App und CLI – jeweils mit eigenen Technologien, eigenen Build-Pipelines und eigenen Tests. Dazu kommen Web-Komponenten und Spezialisierungen wie Photoshop-Export oder Designvorlagen für Batch-Prozesse. Das funktioniert, kostet aber zunehmend Wartungsaufwand.
Der Auftrag ist klar: Ein gemeinsamer Codekern, ein Build-Prozess, geteilte Assets und konsistente Tests über alle Zielplattformen hinweg. Was viele Unternehmen „Cross-Platform“ nennen (iOS und Android aus einer Codebasis), ist hier bewusst größer gefasst: Multi-Platform – inklusive Desktop (macOS, Windows, Linux) und idealerweise sogar die CLI.
Braumann nimmt uns durch die aktuelle Landschaft, die Evaluierungen (React Native, nativ, Node.js, Rust, Electron) und die Schlussfolgerung: Flutter könnte – trotz neuer Lernkurven – den Weg zur gemeinsamen Codebasis ebnen.
Der Status quo bei remove.bg: Drei Apps, drei Technologien
Desktop-App: Electron Forge, Vue.js, Batch-Power
Die remove.bg Desktop-App ist auf massives Batch-Processing ausgelegt. Tausende Bilder per Drag-and-Drop verarbeiten, Hintergründe tauschen, mit Design-Templates arbeiten – das ist der Kernnutzen. Technisch basiert sie auf Web-Technologien:
- Electron Forge bündelt die Anwendung für macOS, Windows und Linux.
- Vue.js treibt die GUI, analog zur Website.
- Spezielle Features: Photoshop-Export (PSDs speichern) und Design-Vorlagen, die sich ebenfalls in Batch-Jobs integrieren lassen.
Android-App: Native Hülle, WebView im Kern
Die Android-App (im Play Store verfügbar) ist aktuell im Wesentlichen eine WebView mit „etwas Dekoration“. Sie ist nativ in Kotlin (Android Studio) entwickelt. Wichtig sind hier die Android-Sharing-Flows:
- Bilder lassen sich in die App teilen (Share to)
- und aus der App heraus weitergeben (Share from)
Was noch fehlt: eine iOS-Variante – und In-App-Purchases. Käufe laufen derzeit über das Web, anschließend melden sich Nutzer in der App an und sehen ihre Credits dort.
CLI: Go, Open Source, Homebrew
Die Kommandozeilen-Oberfläche ist Open Source (Code auf GitHub) und in Go implementiert – „eine fast vergessene Sprache“, wie Braumann scherzhaft anmerkt. Sie läuft auf allen gängigen Betriebssystemen und ist via Homebrew installierbar. Auch sie ist für Batch-Workloads prädestiniert.
Die Ziele: Einmal bauen, überall nutzen – Code, Pipelines, Tests und Assets teilen
Braumann fasst die Motivationslage in mehrere handfeste Ziele:
- Code-Wiederverwendung statt getrennten Codebasen in Go, JavaScript/TypeScript und Kotlin.
- Ein Build-Prozess statt „pro Plattform eine eigene Pipeline“.
- Gemeinsame Tests, die sich über alle Plattformen abbilden lassen.
- Geteilte Assets (Logos, Komponenten, Styles). Rebranding soll so einfach wie „ein Bild austauschen“ sein – und das Konsistenz über alle Apps hinweg sichern. Ein Hinweis: Genau das war in der Vergangenheit, etwa beim Kaleido-Rebranding, spürbar aufwändig.
- Fehler nur einmal fixen. Aktuell müssen Bugs oft dreifach behoben, getestet und ausgeliefert werden – häufig von unterschiedlichen Personen mit jeweiligen Technologie-Schwerpunkten.
Das Zielbild ist klar: eine gemeinsame Codebasis, eine gemeinsame Delivery- und Teststrecke, eine konsistente UI-Bausteinbibliothek – und die Möglichkeit, das Ökosystem sauber zu erweitern.
Cross-Platform vs. Multi-Platform: Der entscheidende Unterschied
Viele Firmen sprechen von Cross-Platform, meinen aber primär Mobile (iOS/Android) aus einer Codebasis. remove.bg benötigt mehr. Multi-Platform meint hier:
- Mobile (iOS + Android)
- Desktop (macOS, Windows, Linux)
- CLI (ohne GUI, aber Teil der selben Codewelt)
Dieser Unterschied ist zentral: Für remove.bg ist Desktop ein Erstklassen-Bürger (Batch-Prozesse, Photoshop-Export, Templates), und die CLI ist etablierter Bestandteil produktiver Workflows. Eine Strategie, die nur Mobile vereint, reicht deshalb nicht aus.
Evaluierte Optionen: Was wurde erwogen – und warum reicht es (allein) nicht?
Mobile: React Native (mit Expo) vs. nativ
Für Mobile gab es zwei Pfade:
- Ein React-Native-Prototyp mit Expo – laut Braumann „wirklich schön“ in der Entwicklung.
- Eine native Umsetzung, die den WebView-Anteil ablöst und Funktionen vollständig nativ integriert.
Beides funktionierte im Proof of Concept. Aber: React Native wäre wieder „eine separate Codebasis“, also keine Lösung für Desktop und CLI. Nativ bliebe ohnehin isoliert.
CLI: Node.js (pkg) und Rust als Alternative
Die CLI ließe sich mit Node.js umsetzen – inklusive Packaging. Der entstehende Binary ist zwar „recht groß“ (ca. 80 MB, inkl. Runtime), funktional aber machbar und naheliegend für JavaScript-Teams. Rust stand kurzzeitig im Raum, wurde aber als „sehr exotisch“ bewertet.
Desktop: Electron modernisieren
Auf Desktop-Seite lag „Weiter mit Electron, aber aktualisieren“ nahe. Electron bleibt Web-Technologie, die Team bereits kennt – jedoch löst das nicht das Core-Problem der unabhängigen Codebasen und Pipelines.
Fazit: Jede Option für sich ist umsetzbar. Doch keine vereint Mobile, Desktop und CLI in einer durchgängigen Architektur.
Flutter als Multi-Platform-Kandidat: Eine gemeinsame Sprache (Dart), ein Framework, viele Targets
Braumanns Vorschlag: Flutter. Der Stand im Talk: Version 2.5, von Google entwickelt und „kostenlos“. Entscheidend ist nicht nur Cross-Platform, sondern Multi-Platform:
- Mobile: Android und iOS
- Desktop: macOS, Windows, Linux – inklusive GUI
- CLI: Kein GUI nötig, aber via Dart-Libraries umsetzbar
- Bonus: Web-Target möglich
Die Vision: Eine gemeinsame Codebasis für Authentifizierung, API-Key-Validierung und natürlich die Kernaction „Hintergrund entfernen“ – und drumherum Plattform-Shells, die sich in UI und Integrationspunkten unterscheiden dürfen, aber denselben Kern nutzen.