Snapp Mobile iOS Newsletter

Issue 46 • June 27, 2025

Hi folks,

In this edition of the newsletter we’re discussing strategies for user retention through billing grace periods, debugging techniques using Proxyman, creating dynamic visual content with SwiftUI Canvas, utilizing Swift feature flags via SPM packages, updating third-party libraries for security, and exploring SwiftUI’s ViewBuilder for flexible UI construction.

Enjoy!

Swift

Announcing the Android Workgroup

Yep, you’ve read that right! The Swift Android Group is a thing now:

The primary goal of the Android workgroup is to establish and maintain Android as an officially supported platform for Swift.

We’re curious to see the output.

Enabling upcoming feature flags in an SPM package

SPM package has a feature that allows us to enable upcoming experimental Swift feature flags per target. To do this, we need to tweak our Package.swift file by adding a swiftSettings argument with the feature flag to be enabled. This allows you to try out new language versions before they are available in Xcode. The post shows us how while also mentioning that multiple feature flags can be enabled at once.

UI/UX

Creating shapes using Path in the SwiftUI Canvas view

This article discusses creating custom visualizations and layouts in SwiftUI using the Canvas view. It’s a step-by-step guide on how to create shapes, animate them, and combine them into a dynamic canvas. The final result is a breathing, spinning pattern of polygons with varying colors that we can use as a reference.

Tips and tricks for when using SwiftUI’s ViewBuilder

Anyone who works with SwiftUI has bumped into the famous ViewBuilder. It’s a powerful tool that enables multiple view expressions to be declared within a given scope without manual grouping or wrapping. This article explains how ViewBuilder works and provides tips and tricks for using it effectively, including custom containers, making view builder properties optional, handling multiple view expressions, and structuring complex views.

Applying Transformations Within the Graphics Context of a SwiftUI Canvas View

Did you ever have to apply transformations like scaling and rotating to create dynamic visual content in a SwiftUI canvas view? This post provides an example of creating morphing polygons using interpolation between two shapes, and demonstrates how to use TimelineView to animate these transformations over time. The code is provided for a MorphShapeView that displays multiple animated layers with different rotations, scales, and shape transitions.

Sales

Billing Grace Period Explained: How It Works and Why It Matters

Billing grace periods allow users to continue accessing premium features in an app even if their payment fails. This feature is not enabled by default and must be set up in App Store Connect. Enabling it can help reduce churn and provide a seamless payment experience for users. Discover more in this post.

Tools

How to easily inspect and modify network traffic

Proxyman users - this one’s for you! Vincent Pradeilles demonstrates how to use the app to intercept HTTPS traffic, allowing for inspection and modification without modifying the code base. This approach is very useful for debugging network issues and injecting responses that correspond to tricky edge cases.

Code Rot is Real: Stay Fresh with Library Updates

Third-party code is a necessary evil and it’s important to keep our dependencies up-to-date to avoid security and stability issues. A solution that goes beyond simply calling Xcode’s “Update to latest Package Versions” can be found in a tool named swift-outdated. It produces a table showing the outdated dependencies and their latest versions available in the upstream repository - something that can be quite useful on the CI.