56,966 blogs · [ { "id": "01a08778-9d0d-7361-88ad-264e5f4edf48", "title": "My Top 5 AI Wishes for WWDC26", "url": "https://fline.dev/blog/my-top-5-ai-wishes-for-wwdc26/", "published_at": "2026-04-25T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e5f746fa9", "title": "Pair Programming for Claude and Codex, Without the Copy-Paste", "url": "https://fline.dev/blog/tandemkit-pair-programming-for-ai-agents/", "published_at": "2026-04-14T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e5fe3f13b", "title": "Vapor's maximumActiveConnections Is Per Event Loop, Not Per Worker", "url": "https://fline.dev/snippets/vapor-maximum-active-connections/", "published_at": "2025-12-29T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e60af5b44", "title": "Why I'm Not Using Xcode 26's AI Chat Integration (And What Could Change My Mind)", "url": "https://fline.dev/blog/why-im-not-using-xcode-26s-ai-chat-integration-and-what-could-change-my-mind/", "published_at": "2025-08-17T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e615998a0", "title": "Top 10 Developer Tools Apple introduced at WWDC25", "url": "https://fline.dev/blog/top-10-developer-tools-apple-introduced-at-wwdc25/", "published_at": "2025-06-23T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e61fe432e", "title": "Apple Implements Feedback Requests -- Filing Reports Works", "url": "https://fline.dev/snippets/apple-implements-feedback-requests/", "published_at": "2025-06-10T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e624dd0ab", "title": "Making Swift Error Messages Human-Friendly—Together", "url": "https://fline.dev/blog/making-swift-error-messages-human-friendly-together/", "published_at": "2025-05-12T00:00:00+00:00" }, { "id": "01a08778-9d0d-7361-88ad-264e62be9a35", "title": "Better Error Reporting in Swift Apps: Automatic Logs + Analytics", "url": "https://fline.dev/blog/better-error-reporting-in-swift-apps-automatic-logs-analytics/", "published_at": "2025-05-05T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d6ee97af", "title": "Unlocking the Real Power of Swift 6's Typed Throws with Error Chains", "url": "https://fline.dev/blog/swift-6-typed-throws-error-chains/", "published_at": "2025-04-28T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d7dc825a", "title": "Swift Error Handling Done Right: Overcoming the Objective-C Error Legacy", "url": "https://fline.dev/blog/swift-error-handling-done-right-overcoming-the-objective-c-error-legacy/", "published_at": "2025-04-21T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d8b700ae", "title": "Solving Swift Macro Trust Issues in Xcode Cloud Builds", "url": "https://fline.dev/blog/solving-swift-macro-trust-issues-in-xcode-cloud-builds/", "published_at": "2025-03-20T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d8c7a4dd", "title": "When Getting Sherlocked Leads to Something Better: The TranslateKit Journey", "url": "https://fline.dev/blog/sherlocked-to-success/", "published_at": "2025-02-19T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d95784e1", "title": "Swift Localization in 2025: Best Practices You Couldn't Use Before", "url": "https://fline.dev/blog/swift-localization-in-2025-best-practices-you-couldnt-use-before/", "published_at": "2025-02-12T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52d988973b", "title": "Use .labelStyle(.iconOnly) Instead of Nesting Image in Button", "url": "https://fline.dev/snippets/labelstyle-icononly-swiftui/", "published_at": "2025-01-12T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52da16ddaa", "title": "EditorConfig for Every SwiftPM Package", "url": "https://fline.dev/snippets/editorconfig-swiftpm-package/", "published_at": "2024-12-03T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52da64c177", "title": "Push Notifications for App Store Reviews", "url": "https://fline.dev/snippets/push-notifications-app-store-reviews/", "published_at": "2024-11-28T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52db14bafc", "title": "HandySwiftUI Styles: Enhancing SwiftUI's Standard Views", "url": "https://fline.dev/blog/handyswiftui-styles/", "published_at": "2024-11-07T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dbd05f0a", "title": "HandySwiftUI Extensions: Making SwiftUI Development More Convenient", "url": "https://fline.dev/blog/handyswiftui-extensions/", "published_at": "2024-11-04T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dc3ed0c5", "title": "HandySwiftUI View Modifiers: Streamlining Your SwiftUI Code", "url": "https://fline.dev/blog/handyswiftui-view-modifiers/", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dc6f215a", "title": "HandySwiftUI New Types: Essential Views and Types for SwiftUI Development", "url": "https://fline.dev/blog/handyswiftui-new-types/", "published_at": "2024-10-30T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dc83f319", "title": "Test your Swift Packages Linux Compatibility on Mac", "url": "https://fline.dev/blog/test-your-swift-packages-linux-compatibility-on-mac/", "published_at": "2024-10-22T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dce816b5", "title": "Introducing LinksKit: Simplifying App Links for Swift Developers", "url": "https://fline.dev/blog/introducing-linkskit-simplifying-app-links-for-swift-developers/", "published_at": "2024-10-09T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dd41272a", "title": "Why I Stopped Building for visionOS (And What Could Bring Me Back)", "url": "https://fline.dev/blog/why-i-stopped-building-for-visionos-and-what-could-bring-me-back/", "published_at": "2024-10-07T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52dd7eac50", "title": "Guest Post: Why I Chose FreemiumKit Over RevenueCat for My App", "url": "https://fline.dev/blog/why-i-chose-freemiumkit-over-revenuecat-for-my-diabetes-management-app-guest-post/", "published_at": "2024-08-24T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52de25e3ab", "title": "Introducing Pleydia Organizer: The Ultimate Native Mac App for Renaming TV & Movie Files", "url": "https://fline.dev/blog/introducing-pleydia-organizer/", "published_at": "2024-08-05T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52df0a2579", "title": "Videos and Tabs in DocC Documentation", "url": "https://fline.dev/snippets/docc-videos-tabs-documentation/", "published_at": "2024-06-20T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52df95a836", "title": "Reacting to Pricing Backlash: Lessons Learned", "url": "https://fline.dev/blog/reacting-to-pricing-backlash-lessons-learned/", "published_at": "2024-04-16T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e03d9635", "title": "2 New Vision Pro Apps: \"Guided Guest Mode\" & \"FocusBeats: Pomodoro + Music\"", "url": "https://fline.dev/blog/2-new-vision-pro-apps-guided-guest-mode-focusbeats-pomodoro-music/", "published_at": "2024-04-15T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e0c5e194", "title": "Introducing FreelanceKit: Time Tracking for all Platforms!", "url": "https://fline.dev/blog/introducing-freelancekit/", "published_at": "2024-04-09T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e11c1dfa", "title": "My Top 10 Wishes for WWDC24", "url": "https://fline.dev/blog/my-top-10-wishes-for-wwdc24/", "published_at": "2024-04-05T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e1546559", "title": "Convert Paid Apps to Freemium Without Affecting Existing Users", "url": "https://fline.dev/snippets/convert-paid-apps-freemium/", "published_at": "2024-03-28T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e202c3d0", "title": "Xcode Quick Help in the Sidebar", "url": "https://fline.dev/snippets/xcode-quick-help-sidebar/", "published_at": "2024-03-25T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e2c7b8f8", "title": "Introducing HandySwift 4.0", "url": "https://fline.dev/blog/introducing-handyswift-4/", "published_at": "2024-03-24T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e3ab8da4", "title": "Migrating my SwiftUI App to VisionOS in 2 Hours", "url": "https://fline.dev/blog/migrating-my-swiftui-app-to-visionos/", "published_at": "2024-03-02T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e3dc679c", "title": "Introducing \"Posters\" – My first Spatial-first app for Vision Pro", "url": "https://fline.dev/blog/introducing-posters-my-first-spatial-first-app-for-vision-pro/", "published_at": "2024-02-23T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e40251f5", "title": "HUGE CrossCraft 2.0 Update: Seven Major New Features!", "url": "https://fline.dev/blog/huge-crosscraft-update-seven-major-features/", "published_at": "2024-01-30T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e442bb48", "title": "8 Simple Steps to Create Crosswords on Any Topic in Minutes Using ChatGPT", "url": "https://fline.dev/blog/8-steps-to-create-crosswords-with-chatgpt/", "published_at": "2023-12-18T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e49993c6", "title": "Introducing CrossCraft: Custom Crosswords", "url": "https://fline.dev/blog/introducing-crosscraft/", "published_at": "2023-12-15T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e53361f8", "title": "Building an AsyncButton in SwiftUI", "url": "https://fline.dev/snippets/asyncbutton-swiftui-progress-status/", "published_at": "2023-09-27T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e58ee3f6", "title": "ImageRenderer Cannot Export UIKit-Backed Views", "url": "https://fline.dev/snippets/imagerenderer-uikit-backed-views/", "published_at": "2023-09-19T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e62ac646", "title": "Combine Swift Imports with a Wrapper Module", "url": "https://fline.dev/snippets/combine-swift-imports-wrapper-module/", "published_at": "2023-09-13T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e631c397", "title": "Learnings from Analyzing 20 Successful Mobile Paywalls", "url": "https://fline.dev/blog/freemiumkit-learnings-from-analyzing-mobile-paywalls/", "published_at": "2023-09-10T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e6456568", "title": "SwiftUI Navigation: Present Data, Not Views", "url": "https://fline.dev/snippets/swiftui-navigation-present-data/", "published_at": "2023-07-27T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e6d67bcd", "title": "AsyncImage Does Not Support .resizable()", "url": "https://fline.dev/snippets/asyncimage-resizable-modifier/", "published_at": "2023-07-26T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e7a78af0", "title": "Multi-Line Code with Ctrl+M in Xcode 15", "url": "https://fline.dev/snippets/multi-line-code-ctrl-m-xcode-15/", "published_at": "2023-07-25T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e7e05251", "title": "The Missing String Catalogs FAQ for Localization in Xcode 15", "url": "https://fline.dev/blog/the-missing-string-catalogs-faq-for-xcode-15/", "published_at": "2023-07-04T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e84a5d3c", "title": "Introducing ReviewKit: Improve your App Store Rating with Ease", "url": "https://fline.dev/blog/introducing-reviewkit/", "published_at": "2023-06-22T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e8f75fac", "title": "Search Apple Documentation with Shift+Cmd+O", "url": "https://fline.dev/snippets/search-apple-documentation-shift-cmd-o/", "published_at": "2023-06-10T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52e9a161d3", "title": "Xcode 15 Brings Type-Safe Asset Catalog Access", "url": "https://fline.dev/snippets/xcode-15-type-safe-asset-catalogs/", "published_at": "2023-06-06T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ea7fce7c", "title": "Xcode 15 String Catalogs Replace .strings and .stringsdict", "url": "https://fline.dev/snippets/xcode-15-string-catalogs/", "published_at": "2023-06-06T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52eb7917c4", "title": "Xcode 15's Format to Multiple Lines Feature", "url": "https://fline.dev/snippets/xcode-15-format-parameters-multiple-lines/", "published_at": "2023-06-06T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ebb04493", "title": "RemafoX Sale: Get 50% Off on all Subscription Plans during WWDC Week!", "url": "https://fline.dev/blog/remafox-wwdc-sale/", "published_at": "2023-06-04T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ec8d6bd7", "title": "Previewing Loading States in SwiftUI Without Changing Production Code", "url": "https://fline.dev/snippets/preview-loading-states-swiftui/", "published_at": "2023-05-31T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ec9b12ce", "title": "Taking over WWDC Notes & Envisioning its Future", "url": "https://fline.dev/blog/taking-over-wwdc-notes-and-its-future/", "published_at": "2023-05-25T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ed94bfdf", "title": "Speed Up Xcode Launches by Disabling Debug Executable", "url": "https://fline.dev/snippets/speed-up-xcode-disable-debug-executable/", "published_at": "2023-05-10T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ee66627e", "title": "Window Management with SwiftUI 4", "url": "https://fline.dev/blog/window-management-on-macos-with-swiftui-4/", "published_at": "2023-05-08T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52ef250f17", "title": "Xcode Code Snippets for Developer Warnings", "url": "https://fline.dev/snippets/xcode-snippets-developer-warnings/", "published_at": "2023-05-07T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52efa0138c", "title": "Quick Access to Swift Evolution Proposal Summaries on GitHub", "url": "https://fline.dev/snippets/swift-evolution-proposal-summaries-github/", "published_at": "2023-05-02T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f083a6de", "title": "My Top 5 Wishes for WWDC 2023", "url": "https://fline.dev/blog/my-top-5-wishes-for-wwdc-2023/", "published_at": "2023-04-27T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f0f96759", "title": "Preparing My App for Swift 6", "url": "https://fline.dev/blog/preparing-for-swift-6/", "published_at": "2023-04-18T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f1a69786", "title": "Binding: Equatable vs EquatableBinding", "url": "https://fline.dev/blog/binding-equatable-vs-equatablebinding/", "published_at": "2023-04-13T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f2578645", "title": "Pulsating Button Animation in SwiftUI", "url": "https://fline.dev/snippets/pulsating-button-animation-swiftui/", "published_at": "2023-04-07T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f295522f", "title": "Migrating to The Composable Architecture (TCA) 1.0", "url": "https://fline.dev/blog/migrating-to-tca-1-0/", "published_at": "2023-04-03T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f2ba67de", "title": "2,000 Imports: Organizing my Apps' SwiftPM modules", "url": "https://fline.dev/blog/organizing-my-swiftpm-modules/", "published_at": "2023-03-23T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f2ddb3dd", "title": "Hardware Requirements for iOS Development (May 2025)", "url": "https://fline.dev/blog/hardware-requirements-for-ios-development/", "published_at": "2022-12-02T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f2dfef01", "title": "Introducing RemafoX: Easy App Localization", "url": "https://fline.dev/blog/introducing-remafox-easy-app-localization/", "published_at": "2022-10-13T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f310c910", "title": "Making the Most of WWDC 2022", "url": "https://fline.dev/blog/making-the-most-of-wwdc-2022/", "published_at": "2022-05-30T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f32df6d9", "title": "Streaming Open Source Development on Twitch — Part 2", "url": "https://fline.dev/blog/streaming-open-source-development-on-twitch-part-2/", "published_at": "2022-04-15T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f3b42a2e", "title": "My Top 3 Wishes for WWDC 2022", "url": "https://fline.dev/blog/my-top-3-wishes-for-wwdc-2022/", "published_at": "2022-04-06T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f43c7c6b", "title": "Streaming Open Source Development on Twitch — Part 1", "url": "https://fline.dev/blog/streaming-open-source-development-on-twitch-part-1/", "published_at": "2022-03-31T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f46444f1", "title": "SwiftPM + CoreData: Failing SwiftUI Previews? Here Are 5 Tips to Fix", "url": "https://fline.dev/blog/swiftpm-coredata-failing-swiftui-previews-here-are-5-tips-to-fix/", "published_at": "2022-03-09T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f4892100", "title": "Multi Selector in SwiftUI", "url": "https://fline.dev/blog/multi-selector-in-swiftui/", "published_at": "2022-03-03T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f4b7d729", "title": "Hiding Secrets From Git in SwiftPM", "url": "https://fline.dev/blog/hiding-secrets-from-git-in-swiftpm/", "published_at": "2022-02-20T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f5a7863f", "title": "Laser Focus priority strategy", "url": "https://fline.dev/blog/laser-focus-priority-strategy/", "published_at": "2021-09-27T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f5b1b38d", "title": "Git Merge vs Rebase", "url": "https://fline.dev/blog/git-merge-vs-rebase/", "published_at": "2021-07-01T00:00:00+00:00" }, { "id": "01a08778-9d0e-72e8-abf1-ae52f60e6f49", "title": "Primer on Regular Expressions", "url": "https://fline.dev/blog/primer-on-regular-expressions/", "published_at": "2021-05-06T00:00:00+00:00" } ] posts Claim your blog
Back to fline.dev
Blog · corpus.blog/blogs/fline.dev/posts

fline.dev

fline.dev

2026

2025

2024

2023

2022

2021