tezvyn:

📱Mobile Dev

Mobile app development across platforms

1323 bites

More in Mobile Dev — page 45

App Thinning: Ship Only What's Needed
iOS & Swift2 min read

App Thinning: Ship Only What's Needed

App Thinning shrinks your app's download by delivering only the assets a specific device needs. The App Store uses Slicing for device-specific art and code, and you can use On-Demand Resources for assets downloaded after installation.

Xcode Cloud
iOS & Swift2 min read

Xcode Cloud

Xcode Cloud is Apple's built in CI/CD service that builds, tests, and distributes iOS and Mac apps from source control on Apple hosted cloud Macs, so teams do not need to run their own build hardware or manage signing separately.

iOS & Swift2 min read

App Store Connect Analytics

App Analytics in App Store Connect is Apple's built in, privacy preserving dashboard showing how users find, install, and use an app, covering impressions, product page views, conversion rate, downloads, and retention, with no SDK required.

iOS & Swift2 min read

Phased Release: De-Risking App Updates

A phased release is like slowly opening a floodgate for your app update. It rolls out to a small percentage of users first, letting you monitor for crashes before it reaches everyone and limiting the blast radius of a bad bug.

Navigating Apple's App Store Submission and Review
iOS & Swift2 min read

Navigating Apple's App Store Submission and Review

Think of App Store submission as a strict gatekeeping process, not just an upload. You must prove your app is safe, reliable, and transparent via App Store Connect.

iOS & Swift2 min read

TestFlight: Apple's Beta Testing Framework

TestFlight is your private App Store for beta builds. Use it to distribute pre-release versions to internal teams and external testers for feedback before a public launch. The footgun: external tester builds require a beta App Review, unlike internal builds.

iOS & Swift2 min read

App Store Reviews: Your Public Support Channel

Treat App Store reviews as public conversations, not just support tickets. Responding lets you fix your app's narrative, help users with issues, and show potential customers you're engaged. The footgun is writing an emotional or defensive reply.

Archiving an iOS App for Distribution
iOS & Swift2 min read

Archiving an iOS App for Distribution

Archiving an app bundles your code and assets into a distributable package. It's the final step before sending your app to beta testers on TestFlight or submitting it to the App Store.

iOS & Swift2 min read

App Store Connect: Your App's Mission Control

Think of App Store Connect as your app's mission control. It’s the web portal for managing your app's lifecycle after coding, from uploading builds and running TestFlight betas to submitting for final review.

iOS & Swift84 sec read

Apple Developer: The Official Resource Hub

Think of Apple Developer as the official command center for building on Apple platforms. It's the central website for the tools, APIs, and technical resources you need to write software for iOS, macOS, watchOS, and more.

iOS & Swift2 min read

Custom Frameworks: Best Practices for Sharing Code

A custom framework is a private toolkit, bundling shared code and resources for use across multiple apps. Use them for common logic in an app suite, but always prefix public symbols to avoid name collisions and static link errors.

iOS & Swift2 min read

Swift Library Evolution: Shipping Break-Proof Frameworks

Library Evolution lets you update a Swift framework without breaking apps that use it, even if they don't recompile. It's crucial for shipping binary SDKs. The footgun is that many seemingly safe changes, like adding a struct property, are binary-breaking by…

Static vs. Dynamic Linking: Code Size vs. Flexibility
iOS & Swift2 min read

Static vs. Dynamic Linking: Code Size vs. Flexibility

Static linking bakes library code into your app, creating a large but self-contained executable. Dynamic linking loads libraries at runtime, saving space. This choice impacts app size, launch time, and updates.

Swift Package Resources: Bundling Assets with Code
iOS & Swift2 min read

Swift Package Resources: Bundling Assets with Code

A Swift Package resource bundle is like a fanny pack for your code, letting you package assets like images and data files directly with your library. This makes your package self-contained.

iOS & Swift2 min read

Carthage: A Decentralized iOS Dependency Manager

Carthage is a dependency manager that prioritizes developer control. It compiles dependencies into binary frameworks but leaves final integration to you, avoiding automatic changes to your Xcode project.

Framework Target
iOS & Swift2 min read

Framework Target

A Framework target in Xcode builds a reusable bundle of compiled code and public interfaces, separate from an app target, so an app, a widget, or an extension can share the same code without duplicating it.

Xcode Workspaces: Managing Multiple Related Projects
iOS & Swift2 min read

Xcode Workspaces: Managing Multiple Related Projects

An Xcode Workspace is a container for multiple related projects, letting them share code and resources. Use it when building an app with its own frameworks or when managing dependencies like CocoaPods.

iOS & Swift2 min read

CocoaPods: Managing Dependencies in Apple Projects

CocoaPods manages third-party libraries in your Swift/Objective-C projects. You list dependencies in a `Podfile`, run `pod install`, and it handles the rest. The biggest footgun: always open the `.xcworkspace`, not the `.xcodeproj` file after installing.

iOS & Swift2 min read

Snapshot Testing: Catch Unintended UI Changes

Snapshot testing compares your UI to a saved 'golden' image, failing if pixels differ. It's a visual diff for your views, catching unintended regressions in layout or style. The main footgun is forgetting to re-record snapshots after intentional UI changes.

XCUITest Page Object Model: Tame Your UI Tests
iOS & Swift2 min read

XCUITest Page Object Model: Tame Your UI Tests

The Page Object Model treats each app screen as an object, separating test logic from UI interaction. In XCUITest, this creates stable tests for complex apps. The biggest footgun is forgetting synchronization—always wait for views to load before interacting.