September 13th, 2024

SwiftyLaunch Release 1.4.0 Patch Notes

Read the blog post.

New Features

  • Added iPadOS Support in addition to iOS
  • Prepared App for iOS 18
  • Added support for PostHog Session Recordings in AnalyticsKit
  • SwiftyLaunch now automatically sets up the providers and connects them to user the common firebase user id. Previously you had to manually uncomment the code
  • Apps generated with minimum deployment target set to iOS 18 now use the new Tab() view instead of the old .tabItem() view modifier
  • Apps generated with minimum deployment target set to iOS 18 and iPad selected as a platform now include the new adaptive sidebar navigation
  • New apps now include a privacy manifest file out of the box
  • You can now store your App Constants in Constants.swift (SharedKit)
  • Added a generic Stack view to SharedKit. Allows you to easily switch between HStack, VStack and a ZStack
  • Added a currentPlatform() helper function to SharedKit, which returns the current platform (iOS or iPadOS)
  • You can now enable Tuist to be automatically included in new apps
  • Added wrappers to CTAButton() and SecondaryButton() button styles. They are callable via .buttonStyle(.cta()) and .buttonStyle(.secondary())
  • SwiftyLaunch will now send you a push notification when project generation completes!
  • Redesigned SwiftyLaunch App UI (you can now even resize the window! 🤯)
  • Redesigned SwiftyLaunch licensing flow (less in-your-face when you've already had a sucessful verification before)
  • Reduced initial SwiftyLaunch bundle size (over 60% smaller)
  • Added in-app notifications to the SwiftyLaunch App, to indicate errors and similar
  • Added a Notification Center to the SwiftyLaunch app that allows us to inform you about newest additions in the app and other important information without having to send you emails
  • SwiftyLaunch will now show a 'no internet' warning when there is no internet access. I mean we somehow need to check your license and fetch the dependencies...
  • SwiftyLaunch Settings Window

    • Set default new project settings
    • Check for updates, release infromation
    • License information
    • Components tab: see if required components are installed (Xcode, Node.js), and download additional components (Whisper AI Model for AIKit)
    • Ability to fine-tune usage data collected by SwiftyLaunch
  • The original SwiftyLaunch icon was created using AI, but was now remade using vector graphics. Neat!

Bug Fixes

  • Fixed VerifyEmailView appearing multiple times in a row
  • Fixed Sign in with Apple showing a "Success" in-app notification when user cancels login
  • Fixed iOS 18 related bugs with authentication flow
  • Fixed buggy .sensitiveView() with biometric authentication
  • Renamed AnalyticsKit's typo in BackendKit → caputeEvent was renamed to captureEvent. No more kaputt event 😵‍💫
  • Fixed a crash that happens when the app is built with Xcode 16 when one tries to access the app icon as an asset. We now have a seperate app icon preview asset just to use in the app. Literally duplicate image assets just because of Xcode 16 🤦‍♂️

Changes

  • SwiftyLaunch now requires the macOS version to be at least 13.5 (instead of 13.0)
  • BrandUIKit is now part of SharedKit (located under Sources/UI)
  • Removed iOS 16.0 support, minimum supported version is now iOS 17.0 (Less bloat and allows us to add more recent features that we can't backport to iOS 16.0)
  • Removed AppData.swift. AppData is now part of Constants.swift
  • Removed TestimonialsView from the Paywall.
  • Removed LocalStorage.swift. The logic for WhatsNewView.swift and OnboardingView.swift was rewritten to use @AppStorage instead
  • UserDefaults keys throughout the app are now all stored in Constants.swift
  • showNotificationsPermissionsSheet() is now a static function of PushNotifications
  • Added a demo toggle to enable/disable biometric authentication in the debug-only DeveloperSettingsView
  • showPaywallSheet() is now a static function ofInAppPurchases
  • Renamed LaunchScreen.storyboard in Info.plist to LaunchScreen, as it caused issues during archiving and submitting the App to App Store Connect.
  • Refactored many buttons throughout the App to use an implicit Label instead of an explicit Text view. This makes the code cleaner and more readable
  • LocalStorage.clear() was removed. A UserDefaults extension (example: UserDefaults.standard.clear()) is now used to clear UserDefaults data

Known Issues

  • There are instances where setting OneSignal External ID may not work, meaning you're not able to send a test notification to that user using firebase user id. We are working with OneSignal to resolve this issue
  • The camera preview in the AI Vision Example may be rotated incorrectly in some scenarios on the iPad. The photos taken will be taken with a correct rotation. We are investigating this issue
  • AI Vision Example is not yet optimized to be used in Split View on iPad
  • Adaptive Tab Bar may have visual bugs on the iPad (iPadOS 18). What we can do is is wait for Apple to make their software less buggy.
  • As we now include multiple app icons for generated apps (regular, dark, tinted) for iOS18, people with Xcode 15.0 or earlier may see an incorrect app icon (as iOS17 doesn't support multiple app icons). If you're experiencing this, please use Xcode 16, or remove the additional app icons from the App/Assets.xcassets and set regular.png as the app icon
We don't want to bore you with aaaaall the other miniscule changes and fixes, so we'll stop here.
Thanks to everyone who reported bug fixes and other issues! Together we make SwiftyLaunch a better platform for all iOS Developers out there 🚀