{"apps":[{"externalURL":"https:\/\/translatekit.app","name":"TranslateKit: App Localization","tagline":"Die genaueste KI-Übersetzung für String Catalogs"},{"externalURL":"https:\/\/freemiumkit.app","name":"FreemiumKit: In-App Purchases","tagline":"Der einfachste Weg, deine Apps zu monetarisieren"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6477829138?pt=549314&ct=fline.dev&mt=8","name":"FocusBeats: Pomodoro + Music","tagline":"Tiefer Fokus mit bewährten Techniken"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6587583340?pt=549314&ct=fline.dev&mt=8","name":"Pleydia Organizer: Media Renamer","tagline":"Smartes Medien-Umbenennen für deine Sammlung"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6472669260?pt=549314&ct=fline.dev&mt=8","name":"CrossCraft: Custom Crosswords","tagline":"Erstelle thematische und personalisierte Kreuzworträtsel"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6478062053?pt=549314&ct=fline.dev&mt=8","name":"Posters: Discover Movies at Home","tagline":"Interaktive Filmposter an deine Wände pinnen"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6480134993?pt=549314&ct=fline.dev&mt=8","name":"FreelanceKit: Time Tracking","tagline":"Einfache und günstige Zeiterfassung"},{"externalURL":"https:\/\/apps.apple.com\/app\/apple-store\/id6479207869?pt=549314&ct=fline.dev&mt=8","name":"Guided Guest Mode","tagline":"Apple Vision mühelos vorführen"}],"articles":[{"category":"developer","section":"blog","slug":"tandemkit-pair-programming-for-ai-agents","summary":"Ich hab monatelang Claude und Codex parallel genutzt — Ergebnisse per Hand hin- und herkopiert, Erkenntnisse manuell weitergegeben. TandemKit automatisiert genau diesen Workflow.","tags":["claude-code","codex","ai-agents","productivity","open-source"],"title":"Pair Programming für Claude und Codex — ohne Copy-Paste","url":"\/de\/blog\/tandemkit-pair-programming-for-ai-agents\/"},{"category":"developer","section":"blog","slug":"why-im-not-using-xcode-26s-ai-chat-integration-and-what-could-change-my-mind","summary":"7 fehlende Features, die mich von Xcodes KI fernhalten, plus mein 5-Release-Fahrplan, damit Apple zu Claude Code und Cursor aufschließen kann.","tags":["ai","xcode","wwdc25","cursor","claude-code","ios-development","productivity"],"title":"Warum ich Xcode 26s KI-Chat-Integration nicht nutze (und was meine Meinung ändern könnte)","url":"\/de\/blog\/why-im-not-using-xcode-26s-ai-chat-integration-and-what-could-change-my-mind\/"},{"category":"developer","section":"blog","slug":"top-10-developer-tools-apple-introduced-at-wwdc25","summary":"Entdecke bahnbrechende Features wie Foundation Models für On-Device-KI, ChatGPT-Integration in Xcode, AlarmKit für echte Wecker-Apps und große Verbesserungen bei räumlichen visionOS-Erlebnissen.","tags":["wwdc25","wwdc","handyswiftui","swift-6","xcode","foundation-models","alarmkit","app-store-connect","visionos","wifi-aware"],"title":"Top 10 Developer-Tools, die Apple auf der WWDC25 vorgestellt hat","url":"\/de\/blog\/top-10-developer-tools-apple-introduced-at-wwdc25\/"},{"category":"developer","section":"blog","slug":"making-swift-error-messages-human-friendly-together","summary":"Swifts Fehlermeldungen können kryptisch sein, aber als Community können wir sie verständlicher machen. Hilf anderen (und deinem zukünftigen Ich), indem du bessere Erklärungen beisteuert.","tags":["error-handling","errorkit","community","open-source","swift","swift-package"],"title":"Swift-Fehlermeldungen menschenfreundlich gestalten – gemeinsam","url":"\/de\/blog\/making-swift-error-messages-human-friendly-together\/"},{"category":"developer","section":"blog","slug":"better-error-reporting-in-swift-apps-automatic-logs-analytics","summary":"Genervt von vagen Bugreports wie \"es geht nicht\"? In diesem Beitrag lernst du, wie du automatische Logs sammelst und reale Fehler in deinen Swift-Apps trackst – mit nur wenigen Zeilen Code.","tags":["error-handling","errorkit","analytics","user-feedback","logging","debugging","swift"],"title":"Besseres Error-Reporting in Swift-Apps: Automatische Logs + Analytics","url":"\/de\/blog\/better-error-reporting-in-swift-apps-automatic-logs-analytics\/"},{"category":"developer","section":"blog","slug":"swift-6-typed-throws-error-chains","summary":"Erfahre, wie du Typed Throws vom Kopfzerbrechen zur Superkraft machst – mit sauberer Fehlerbehandlung und mächtigen Debugging-Einblicken.","tags":["errorkit","swift-6","swift","error-handling","debugging","error-chains","typed-throws"],"title":"Die wahre Stärke von Swift 6's Typed Throws mit Fehlerketten entfesseln","url":"\/de\/blog\/swift-6-typed-throws-error-chains\/"},{"category":"developer","section":"blog","slug":"swift-error-handling-done-right-overcoming-the-objective-c-error-legacy","summary":"Genervt von kryptischen Swift-Fehlermeldungen wie '(YourError error 0)'? So behebst du das Problem ein für alle Mal – mit Klarheit und Eleganz.","tags":["developer-tools","error-handling","swift-6","swift","errorkit"],"title":"Swift Error Handling richtig gemacht: Das Objective-C-Erbe überwinden","url":"\/de\/blog\/swift-error-handling-done-right-overcoming-the-objective-c-error-legacy\/"},{"category":"developer","section":"blog","slug":"solving-swift-macro-trust-issues-in-xcode-cloud-builds","summary":"Swift Macros sind mächtig, können aber deine CI-Pipeline mit Vertrauensfehlern lahmlegen. Erfahre, wie du mit einem einfachen Post-Clone-Skript den Fehler \"Target must be enabled\" in Xcode Cloud ein für alle Mal löst.","tags":["xcode","xcode-cloud","swift","macros","app-store"],"title":"Swift-Macro-Vertrauensprobleme in Xcode Cloud Builds lösen","url":"\/de\/blog\/solving-swift-macro-trust-issues-in-xcode-cloud-builds\/"},{"category":"developer","section":"blog","slug":"sherlocked-to-success","summary":"Eine ehrliche Geschichte über Widerstandsfähigkeit in der Indie-App-Entwicklung – und warum der schlimmste Tag deines Entwicklerlebens manchmal dazu führen kann, etwas Besseres zu bauen.","tags":["translatekit","localization","string-catalog","ios-development","mac-app","xcode"],"title":"Wenn Gesherlocked-Werden zu etwas Besserem führt: Die TranslateKit-Reise","url":"\/de\/blog\/sherlocked-to-success\/"},{"category":"developer","section":"blog","slug":"swift-localization-in-2025-best-practices-you-couldnt-use-before","summary":"String Catalogs haben die Lokalisierung verbessert, aber auch neue Herausforderungen mit sich gebracht. Dieser Artikel zeigt, wie du mit modernen Best Practices und einem neuen Open-Source-Tool Struktur und Effizienz zurückgewinnst – und vielleicht die Art, wie du lokalisierst, grundlegend veränderst.","tags":["translatekit","open-source","swift","swift-package","macros","community","localization"],"title":"Swift-Lokalisierung in 2025: Best Practices, die vorher nicht möglich waren","url":"\/de\/blog\/swift-localization-in-2025-best-practices-you-couldnt-use-before\/"},{"category":"developer","section":"blog","slug":"handyswiftui-styles","summary":"Von aufmerksamkeitsstarken pulsierenden Buttons über vielseitige Label-Layouts bis hin zu plattformübergreifenden Checkboxen und vertikalen Formular-Styles – entdecke die SwiftUI-Styles, die deinen Apps den letzten Schliff und Konsistenz verleihen. Diese praxiserprobten Styles bilden die UI-Grundlage von 10 Produktiv-Apps und es werden mehr.","tags":["handyswiftui","swiftui","button-styles","label-styles","toggle-styles"],"title":"HandySwiftUI Styles: SwiftUIs Standard-Views aufwerten","url":"\/de\/blog\/handyswiftui-styles\/"},{"category":"developer","section":"blog","slug":"handyswiftui-extensions","summary":"Entdecke leistungsstarke SwiftUI-Extensions für saubere optionale Bindings, intuitive Farbverwaltung, XML-basierte Textformatierung und mehr. Diese praxiserprobten Hilfsfunktionen helfen dir, eleganteren SwiftUI-Code zu schreiben und Boilerplate in deinen Apps zu reduzieren.","tags":["handyswiftui","swiftui","helper","binding","colors","formatting","image-loading"],"title":"HandySwiftUI Extensions: SwiftUI-Entwicklung noch komfortabler","url":"\/de\/blog\/handyswiftui-extensions\/"},{"category":"developer","section":"blog","slug":"handyswiftui-view-modifiers","summary":"Von intelligentem Farbkontrast über vereinfachtes Error-Handling bis hin zu Lösch-Workflows und plattformspezifischem Styling – entdecke die SwiftUI-Modifier, die gängigen Boilerplate-Code eliminieren und dir helfen, wartbarere Apps zu entwickeln.","tags":["handyswiftui","swiftui","colors","error-handling","multi-platform","app-lifecycle","confirm-delete"],"title":"HandySwiftUI View Modifier: Dein SwiftUI-Code wird schlanker","url":"\/de\/blog\/handyswiftui-view-modifiers\/"},{"category":"developer","section":"blog","slug":"handyswiftui-new-types","summary":"Von plattformspezifischen Werten ohne #if-Abfragen über ausgefeilte Auswahl-Controls bis hin zu Async-State-Management – entdecke die unverzichtbaren SwiftUI-Typen, die mir geholfen haben, Apps schneller auszuliefern. Diese praxiserprobten Views und Typen füllen häufige Lücken in der SwiftUI-Entwicklung.","tags":["handyswiftui","swiftui","multi-platform","image-loading","multi-selector","searchable-grid-picker","asyncbutton","nsopenpanel"],"title":"HandySwiftUI – Neue Typen: Unverzichtbare Views und Typen für die SwiftUI-Entwicklung","url":"\/de\/blog\/handyswiftui-new-types\/"},{"category":"developer","section":"blog","slug":"test-your-swift-packages-linux-compatibility-on-mac","summary":"Du fragst dich, wie du die Linux-Kompatibilität deines Swift-Codes vom Mac aus testen kannst, ohne dich in Docker einarbeiten zu müssen? In diesem Artikel zeige ich dir einen einfachen Befehl, der den Prozess mühelos macht!","tags":["swift-package","swift-on-server","media-server","swift","linux"],"title":"Swift Packages auf Linux-Kompatibilität testen – direkt vom Mac","url":"\/de\/blog\/test-your-swift-packages-linux-compatibility-on-mac\/"},{"category":"developer","section":"blog","slug":"introducing-linkskit-simplifying-app-links-for-swift-developers","summary":"Keine Lust mehr, immer wieder die gleichen Links in deinen Apps einzubauen? LinksKit ist das Swift Package, das alles abdeckt – von rechtlichen Anforderungen bis Cross-Promotion – und dir Zeit spart und die Sichtbarkeit deiner Apps steigert.","tags":["open-source","linkskit","promotion","marketing","app-links","legal-links"],"title":"LinksKit: App-Links für Swift-Entwickler vereinfacht","url":"\/de\/blog\/introducing-linkskit-simplifying-app-links-for-swift-developers\/"},{"category":"developer","section":"blog","slug":"why-i-stopped-building-for-visionos-and-what-could-bring-me-back","summary":"Entdecke die Einschränkungen, die die Vision Pro daran hindern, ihr volles Potenzial zu entfalten. Dieser Artikel beleuchtet die fehlenden APIs, die nötig sind, um sie in eine echte Mixed-Reality-Plattform zu verwandeln, und diskutiert, was sich dafür ändern muss.","tags":["apple-vision-pro","visionos","posters","success","innovation"],"title":"Warum ich aufgehört habe, für visionOS zu entwickeln (und was mich zurückbringen könnte)","url":"\/de\/blog\/why-i-stopped-building-for-visionos-and-what-could-bring-me-back\/"},{"category":"developer","section":"blog","slug":"why-i-chose-freemiumkit-over-revenuecat-for-my-diabetes-management-app-guest-post","summary":"Hast du Schwierigkeiten mit der Integration von In-App-Abos? Erfahre, wie FreemiumKit meinen Entwicklungsprozess transformiert hat, mir half, Herausforderungen mit RevenueCat zu überwinden, und den Launch meiner App beschleunigt hat.","tags":["freemiumkit","in-app-purchases","revenuecat","diabetes","ios-app","ios-development","swiftui","guest-post"],"title":"Gastbeitrag: Warum ich FreemiumKit statt RevenueCat für meine App gewählt habe","url":"\/de\/blog\/why-i-chose-freemiumkit-over-revenuecat-for-my-diabetes-management-app-guest-post\/"},{"category":"apps","section":"blog","slug":"introducing-pleydia-organizer","summary":"Organisiere deine Medienbibliothek mühelos mit Pleydia Organizer – einer automatisierten App, die das Umbenennen von TV- und Filmdateien vereinfacht. Entdecke unübertroffene Geschwindigkeit, Genauigkeit und Komfort bei der Verwaltung deiner Mediensammlung.","tags":["pleydia","organizer","movies","tv-series","tv-shows","renamer","macos","mac-app","media-server","plex","kodi","jellyfin","infuse"],"title":"Vorstellung von Pleydia Organizer: Die ultimative native Mac-App zum Umbenennen von TV- & Filmdateien","url":"\/de\/blog\/introducing-pleydia-organizer\/"},{"category":"indie","section":"blog","slug":"reacting-to-pricing-backlash-lessons-learned","summary":"Meine Sicht darauf, wie man den richtigen Preis findet – und wie ich reagiert habe, als ein Nutzer meine App als „überteuert“ bezeichnet hat. Lerne aus meinen Fehlern und vermeide schlechte Bewertungen.","tags":["pricing","app-store","onboarding","translatekit"],"title":"Auf Preis-Gegenwind reagieren: Gelernte Lektionen","url":"\/de\/blog\/reacting-to-pricing-backlash-lessons-learned\/"},{"category":"apps","section":"blog","slug":"2-new-vision-pro-apps-guided-guest-mode-focusbeats-pomodoro-music","summary":"\"Guided Guest Mode\" wertet Apple Vision Pro-Demos auf – mit leicht verständlichen Anleitungen für eine immersive Einführung in Spatial Computing. \"FocusBeats: Pomodoro + Music\" kombiniert die produktivitätssteigernde Pomodoro-Technik mit thematischer Musik, um den Fokus während Arbeitssitzungen zu verbessern.","tags":["focusbeats","guided-guest-mode","apple-vision-pro","visionos","focus","timer","deep-work","music","showcase","demo","experience"],"title":"2 neue Vision Pro Apps: \"Guided Guest Mode\" & \"FocusBeats: Pomodoro + Music\"","url":"\/de\/blog\/2-new-vision-pro-apps-guided-guest-mode-focusbeats-pomodoro-music\/"},{"category":"apps","section":"blog","slug":"introducing-freelancekit","summary":"Günstige und native Zeiterfassung, die sich über iPhone, iPad, Mac und Vision synchronisiert. Sieh zu, wie sich dein verdientes Geld live aktualisiert. Export als CSV. Und vieles mehr!","tags":["freelancer","invoicing","billing","time-tracking","productivity","visionos","apple-vision-pro","freelancing","earnings","time-log"],"title":"Vorstellung von FreelanceKit: Zeiterfassung für alle Plattformen!","url":"\/de\/blog\/introducing-freelancekit\/"},{"category":"developer","section":"blog","slug":"my-top-10-wishes-for-wwdc24","summary":"Von einer SportsKit-API und einem .zoom-Modifier in SwiftUI, über verbessertes SwiftData und Source Control in Xcode, bis hin zu meinen größten Schmerzpunkten bei tvOS und visionOS – und vielem mehr! Eine Mischung aus langjährigen Wünschen und frischen Ideen.","tags":["wwdc","wwdc24","cloudkit","swiftui","zoom","swiftdata","windows","volumes","visionos","tvos","string-catalog","llm","ai","source-control","xcode","swiftui-previews"],"title":"Meine Top 10 Wünsche für die WWDC24","url":"\/de\/blog\/my-top-10-wishes-for-wwdc24\/"},{"category":"developer","section":"blog","slug":"introducing-handyswift-4","summary":"Wieder Zeit in Open Source investiert: Komplette Überarbeitung von HandySwift mit deutlich verbesserter Dokumentation und vielen praktischen Features aus meinen Apps. Lies weiter, um zu erfahren, welche Helfer ich am häufigsten nutze!","tags":["handyswift","swift","convenience","helper","swift-package","packages","library"],"title":"HandySwift 4.0 – Das große Update","url":"\/de\/blog\/introducing-handyswift-4\/"},{"category":"developer","section":"blog","slug":"migrating-my-swiftui-app-to-visionos","summary":"Wie ich meine SwiftUI-App CrossCraft für visionOS portiert habe – pünktlich zum Day-1-Release der Apple Vision Pro. Es hat effektiv nur etwa 2 Stunden gedauert. Dieser Artikel fasst meine wichtigsten Erkenntnisse zusammen.","tags":["swiftui","visionos","apple-vision-pro","migration","hover-effect","crosscraft"],"title":"Migration meiner SwiftUI-App nach VisionOS in 2 Stunden","url":"\/de\/blog\/migrating-my-swiftui-app-to-visionos\/"},{"category":"apps","section":"blog","slug":"introducing-posters-my-first-spatial-first-app-for-vision-pro","summary":"Hauche deinem Zuhause Leben ein mit automatisch aktualisierten & interaktiven Postern der neuesten angesagten Filme & Serien. Tippe auf ein Poster, um den Trailer anzusehen, herauszufinden wo es gerade gestreamt wird, oder ein Kino in deiner Nähe zu finden. Die Zukunft ist da!","tags":["posters","apple-vision-pro","visionos","spatial-first","movies","tv-series"],"title":"Vorstellung von \"Posters\" – Meine erste Spatial-first App für Vision Pro","url":"\/de\/blog\/introducing-posters-my-first-spatial-first-app-for-vision-pro\/"},{"category":"apps","section":"blog","slug":"huge-crosscraft-update-seven-major-features","summary":"Dieses Update bringt wichtige Verbesserungen wie das Speichern und Synchronisieren von Kreuzworträtseln, erweiterte Inhalte mit 30 neuen Themen und ein verbessertes Nutzungserlebnis mit Features wie Rätsel-Tipps, einer nativen Mac-App, einer nativen Vision-Pro-App und Teiloptionen für kompetitives Spielen.","tags":["crosscraft","game","mac-app","crossword","gamecenter"],"title":"RIESIGES CrossCraft 2.0 Update: Sieben große neue Features!","url":"\/de\/blog\/huge-crosscraft-update-seven-major-features\/"},{"category":"apps","section":"blog","slug":"8-steps-to-create-crosswords-with-chatgpt","summary":"Entdecke, wie einfach es ist, personalisierte Kreuzworträtsel zu jedem Thema mit der vollen Kraft von ChatGPT zu erstellen. Diese Anleitung führt dich in acht einfachen Schritten durch den Prozess – vom Generieren der Hinweis-Antwort-Paare bis zum Gestalten und Anpassen deines Rätsels mit der innovativen CrossCraft-App.","tags":["crosscraft","crossword","chatgpt","ai","dall-e","ios-app","mac-app"],"title":"In 8 einfachen Schritten Kreuzworträtsel zu jedem Thema mit ChatGPT erstellen","url":"\/de\/blog\/8-steps-to-create-crosswords-with-chatgpt\/"},{"category":"apps","section":"blog","slug":"introducing-crosscraft","summary":"Erstelle thematische und personalisierte Kreuzworträtsel mit Leichtigkeit und spiele sie selbst oder überrasche deine Liebsten mit einem maßgeschneiderten Geschenk. Perfekt auch, um spielerisch Vokabeln zu lernen oder deine Schüler oder Freunde mit einem unterhaltsamen Quiz herauszufordern.","tags":["crosscraft","learning","crossword","create","personalized","custom"],"title":"Vorstellung von CrossCraft: Individuelle Kreuzworträtsel","url":"\/de\/blog\/introducing-crosscraft\/"},{"category":"developer","section":"blog","slug":"freemiumkit-learnings-from-analyzing-mobile-paywalls","summary":"Erfahre, wie FreemiumKit, eine benutzerfreundliche Open-Source-Paywall-Bibliothek, das Erstellen erfolgreicher Paywalls vereinfacht und A\/B-Tests optimiert. Die hochgradig anpassbaren UI-Komponenten basieren auf meiner tiefgehenden Analyse gängiger Paywall-Designs.","tags":["freemiumkit","storekit","in-app-purchases","paywall","framework","open-source","pricing"],"title":"Erkenntnisse aus der Analyse von 20 erfolgreichen mobilen Paywalls","url":"\/de\/blog\/freemiumkit-learnings-from-analyzing-mobile-paywalls\/"},{"category":"developer","section":"blog","slug":"the-missing-string-catalogs-faq-for-xcode-15","summary":"Entdecke die bahnbrechenden Auswirkungen von Apples neuem Feature String Catalogs, das traditionelle Lokalisierungsdateien ersetzt und den Lokalisierungsprozess deutlich vereinfacht. Von automatischer Key-Extraktion bis zu Sicherheitsprüfungen – erfahre, warum Entwickler sich über dieses mächtige Tool in Xcode 15 freuen sollten.","tags":["localization","xcode","wwdc23","string-catalog","swift"],"title":"Die fehlende String-Catalogs-FAQ für Lokalisierung in Xcode 15","url":"\/de\/blog\/the-missing-string-catalogs-faq-for-xcode-15\/"},{"category":"developer","section":"blog","slug":"introducing-reviewkit","summary":"ReviewKit: Erhalte App-Bewertungen von zufriedenen Nutzern zum richtigen Zeitpunkt. Schluss mit aufdringlichen Aufforderungen – optimiere deinen Review-Prozess.","tags":["developer-tools","reviewkit","app-review","ios-development"],"title":"ReviewKit: Verbessere dein App-Store-Rating ganz einfach","url":"\/de\/blog\/introducing-reviewkit\/"},{"category":"developer","section":"blog","slug":"remafox-wwdc-sale","summary":"3 neue Features, die jedem Swift-Entwickler Zeit sparen, und reduzierte Preise für alle Abos zur WWDC-Woche – mit einem langfristigen Twist, den du nicht verpassen willst!","tags":["remafox","developer-tools","ios-development","localization","wwdc","wwdc23","xcode"],"title":"RemafoX Sale: 50 % Rabatt auf alle Abo-Pläne während der WWDC-Woche!","url":"\/de\/blog\/remafox-wwdc-sale\/"},{"category":"developer","section":"blog","slug":"taking-over-wwdc-notes-and-its-future","summary":"Das Open-Source-Projekt weiterentwickeln: Werde Teil der Community-Aktion und gestalte die Zukunft mit, wie wir WWDC-Sessions effektiv entdecken und daraus lernen!","tags":["wwdc","wwdc23","wwdc-notes","community","notes"],"title":"WWDC Notes übernehmen und ihre Zukunft gestalten","url":"\/de\/blog\/taking-over-wwdc-notes-and-its-future\/"},{"category":"developer","section":"blog","slug":"window-management-on-macos-with-swiftui-4","summary":"Erkenntnisse aus der Modernisierung der Fensterverwaltung meiner Mac-App nach dem Upgrade auf SwiftUI 4. Erklaerung von `\\.openWindow`, `.windowResizability` und mehr.","tags":["swiftui","macos","window-management","swift","the-composable-architecture-tca"],"title":"Fensterverwaltung mit SwiftUI 4","url":"\/de\/blog\/window-management-on-macos-with-swiftui-4\/"},{"category":"developer","section":"blog","slug":"my-top-5-wishes-for-wwdc-2023","summary":"Die WWDC ist nur noch wenige Wochen entfernt, also wird es Zeit, meine Wunschliste zu aktualisieren. Ein Wunsch wurde letztes Jahr erfüllt – wie viele werden es 2023?","tags":["wwdc","wwdc23","xcode","charts","secrets","live-stream"],"title":"Meine Top 5 Wünsche für die WWDC 2023","url":"\/de\/blog\/my-top-5-wishes-for-wwdc-2023\/"},{"category":"developer","section":"blog","slug":"preparing-for-swift-6","summary":"Wie du den Swift-6-Modus fuer deine Xcode-Projekte und SwiftPM-Module schon heute aktivieren kannst. Und wie die Migrationserfahrung so ist.","tags":["xcode","swift-6","swift","swiftpm","migration","remafox"],"title":"Meine App fuer Swift 6 vorbereiten","url":"\/de\/blog\/preparing-for-swift-6\/"},{"category":"developer","section":"blog","slug":"binding-equatable-vs-equatablebinding","summary":"Wie ich einen subtilen Bug in SwiftUI-Pickern in meiner App behoben habe, indem ich einen Property Wrapper statt einer Equatable-Konformitaet fuer Binding verwendet habe.","tags":["swiftui","the-composable-architecture-tca","remafox","property-wrappers"],"title":"Binding: Equatable vs EquatableBinding","url":"\/de\/blog\/binding-equatable-vs-equatablebinding\/"},{"category":"developer","section":"blog","slug":"migrating-to-tca-1-0","summary":"Meine Erkenntnisse und meine Code-Struktur nach der Migration meiner App auf die grundlegend modernisierten APIs von TCA 1.0.","tags":["ios-development","the-composable-architecture-tca","swift","swiftui","app-architecture","migration","remafox"],"title":"Migration auf The Composable Architecture (TCA) 1.0","url":"\/de\/blog\/migrating-to-tca-1-0\/"},{"category":"developer","section":"blog","slug":"organizing-my-swiftpm-modules","summary":"Wie du die Swift-Module deiner Apps für Klarheit und Komfort organisieren kannst – mithilfe eines versteckten (inoffiziellen) Swift-Features. Eine praktische Lösung für kleine bis mittelgroße Apps.","tags":["swiftpm","modularization","swift","remafox"],"title":"2.000 Imports: Meine SwiftPM-Module organisieren","url":"\/de\/blog\/organizing-my-swiftpm-modules\/"},{"category":"developer","section":"blog","slug":"hardware-requirements-for-ios-development","summary":"Von der günstigsten brauchbaren Option bis zum besten Preis-Leistungs-Mac für iOS-Entwickler.","tags":["hardware","getting-started","beginner"],"title":"Hardware-Anforderungen für iOS-Entwicklung (Mai 2025)","url":"\/de\/blog\/hardware-requirements-for-ios-development\/"},{"category":"developer","section":"blog","slug":"introducing-remafox-easy-app-localization","summary":"Sag hallo zu RemafoX, der App mit der Mission, das Entwicklerleben zu vereinfachen – mit neuen Workflows für die Lokalisierung bei der Arbeit mit Xcode.","tags":["remafox","developer-tools","localization"],"title":"Vorstellung von RemafoX: Einfache App-Lokalisierung","url":"\/de\/blog\/introducing-remafox-easy-app-localization\/"},{"category":"developer","section":"blog","slug":"making-the-most-of-wwdc-2022","summary":"Wie du beide Keynotes gemeinsam mit anderen Entwicklern (remote) genießen und deine Lernerfahrungen während der Woche maximieren kannst – wenn du die Zeit investieren kannst.","tags":["wwdc","wwdc22","community","learning"],"title":"Das Beste aus der WWDC 2022 herausholen","url":"\/de\/blog\/making-the-most-of-wwdc-2022\/"},{"category":"indie","section":"blog","slug":"streaming-open-source-development-on-twitch-part-2","summary":"Mein Software-Setup und genutzte Drittanbieter-Dienste.","tags":["twitch","streaming","software","services","open-source"],"title":"Open-Source-Entwicklung auf Twitch streamen – Teil 2","url":"\/de\/blog\/streaming-open-source-development-on-twitch-part-2\/"},{"category":"developer","section":"blog","slug":"my-top-3-wishes-for-wwdc-2022","summary":"Apple hat die WWDC-Woche für den 6.–10. Juni angekündigt – schauen wir uns mal an, welche neuen Frameworks, APIs und Tools ich mir erhoffe und wie ihre Nutzung aussehen könnte, inklusive Beispielen.","tags":["wwdc","wwdc22","xcode","modularization","persistence","swift"],"title":"Meine Top 3 Wünsche für die WWDC 2022","url":"\/de\/blog\/my-top-3-wishes-for-wwdc-2022\/"},{"category":"indie","section":"blog","slug":"streaming-open-source-development-on-twitch-part-1","summary":"Meine Streaming-Motivation und mein Hardware-Setup mit Bewertungen.","tags":["twitch","open-source","streaming","hardware"],"title":"Open-Source-Entwicklung auf Twitch streamen – Teil 1","url":"\/de\/blog\/streaming-open-source-development-on-twitch-part-1\/"},{"category":"developer","section":"blog","slug":"swiftpm-coredata-failing-swiftui-previews-here-are-5-tips-to-fix","summary":"Xcode-Bugs beheben, die dazu führen, dass SwiftUI Previews in Apps fehlschlagen, die mit SwiftPM modularisiert sind und CoreData verwenden.","tags":["swiftpm","coredata","swiftui","swiftui-previews"],"title":"SwiftPM + CoreData: SwiftUI Previews funktionieren nicht? Hier sind 5 Tipps zur Lösung","url":"\/de\/blog\/swiftpm-coredata-failing-swiftui-previews-here-are-5-tips-to-fix\/"},{"category":"developer","section":"blog","slug":"multi-selector-in-swiftui","summary":"Eine fehlende SwiftUI-Komponente fuer Prototyping-Zwecke ergaenzen.","tags":["swiftui","multi-selector","swift","ios-development"],"title":"Multi Selector in SwiftUI","url":"\/de\/blog\/multi-selector-in-swiftui\/"},{"category":"developer","section":"blog","slug":"hiding-secrets-from-git-in-swiftpm","summary":"Eine Schritt-für-Schritt-Anleitung, wie du verhinderst, dass deine Secrets für Drittanbieter-Dienste in Git landen, wenn du Apps verwendest, die mit SwiftPM modularisiert sind.","tags":["swift","swiftpm","secrets","git"],"title":"Secrets vor Git verbergen in SwiftPM","url":"\/de\/blog\/hiding-secrets-from-git-in-swiftpm\/"},{"category":"indie","section":"blog","slug":"laser-focus-priority-strategy","summary":"Eine einfache, aber effektive Priorisierungstechnik, die dir helfen kann, den Umfang deiner App zu verschlanken und dir mehr Sicherheit zu geben – mit verschiedenen Stufen, die sich auf Alpha, Beta & Release abbilden lassen.","tags":["prioritization","task-management"],"title":"Laser-Focus-Priorisierungsstrategie","url":"\/de\/blog\/laser-focus-priority-strategy\/"},{"category":"developer","section":"blog","slug":"git-merge-vs-rebase","summary":"Eine FAQ, die erklärt, wann man was verwenden sollte – und warum.","tags":["git","version-control"],"title":"Git Merge vs Rebase","url":"\/de\/blog\/git-merge-vs-rebase\/"},{"category":"developer","section":"blog","slug":"primer-on-regular-expressions","summary":"In diesem Beitrag versuche ich, dir einen praktischen Überblick über reguläre Ausdrücke zu geben – was sie sind, wofür man sie verwenden kann und wie du schnell damit loslegen kannst.","tags":["regular-expressions","ruby"],"title":"Einführung in reguläre Ausdrücke","url":"\/de\/blog\/primer-on-regular-expressions\/"},{"category":"","section":"snippets","slug":"vapor-maximum-active-connections","summary":"Ein nicht offensichtliches Vapor-Konfigurationsdetail, das intermittierende 500-Fehler verursachen kann, wenn die tatsächliche Verbindungsanzahl das übersteigt, was du konfiguriert zu haben glaubst.","tags":["swift","vapor","server-side-swift"],"title":"Vapors maximumActiveConnections gilt pro Event Loop, nicht pro Worker","url":"\/de\/snippets\/vapor-maximum-active-connections\/"},{"category":"","section":"snippets","slug":"apple-implements-feedback-requests","summary":"Eine persönliche Erfahrung, wie ein Feedback Assistant-Bericht in Xcode 26 umgesetzt wurde, und Tipps zum Schreiben effektiver Feedback-Berichte.","tags":["xcode","ios-dev","productivity"],"title":"Apple setzt Feedback-Anfragen um – Bug-Reports einreichen lohnt sich","url":"\/de\/snippets\/apple-implements-feedback-requests\/"},{"category":"","section":"snippets","slug":"labelstyle-icononly-swiftui","summary":"Das richtige SwiftUI-Pattern für Icon-only Buttons, das die Barrierefreiheit bewahrt, ohne die Lesbarkeit zu opfern.","tags":["swift","swiftui","accessibility","ios-dev"],"title":".labelStyle(.iconOnly) statt Image in Button verschachteln","url":"\/de\/snippets\/labelstyle-icononly-swiftui\/"},{"category":"","section":"snippets","slug":"editorconfig-swiftpm-package","summary":"Warum jedes Swift Package eine .editorconfig-Datei beinhalten sollte, um konsistente Einrückung bei allen Mitwirkenden durchzusetzen.","tags":["swift","swiftpm","open-source","productivity"],"title":"EditorConfig für jedes SwiftPM-Paket","url":"\/de\/snippets\/editorconfig-swiftpm-package\/"},{"category":"","section":"snippets","slug":"push-notifications-app-store-reviews","summary":"Wie man Push-Benachrichtigungen für neue App Store Reviews in der App Store Connect App aktiviert, um schnell auf Nutzerfeedback reagieren zu können.","tags":["ios-dev","productivity"],"title":"Push-Benachrichtigungen für App Store Reviews","url":"\/de\/snippets\/push-notifications-app-store-reviews\/"},{"category":"","section":"snippets","slug":"docc-videos-tabs-documentation","summary":"Zwei weniger bekannte DocC-Features, die deine Dokumentation interaktiver machen: eingebettete Videos und Navigation mit Tabs.","tags":["swift","docc","wwdc24","open-source"],"title":"Videos und Tabs in DocC-Dokumentationen","url":"\/de\/snippets\/docc-videos-tabs-documentation\/"},{"category":"","section":"snippets","slug":"convert-paid-apps-freemium","summary":"Wie man StoreKits AppTransaction API nutzt, um von kostenpflichtig zu Freemium zu wechseln und dabei den Zugang für Nutzer zu bewahren, die bereits bezahlt haben.","tags":["swift","storekit","ios-dev"],"title":"Kostenpflichtige Apps auf Freemium umstellen, ohne bestehende Nutzer zu benachteiligen","url":"\/de\/snippets\/convert-paid-apps-freemium\/"},{"category":"","section":"snippets","slug":"xcode-quick-help-sidebar","summary":"Der Quick Help Inspector in Xcodes Sidebar aktualisiert die Dokumentation automatisch bei Cursorbewegungen, ohne dass man für Docs Cmd-klicken muss.","tags":["xcode","productivity"],"title":"Xcode Quick Help in der Seitenleiste","url":"\/de\/snippets\/xcode-quick-help-sidebar\/"},{"category":"","section":"snippets","slug":"asyncbutton-swiftui-progress-status","summary":"Eine wiederverwendbare Button-Komponente, die asynchrone Aktionen mit automatischem Ladezustand, Deaktivierung und Erfolgs-\/Fehleranzeige behandelt.","tags":["swift","swiftui","concurrency"],"title":"Einen AsyncButton in SwiftUI bauen","url":"\/de\/snippets\/asyncbutton-swiftui-progress-status\/"},{"category":"","section":"snippets","slug":"imagerenderer-uikit-backed-views","summary":"SwiftUI's ImageRenderer versagt stillschweigend bei Views, die unter der Haube UIKit oder AppKit verwenden, wie List und ScrollView.","tags":["swift","swiftui","ios-dev"],"title":"ImageRenderer kann UIKit-basierte Views nicht exportieren","url":"\/de\/snippets\/imagerenderer-uikit-backed-views\/"},{"category":"","section":"snippets","slug":"combine-swift-imports-wrapper-module","summary":"Erstelle einen einzelnen Import, der alle häufig genutzten Frameworks mit @_exported import re-exportiert.","tags":["swift","swiftpm","productivity"],"title":"Swift-Imports mit einem Wrapper-Modul zusammenfassen","url":"\/de\/snippets\/combine-swift-imports-wrapper-module\/"},{"category":"","section":"snippets","slug":"swiftui-navigation-present-data","summary":"Den Denkwechsel von imperativer Navigation in UIKit zu datengetriebener Navigation in SwiftUI verstehen.","tags":["swift","swiftui","navigation","ios-dev"],"title":"SwiftUI Navigation: Daten präsentieren, nicht Views","url":"\/de\/snippets\/swiftui-navigation-present-data\/"},{"category":"","section":"snippets","slug":"asyncimage-resizable-modifier","summary":"SwiftUI's AsyncImage erlaubt den .resizable()-Modifier nicht, was einen phasenbasierten Workaround erfordert.","tags":["swift","swiftui","ios-dev"],"title":"AsyncImage unterstützt .resizable() nicht","url":"\/de\/snippets\/asyncimage-resizable-modifier\/"},{"category":"","section":"snippets","slug":"multi-line-code-ctrl-m-xcode-15","summary":"Xcode 15 führt ein Ctrl+M-Tastenkürzel ein, um Funktionsaufrufe und Parameter auf mehrere Zeilen zu verteilen.","tags":["xcode","productivity"],"title":"Mehrzeiliger Code mit Ctrl+M in Xcode 15","url":"\/de\/snippets\/multi-line-code-ctrl-m-xcode-15\/"},{"category":"","section":"snippets","slug":"search-apple-documentation-shift-cmd-o","summary":"Nutze dasselbe Open Quickly-Tastenkürzel, um Apples Entwicklerdokumentation direkt im Web zu durchsuchen.","tags":["xcode","docc","wwdc23","productivity"],"title":"Apple-Dokumentation mit Shift+Cmd+O durchsuchen","url":"\/de\/snippets\/search-apple-documentation-shift-cmd-o\/"},{"category":"","section":"snippets","slug":"xcode-15-type-safe-asset-catalogs","summary":"Xcode 15 generiert typsichere Swift-Accessoren für Bilder und Farben in Asset Catalogs und ersetzt damit die Notwendigkeit für SwiftGen.","tags":["xcode","swift","wwdc23","ios-dev"],"title":"Xcode 15 bringt typsicheren Zugriff auf Asset Catalogs","url":"\/de\/snippets\/xcode-15-type-safe-asset-catalogs\/"},{"category":"","section":"snippets","slug":"xcode-15-string-catalogs","summary":"Xcode 15 führt String Catalogs ein, einen visuellen Editor zur Verwaltung lokalisierter Strings, der die alten .strings- und .stringsdict-Dateien ersetzt.","tags":["xcode","wwdc23","ios-dev"],"title":"Xcode 15 String Catalogs ersetzen .strings und .stringsdict","url":"\/de\/snippets\/xcode-15-string-catalogs\/"},{"category":"","section":"snippets","slug":"xcode-15-format-parameters-multiple-lines","summary":"Xcode 15 fügt eine eingebaute Aktion hinzu, um lange Funktionsparameterlisten von einer einzelnen Zeile auf mehrere Zeilen umzuformatieren.","tags":["xcode","wwdc23","productivity"],"title":"Xcode 15: Parameter auf mehrere Zeilen aufteilen","url":"\/de\/snippets\/xcode-15-format-parameters-multiple-lines\/"},{"category":"","section":"snippets","slug":"preview-loading-states-swiftui","summary":"Ein Preview-only Helper, der Netzwerkverzögerungen simuliert, damit du Ladezustände in SwiftUI Previews sehen kannst.","tags":["swift","swiftui","xcode","ios-dev"],"title":"Ladezustände in SwiftUI previews ohne Änderungen am Produktionscode","url":"\/de\/snippets\/preview-loading-states-swiftui\/"},{"category":"","section":"snippets","slug":"speed-up-xcode-disable-debug-executable","summary":"Eine versteckte Xcode-Scheme-Einstellung, die die App-Startzeiten während der Entwicklung deutlich verkürzen kann.","tags":["xcode","productivity","ios-dev"],"title":"Xcode-Starts durch Deaktivieren des Debug-Executables beschleunigen","url":"\/de\/snippets\/speed-up-xcode-disable-debug-executable\/"},{"category":"","section":"snippets","slug":"xcode-snippets-developer-warnings","summary":"Xcode Code Snippets mit #warning nutzen, um umsetzbare Erinnerungen in deiner Codebasis zu hinterlassen.","tags":["swift","xcode","productivity"],"title":"Xcode Code Snippets für Entwicklerwarnungen","url":"\/de\/snippets\/xcode-snippets-developer-warnings\/"},{"category":"","section":"snippets","slug":"swift-evolution-proposal-summaries-github","summary":"Ein einfacher URL-Trick, um zusammengefasste Versionen von Swift Evolution Proposals auf GitHub zu lesen.","tags":["swift","swift-evolution"],"title":"Schneller Zugriff auf Swift-Evolution-Proposal-Zusammenfassungen auf GitHub","url":"\/de\/snippets\/swift-evolution-proposal-summaries-github\/"},{"category":"","section":"snippets","slug":"pulsating-button-animation-swiftui","summary":"Wie man einen pulsierenden Button-Effekt in SwiftUI erstellt, um Nutzer beim Onboarding zu leiten.","tags":["swift","swiftui","animation","onboarding"],"title":"Pulsating Button Animation in SwiftUI","url":"\/de\/snippets\/pulsating-button-animation-swiftui\/"}],"tags":{"accessibility":"Accessibility","ai":"AI","ai-agents":"AI Agents","alarmkit":"AlarmKit","analytics":"Analytics","animation":"Animation","app-architecture":"App Architecture","app-lifecycle":"App Lifecycle","app-links":"App Links","app-review":"App Review","app-store":"App Store","app-store-connect":"App Store Connect","apple-vision-pro":"Apple Vision","asyncbutton":"AsyncButton","beginner":"Beginner","billing":"Billing","binding":"Binding","button-styles":"Button Styles","charts":"Charts","chatgpt":"ChatGPT","claude-code":"Claude Code","cloudkit":"CloudKit","codex":"Codex","colors":"Colors","community":"Community","concurrency":"Concurrency","confirm-delete":"Confirm Delete","convenience":"Convenience","coredata":"Core Data","create":"Create","crosscraft":"CrossCraft","crossword":"Crossword","cursor":"Cursor","custom":"Custom","dall-e":"DALL-E","debugging":"Debugging","deep-work":"Deep Work","demo":"Demo","developer-tools":"Developer Tools","diabetes":"Diabetes","docc":"DocC","earnings":"Earnings","error-chains":"Error Chains","error-handling":"Error Handling","errorkit":"ErrorKit","experience":"Experience","focus":"Focus","focusbeats":"FocusBeats","formatting":"Formatting","foundation-models":"Foundation Models","framework":"Framework","freelancer":"Freelancer","freelancing":"Freelancing","freemiumkit":"FreemiumKit","game":"Game","gamecenter":"Game Center","getting-started":"Getting Started","git":"Git","guest-post":"Guest Post","guided-guest-mode":"Guided Guest Mode","handyswift":"HandySwift","handyswiftui":"HandySwiftUI","hardware":"Hardware","helper":"Helper","hover-effect":"Hover Effect","image-loading":"Image Loading","in-app-purchases":"In-App Purchases","infuse":"Infuse","innovation":"Innovation","invoicing":"Invoicing","ios-app":"iOS App","ios-dev":"iOS Dev","ios-development":"iOS Development","jellyfin":"Jellyfin","kodi":"Kodi","label-styles":"Label Styles","learning":"Learning","legal-links":"Legal Links","library":"Library","linkskit":"LinksKit","linux":"Linux","live-stream":"Live Stream","llm":"LLM","localization":"Localization","logging":"Logging","mac-app":"Mac App","macos":"macOS","macros":"Macros","marketing":"Marketing","media-server":"Media Server","migration":"Migration","modularization":"Modularization","movies":"Movies","multi-platform":"Multi-Platform","multi-selector":"Multi-Selector","music":"Music","navigation":"Navigation","notes":"Notes","nsopenpanel":"NSOpenPanel","onboarding":"Onboarding","open-source":"Open Source","organizer":"Organizer","packages":"Packages","paywall":"Paywall","persistence":"Persistence","personalized":"Personalized","plex":"Plex","pleydia":"Pleydia","posters":"Posters","pricing":"Pricing","prioritization":"Prioritization","productivity":"Productivity","promotion":"Promotion","property-wrappers":"Property Wrappers","regular-expressions":"Regular Expressions","remafox":"RemaFox","renamer":"Renamer","revenuecat":"RevenueCat","reviewkit":"ReviewKit","ruby":"Ruby","searchable-grid-picker":"Searchable Grid Picker","secrets":"Secrets","server-side-swift":"Server-Side Swift","services":"Services","showcase":"Showcase","software":"Software","source-control":"Source Control","spatial-first":"Spatial-First","storekit":"StoreKit","streaming":"Streaming","string-catalog":"String Catalog","success":"Success","swift":"Swift","swift-6":"Swift 6","swift-evolution":"Swift Evolution","swift-on-server":"Swift on Server","swift-package":"Swift Package","swiftdata":"SwiftData","swiftpm":"SwiftPM","swiftui":"SwiftUI","swiftui-previews":"SwiftUI Previews","task-management":"Task Management","the-composable-architecture-tca":"The Composable Architecture (TCA)","time-log":"Time Log","time-tracking":"Time Tracking","timer":"Timer","toggle-styles":"Toggle Styles","translatekit":"TranslateKit","tv-series":"TV Series","tv-shows":"TV Shows","tvos":"tvOS","twitch":"Twitch","typed-throws":"Typed Throws","user-feedback":"User Feedback","vapor":"Vapor","version-control":"Version Control","visionos":"visionOS","volumes":"Volumes","wifi-aware":"WiFi Aware","window-management":"Window Management","windows":"Windows","wwdc":"WWDC","wwdc-notes":"WWDC Notes","wwdc22":"WWDC22","wwdc23":"WWDC23","wwdc24":"WWDC24","wwdc25":"WWDC25","xcode":"Xcode","xcode-cloud":"Xcode Cloud","zoom":"Zoom"}}