41554 blogs · [ { "id": "01a0da30-d667-730a-98d8-3c95af99b814", "title": "Introducing SwiftFairy: Swift and SwiftUI code reviews for coding agents", "url": "https://nilcoalescing.com/blog/IntroducingSwiftFairy", "published_at": "2026-09-24T21:00:00+00:00" }, { "id": "01a0c77d-2b20-72d3-8346-ffd5ae3dc53c", "title": "Configuring SwiftUI toolbars on iPhone Duo", "url": "https://nilcoalescing.com/blog/ConfiguringSwiftUIToolbarsOnIPhoneDuo", "published_at": "2026-09-21T06:00:00+00:00" }, { "id": "01a0bdc5-bfee-71ec-ac57-4526537a1eea", "title": "Diagnosing ForEach performance issues in SwiftUI lazy containers", "url": "https://nilcoalescing.com/blog/DiagnosingForEachPerformanceIssuesInSwiftUILazyContainers", "published_at": "2026-09-15T21:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935524bd1e", "title": "Building a sunburst diagram in Swift Charts", "url": "https://nilcoalescing.com/blog/BuildingASunburstDiagramInSwiftCharts", "published_at": "2026-09-04T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9355461edd", "title": "SwiftUI data dependencies and their effect on view updates", "url": "https://nilcoalescing.com/blog/SwiftUIDataDependenciesAndTheirEffectOnViewUpdates", "published_at": "2026-08-31T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9355d71923", "title": "Building an accessible calendar chart with Swift Charts", "url": "https://nilcoalescing.com/blog/BuildingAnAccessibleCalendarInSwiftCharts", "published_at": "2026-08-28T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9355f16963", "title": "Swift Charts Beyond the Basics: creating clear and beautiful data visualizations", "url": "https://nilcoalescing.com/blog/SwiftChartsBeyondTheBasicsReleaseAnnouncement", "published_at": "2026-08-26T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9356004992", "title": "Building adaptive SwiftUI layouts with containerRelativeFrame()", "url": "https://nilcoalescing.com/blog/BuildingAdaptiveSwiftUILayoutsWithContainerRelativeFrame", "published_at": "2026-08-22T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93568d7854", "title": "Responding to geometry changes in SwiftUI", "url": "https://nilcoalescing.com/blog/RespondingToGeometryChangesInSwiftUI", "published_at": "2026-08-18T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93575ae677", "title": "Creating multi-step animations with PhaseAnimator in SwiftUI", "url": "https://nilcoalescing.com/blog/PhaseAnimationsInSwiftUI", "published_at": "2026-08-14T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9357d3a698", "title": "Adaptive SwiftUI toolbars in iOS 27", "url": "https://nilcoalescing.com/blog/AdaptiveSwiftUIToolbarsInIOS27", "published_at": "2026-08-09T19:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9358d0b03a", "title": "Alignment guides in SwiftUI", "url": "https://nilcoalescing.com/blog/AlignmentGuidesInSwiftUI", "published_at": "2026-08-06T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93595975e2", "title": "Tracking value sources to prevent recursive SwiftUI updates", "url": "https://nilcoalescing.com/blog/TrackingValueSourcesToPreventRecursiveSwiftUIUpdates", "published_at": "2026-08-04T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9359aaf2a2", "title": "Keeping canvas interactions responsive with frame reprojection", "url": "https://nilcoalescing.com/blog/KeepingCanvasInteractionsResponsiveWithFrameReprojection", "published_at": "2026-07-29T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9359c4c575", "title": "Blend modes in SwiftUI", "url": "https://nilcoalescing.com/blog/BlendModesInSwiftUI", "published_at": "2026-07-25T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935a39eecc", "title": "Building adaptive non-modal panels in SwiftUI", "url": "https://nilcoalescing.com/blog/BuildingAdaptiveNonModalPanelsInSwiftUI", "published_at": "2026-07-21T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935a798583", "title": "Geometry, compositing and drawing groups in SwiftUI", "url": "https://nilcoalescing.com/blog/GeometryCompositingAndDrawingGroupsInSwiftUI", "published_at": "2026-07-18T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935a7d74e8", "title": "\"The SwiftUI Way\" book update: expanded guidance on data flow and performance", "url": "https://nilcoalescing.com/blog/TheSwiftUIWayUpdateJuly2026", "published_at": "2026-07-15T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935b447c61", "title": "Equatable properties in @Observable classes", "url": "https://nilcoalescing.com/blog/EquatablePropertiesInObservableClasses", "published_at": "2026-07-14T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935bcbccd6", "title": "The hidden cost of unstable SwiftUI environment defaults", "url": "https://nilcoalescing.com/blog/UnstableDefaultEnvironmentValuesInSwiftUI", "published_at": "2026-07-11T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935c23037f", "title": "Custom bindings in SwiftUI: closures vs subscripts", "url": "https://nilcoalescing.com/blog/CustomBindingsInSwiftUIClosuresVsSubscripts", "published_at": "2026-07-08T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935c2c93f8", "title": "AsyncImage improvements in iOS 27", "url": "https://nilcoalescing.com/blog/AsyncImageImprovementsInSwiftUIOnIOS27", "published_at": "2026-06-23T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935ce25521", "title": "New SwiftUI APIs for reordering and drag and drop on iOS 27", "url": "https://nilcoalescing.com/blog/NewSwiftUIAPIsForReorderingAndDragAndDropOniOS27", "published_at": "2026-06-19T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935dcba3de", "title": "Navigation transition updates in SwiftUI on iOS 27", "url": "https://nilcoalescing.com/blog/SwiftUINavigationTransitionUpdatesIniOS27", "published_at": "2026-06-16T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935eb7bdff", "title": "Custom scroll layouts with swipe actions in SwiftUI on iOS 27", "url": "https://nilcoalescing.com/blog/CustomScrollLayoutsWithSwipeActionsInSwiftUIOnIOS27", "published_at": "2026-06-12T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935f2e85a0", "title": "Initializing @Observable classes with the @State macro in Xcode 27", "url": "https://nilcoalescing.com/blog/InitializingObservableClassesWithTheStateMacroInXcode27", "published_at": "2026-06-10T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c935f4dc123", "title": "Styling measurement unit fonts in SwiftUI", "url": "https://nilcoalescing.com/blog/StylingMeasurementUnitFontsInSwiftUI", "published_at": "2026-06-08T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93600a3a22", "title": "SwiftUI animation timing", "url": "https://nilcoalescing.com/blog/AnimationTimingInSwiftUI", "published_at": "2026-06-05T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93605e7bb1", "title": "Clearing UserDefaults during macOS app development", "url": "https://nilcoalescing.com/blog/ClearingUserDefaultsDuringmacOSAppDevelopment", "published_at": "2026-05-31T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93612e02a5", "title": "Refreshing and animating views using TimelineView in SwiftUI", "url": "https://nilcoalescing.com/blog/TimelineViewInSwiftUI", "published_at": "2026-05-26T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9362160b1f", "title": "Modern SwiftUI APIs for programmatic scrolling", "url": "https://nilcoalescing.com/blog/ModernSwiftUIAPIsForProgrammaticScrolling", "published_at": "2026-05-20T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936281d913", "title": "A guide to macOS window toolbar styles in SwiftUI", "url": "https://nilcoalescing.com/blog/AGuideToMacOSToolbarStylesInSwiftUI", "published_at": "2026-05-12T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936323c25f", "title": "Scheduling and handling background app refresh in SwiftUI", "url": "https://nilcoalescing.com/blog/SchedulingAndHandlingBackgroundAppRefreshInSwiftUI", "published_at": "2026-05-06T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93641dd4ce", "title": "Overview of the onChange() modifier in SwiftUI", "url": "https://nilcoalescing.com/blog/OverviewOfonChangeInSwiftUI", "published_at": "2026-04-29T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9364ee5a47", "title": "Embedding SF Symbols in SwiftUI Text", "url": "https://nilcoalescing.com/blog/EmbeddingSFSymbolsInSwiftUIText", "published_at": "2026-04-07T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93658c554e", "title": "The SwiftUI Way: patterns and anti-patterns for production apps", "url": "https://nilcoalescing.com/blog/TheSwiftUIWayReleaseAnnouncement", "published_at": "2026-03-27T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93666820df", "title": "Adjusting line height in SwiftUI on iOS 26", "url": "https://nilcoalescing.com/blog/AdjustingLineHeightInSwiftUIOniOS26", "published_at": "2026-03-05T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93668a7095", "title": "Isolate SwiftUI animations to specific attributes", "url": "https://nilcoalescing.com/blog/IsolateSwiftUIAnimationsToSpecificAttributes", "published_at": "2026-02-19T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93670b90b6", "title": "Defining custom string interpolation behavior in Swift", "url": "https://nilcoalescing.com/blog/DefiningCustomStringInterpolationBehaviorInSwift", "published_at": "2026-01-14T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93675a38b1", "title": "Animating SF Symbols in SwiftUI", "url": "https://nilcoalescing.com/blog/AnimatingSFSymbolsInSwiftUI", "published_at": "2025-12-19T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9367cc2429", "title": "Add an inner shadow to a symbol image in SwiftUI", "url": "https://nilcoalescing.com/blog/AddAnInnerShadowToASymbolImageInSwiftUI", "published_at": "2025-12-10T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936865e05a", "title": "Initializing @Observable classes within the SwiftUI hierarchy", "url": "https://nilcoalescing.com/blog/InitializingObservableClassesWithinTheSwiftUIHierarchy", "published_at": "2025-12-03T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9369013f84", "title": "Automatic property observation in UIKit with @Observable", "url": "https://nilcoalescing.com/blog/AutomaticPropertyObservationInUIKitWithObservable", "published_at": "2025-11-22T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9369d42fd3", "title": "ScrollView snapping in SwiftUI", "url": "https://nilcoalescing.com/blog/ScrollViewSnappingInSwiftUI", "published_at": "2025-10-30T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9369fecb0f", "title": "Add a Close button to SwiftUI modals on iOS 26", "url": "https://nilcoalescing.com/blog/AddACloseButtonToSwiftUIModalsOnIOS26", "published_at": "2025-10-21T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936a495285", "title": "\"SwiftUI Fundamentals\" book update: refreshed for iOS 26 and the Liquid Glass design", "url": "https://nilcoalescing.com/blog/SwiftUIFundamentalsUpdateOctober2025", "published_at": "2025-10-21T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936a758373", "title": "Show icons only in SwiftUI swipe actions on iOS 26", "url": "https://nilcoalescing.com/blog/ShowIconsOnlyInSwiftUISwipeActionsOnIOS26", "published_at": "2025-10-16T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936abb6952", "title": "Avoiding text truncation in SwiftUI with Dynamic Type", "url": "https://nilcoalescing.com/blog/AvoidingTextTruncationInSwiftUI", "published_at": "2025-10-07T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936b99adc2", "title": "Introducing Breve: an arty coffee app built for iOS 26", "url": "https://nilcoalescing.com/blog/IntroducingBreve", "published_at": "2025-10-04T22:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936bb31e71", "title": "SwiftUI Liquid Glass sheets with NavigationStack and Form", "url": "https://nilcoalescing.com/blog/LiquidGlassSheetsWithNavigationStackAndForm", "published_at": "2025-09-10T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936c8bde32", "title": "Corner concentricity in SwiftUI on iOS 26", "url": "https://nilcoalescing.com/blog/ConcentricRectangleInSwiftUI", "published_at": "2025-08-22T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936d754522", "title": "Core Spotlight integration for Spotlight and internal app search", "url": "https://nilcoalescing.com/blog/CoreSpotlightIntegration", "published_at": "2025-08-12T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936e0698ca", "title": "SwiftUI Search Enhancements in iOS and iPadOS 26", "url": "https://nilcoalescing.com/blog/SwiftUISearchEnhancementsIniOSAndiPadOS26", "published_at": "2025-07-29T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936eb40098", "title": "Presenting Liquid Glass sheets in SwiftUI on iOS 26", "url": "https://nilcoalescing.com/blog/PresentingLiquidGlassSheetsInSwiftUI", "published_at": "2025-07-19T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c936f91fef7", "title": "Schedule a countdown timer with AlarmKit", "url": "https://nilcoalescing.com/blog/CountdownTimerWithAlarmKit", "published_at": "2025-07-04T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937050dc73", "title": "Using enumerated() with SwiftUI List and ForEach to show item numbers", "url": "https://nilcoalescing.com/blog/UsingEnumeratedWithListAndForEach", "published_at": "2025-06-25T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9370774df0", "title": "Stretchy header in SwiftUI with visualEffect()", "url": "https://nilcoalescing.com/blog/StretchyHeaderInSwiftUI", "published_at": "2025-06-17T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93709c7f57", "title": "Create immersive backgrounds in SwiftUI with backgroundExtensionEffect()", "url": "https://nilcoalescing.com/blog/BackgroundExtensionEffectInSwiftUI", "published_at": "2025-06-12T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93718ff4c4", "title": "Enable scrolling based on content size in SwiftUI", "url": "https://nilcoalescing.com/blog/EnableScrollingBasedOnContentSizeInSwiftUI", "published_at": "2025-05-27T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93721f8174", "title": "Mesh gradients in SwiftUI", "url": "https://nilcoalescing.com/blog/MeshGradientsInSwiftUI", "published_at": "2025-05-20T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9372a11df0", "title": "Formatting data inside SwiftUI Text views", "url": "https://nilcoalescing.com/blog/FormattingDataInsideSwiftUITextViews", "published_at": "2025-05-09T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937383e558", "title": "Format long parameter lists into separate lines in Xcode", "url": "https://nilcoalescing.com/blog/FormatLongParameterListsIntoSeparateLinesInXcode", "published_at": "2025-05-03T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93741b2ab3", "title": "Embedding a custom font into a macOS app bundle", "url": "https://nilcoalescing.com/blog/EmbeddingACustomFontIntoAMacOSAppBundle", "published_at": "2025-05-01T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937441e705", "title": "Create a fully custom About window for a Mac app in SwiftUI", "url": "https://nilcoalescing.com/blog/FullyCustomAboutWindowForAMacAppInSwiftUI", "published_at": "2025-04-24T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937508cfeb", "title": "Automatic image accessibility labels from localized strings in SwiftUI", "url": "https://nilcoalescing.com/blog/ImageAccessibilityLabelsFromLocalizableStringsFiles", "published_at": "2025-04-17T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937589bf6d", "title": "Ways to customize text color in SwiftUI", "url": "https://nilcoalescing.com/blog/ForegroundColorStyleAndTintInSwiftUI", "published_at": "2025-04-16T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937661653f", "title": "\"Swift Gems\" book update: new techniques from recent and past Swift releases", "url": "https://nilcoalescing.com/blog/SwiftGemsUpdateApril2025", "published_at": "2025-04-09T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93771ac236", "title": "Text concatenation vs Text interpolation in SwiftUI", "url": "https://nilcoalescing.com/blog/TextConcatenationVsTextInterpolationInSwiftUI", "published_at": "2025-04-02T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93775f0c33", "title": "Method dispatch mechanisms in Swift: static and dynamic dispatch", "url": "https://nilcoalescing.com/blog/MethodDispatchMechanismsInSwift", "published_at": "2025-03-29T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937823f049", "title": "Adapting images and symbols to Dynamic Type sizes in SwiftUI", "url": "https://nilcoalescing.com/blog/AdaptingImagesAndSymbolsToDynamicTypeSizesInSwiftUI", "published_at": "2025-03-22T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9378d313d4", "title": "Custom environment values in SwiftUI", "url": "https://nilcoalescing.com/blog/CustomEnvironmentValuesInSwiftUI", "published_at": "2025-03-14T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9378e965a0", "title": "Customizing modal presentation background and color scheme in SwiftUI", "url": "https://nilcoalescing.com/blog/ModalPresentationBackgroundAndColorSchemeInSwiftUI", "published_at": "2025-03-08T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93799b9a15", "title": "Designing a custom lazy list in SwiftUI with better performance", "url": "https://nilcoalescing.com/blog/CustomLazyListInSwiftUI", "published_at": "2025-03-04T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9379fc2d34", "title": "Detecting the focused window on macOS in SwiftUI", "url": "https://nilcoalescing.com/blog/DetectFocusedWindowOnMacOS", "published_at": "2025-03-02T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937a872cd8", "title": "SwiftUI Fundamentals: a deeper look into the framework", "url": "https://nilcoalescing.com/blog/SwiftUIFundamentalsReleaseAnnouncement", "published_at": "2025-02-19T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937abc0c89", "title": "Build a macOS menu bar utility in SwiftUI", "url": "https://nilcoalescing.com/blog/BuildAMacOSMenuBarUtilityInSwiftUI", "published_at": "2025-02-14T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937acb9336", "title": "Testing SceneStorage state persistence in Xcode", "url": "https://nilcoalescing.com/blog/TestingSceneStorageStatePersistenceInXcode", "published_at": "2025-02-06T00:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937b3b6cec", "title": "Capture UUID values with regex in Swift", "url": "https://nilcoalescing.com/blog/CaptureUUIDValuesWithRegex", "published_at": "2025-02-03T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937c152a66", "title": "Managing WebSocket messages concurrently with detached actions", "url": "https://nilcoalescing.com/blog/DetachedActionsInDjangoChannelsRestFramework", "published_at": "2025-01-30T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937c259ec7", "title": "Provide macOS system-wide services from your app", "url": "https://nilcoalescing.com/blog/macOSSystemWideServices", "published_at": "2025-01-29T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937cccf55b", "title": "Show a popover on iPhone in SwiftUI", "url": "https://nilcoalescing.com/blog/PopoverOniPhoneInSwiftUI", "published_at": "2025-01-25T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937cdf39e4", "title": "Add launch at login setting to a macOS app", "url": "https://nilcoalescing.com/blog/LaunchAtLoginSetting", "published_at": "2025-01-18T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937d019b48", "title": "Handle plurals in SwiftUI Text views with inflection", "url": "https://nilcoalescing.com/blog/HandlePluralsInSwiftUITextViewsWithInflection", "published_at": "2025-01-14T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937dfdbea3", "title": "Codable conformance for Swift enums", "url": "https://nilcoalescing.com/blog/CodableConformanceForSwiftEnums", "published_at": "2025-01-08T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937ee2171b", "title": "Customizing macOS window background in SwiftUI", "url": "https://nilcoalescing.com/blog/CustomizingMacOSWindowBackgroundInSwiftUI", "published_at": "2024-12-31T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c937f781da5", "title": "Adjust the intensity of colors in SwiftUI views", "url": "https://nilcoalescing.com/blog/AdjustTheIntensityOfColorsInSwiftUIViews", "published_at": "2024-12-20T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9380211f3b", "title": "Noncopyable types in Swift", "url": "https://nilcoalescing.com/blog/NoncopyableTypesInSwift", "published_at": "2024-12-17T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c938074dc05", "title": "Copy a string to the clipboard in Swift on macOS", "url": "https://nilcoalescing.com/blog/CopyStringToClipboardInSwiftOnMacOS", "published_at": "2024-12-08T19:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93810ba9db", "title": "Set a shape as background in SwiftUI", "url": "https://nilcoalescing.com/blog/SetAShapeAsBackgroundInSwiftUI", "published_at": "2024-12-06T19:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9381b68766", "title": "SwiftUI matched geometry effect in a custom segmented control", "url": "https://nilcoalescing.com/blog/CustomSegmentedControlWithMatchedGeometryEffect", "published_at": "2024-12-02T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9381c58944", "title": "Animate UIKit views with SwiftUI animations in iOS 18", "url": "https://nilcoalescing.com/blog/AnimateUIKitViewsWithSwiftUIAnimations", "published_at": "2024-11-29T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9381fd0234", "title": "Set supported platforms in file target membership options in Xcode", "url": "https://nilcoalescing.com/blog/SetSupportedPlatformsInFileTargetMembershipOptionsInXcode", "published_at": "2024-11-26T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9382718ab7", "title": "Lazy vars in @Observable classes in Swift", "url": "https://nilcoalescing.com/blog/LazyVarsInObservableClasses", "published_at": "2024-11-20T03:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c938322e067", "title": "Preview SwiftUI views with bindings using @Previewable", "url": "https://nilcoalescing.com/blog/PreviewSwiftUIViewsWithBindings", "published_at": "2024-11-14T02:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c938375b0eb", "title": "\"Integrating SwiftUI into UIKit Apps\" book updated for iOS 18 and Xcode 16", "url": "https://nilcoalescing.com/blog/IntegratingSwiftUIUpdate2024", "published_at": "2024-11-09T22:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c93843422f0", "title": "Font modifiers in SwiftUI", "url": "https://nilcoalescing.com/blog/FontModifiersInSwiftUI", "published_at": "2024-10-29T01:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9384844160", "title": "User-level string search in Swift", "url": "https://nilcoalescing.com/blog/UserLevelStringSearchInSwift", "published_at": "2024-10-22T23:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9384b334e4", "title": "SwiftUI Environment", "url": "https://nilcoalescing.com/blog/SwiftUIEnvironment", "published_at": "2024-10-04T23:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c938524f43f", "title": "Sorting arrays in Swift using comparison operators as closures", "url": "https://nilcoalescing.com/blog/SortingArraysInSwiftUsingComparisonOperators", "published_at": "2024-08-31T05:00:00+00:00" }, { "id": "01a07df4-46f4-738e-a492-7c9385a20424", "title": "Using @Observable in SwiftUI views", "url": "https://nilcoalescing.com/blog/ObservableInSwiftUI", "published_at": "2024-08-24T02:00:00+00:00" } ] posts Claim your blog
Back to Nil Coalescing
Blog · corpus.blog/blogs/nilcoalescing.com/posts

Nil Coalescing

nilcoalescing.com

2026

2025

2024