Apple prepared a bunch of sessions with AppStore experts for discussing different topics: how to attract new customers, test marketing strategies, optimize subscriptions, and so on.
https://developer.apple.com/events/app-store/
#AppStore
Apple's just released a new, open source package designed to provide common types for working with HTTP. This package provides a convenient integration with Foundation as well. However, it's important to note that the current version of the package does have a limitation: it does not include support for HTTP request and response bodies.
https://www.swift.org/blog/introducing-swift-http-types/
#Swift #network
During the recent WWDC event, Apple introduced a new framework called Observation. One of its most eagerly anticipated features is its ability to eliminate unnecessary updates in SwiftUI views. In this article, the author takes a Q&A approach to explore this framework and provide answers to common questions surrounding it.
https://betterprogramming.pub/a-deep-dive-into-observation-a-new-way-to-boost-swiftui-performance-f299831c664b
#SwiftUI #optimization
Two Q&A sessions with Apple engineers about new features:
SwiftData
https://useyourloaf.com/blog/wwdc23-swiftdata-lab-notes/
SwiftUI
https://onmyway133.com/posts/wwdc23-swiftui-qanda/
#SwiftData #SwiftUI #wwdc
I know you've all been waiting for this. Here's a quick introduction to the new framework, Swift Data, that persists data in your app and is entirely built around modern Swift.
https://alexanderlogan.co.uk/blog/wwdc23/03-swift-data
#SwiftData
Once again, Paul presents a great introduction to the latest features in Swift 5.9
https://www.hackingwithswift.com/articles/258/whats-new-in-swift-5-9
#Swift
The author has prepared* an eight-part series in which he details his journey with CloudKit after his own sharing solution:
- Basic CloudKit concepts.
- How data is moved between a device and iCloud.
- How to initiate sharing, and how a sharing invitation is accepted by the app.
- Strategies for synchronising data between devices.
- Sharing participants, what happens when you stop sharing, leave a list or sign out of iCloud.
- Tips for diagnosing issues, handling edge cases, concurrency and logging.
*Only 5 parts are available now. A new part becomes available one week after the previous one.
https://dev.shoppingukapp.com/2023/05/01/embracing-cloudkit-for-data-sharing-contents.html
#CloudKit
I appreciate how the author delivers a comprehensive understanding of the animation mechanism in SwiftUI. The article provides numerous important details, including helpful demonstrations through gifs and additional links for further exploration.
https://betterprogramming.pub/swiftui-animation-mechanism-a1adf2b9b417
#SwiftUI #animations
Whether you're new to Swift Concurrency and looking for a quick start, or already have experience but need a refresher, this article covers everything you need to know in the most condensed form possible.
https://dev.srdanstanic.com/swift-concurrency-quick-start/
#Swift #concurrency
What a nice hack!
You can test App Store production builds, while they are in Pending Developer Release, by generating a promo code for your unreleased build.
If you find a show-stopper bug, you can still reject the build and resubmit.
Useful for testing purchases in production
https://twitter.com/russshanahan/status/1396879383298772992?s=52&t=YNy4qFziI3PFPTlrSCXpmA
Finally, this has happened 🔥
In Xcode 14.3, we can see a print output from SwiftUI Previews.
https://twitter.com/sarunw/status/1627038165273042947?s=46&t=dYa7Fcdr7iyKmiuDSEXIgw
#SwiftUI #preview
Handling complex gestures within a ScrollView in SwiftUI can be a real challenge, especially when you want to do more than just a simple tap. Gestures conflict with the ScrollView gestures, which cause scrolling to stop working and the gestures not being detected. Unfortunately, there's no built-in way to handle it, so we need to find some hacks. Daniel found a clever workaround using ButtonStyle and wrote an article about it.
https://danielsaidi.com/blog/2022/11/16/using-complex-gestures-in-a-scroll-view
#SwiftUI #gestures
Shopify recently migrated their biggest mobile app (4 root screens at the moment) to React Native and wrote a blog post about it. They talk about the challenges they faced and how they overcame them. They also explain the benefits they've seen since making the switch. It's a really interesting read if you're thinking about migrating a big app or just want to know what it's like.
https://shopify.engineering/migrating-our-largest-mobile-app-to-react-native
#react_native #shopify
To add a festive touch to our application for the Christmas season, we've implemented snowflakes. Out of curiosity, I asked ChatGPT to try implementing them as well, and after comparing the results, I decided to go with the ones that the AI generated for me. I particularly appreciated the option for improving the code, which included a detailed explanation of how to set up the particle system to make the snowflakes look as realistic as possible.
If you haven't had a chance to try it out yet, there's a short article that demonstrates the capabilities of this tool and gives you an idea of what it looks like in action.
https://www.createwithswift.com/prototyping-swiftui-interfaces-with-openais-chatgpt/
#ChatGPT
If your project is heavily inspired by a modular architecture with the use of SPM, try this package that simplifies the management of your Package.swift by using DSL.
https://github.com/brightdigit/PackageDSL
#SPM
This great article aims to examine the fundamental principles and distribution logic of SwiftUI Transactions. It provides readers with valuable insights on how to attain more precise animation control. Furthermore, it sheds the light on various other noteworthy factors that require attention.
https://itnext.io/the-secret-to-flawless-swiftui-animations-a-deep-dive-into-transactions-7afbf9abdac3
#SwiftIU #animations
Good article about comprehending mergeable libraries introduced a few weeks ago at WWDC.
We can now make use of mergeable libraries, which are a new type of library that combines the best of dynamic and static libraries. They are optimised for both build time and launch time performance and are designed to feel like static libraries.
https://www.polpiella.dev/understanding-mergeable-libraries/
#Xcode #framework #linking
The Apple design kit has now been officially published in Figma. I'm sure this update will bring happiness to designers in your team — go ahead and tell them about it.
https://www.figma.com/community/file/1248375255495415511/Apple-Design-Resources-%E2%80%93-iOS-17-and-iPadOS-17
#Figma
Friends, I wanted to share some recent news with me regarding my professional situation. Unfortunately, due to a significant layoff at my startup, I am now seeking new employment opportunities. If any of you are aware of any vacant positions or opportunities within your organizations, I would greatly appreciate your support! ❤️
Feel free to ask any questions or suggest great positions - @otbivnoe
(Full remote, Europe-Asia timezone)
This informative guide offers you valuable tips to completely avoid or effectively handle the most frequent rejections in the AppStore.
https://www.revenuecat.com/blog/growth/the-ultimate-guide-to-app-store-rejections/
#AppStore
The author describes how to reduce redundant view updates by applying various optimization techniques.
https://mobileappcircular.com/how-to-avoid-repeating-swiftui-view-updates-dcf0a65d3758
#SwiftUI #optimization
Apple has open-sourced the first version of Foundation. Types such as JSONEncoder, Calendar, TimeZone, Locale and more are all-new Swift implementations.
https://swift.org/blog/foundation-preview-now-available/
#swift
Apple has shared solutions to help developers resolve common architecture build errors on Apple silicon.
https://developer.apple.com/documentation/technotes/tn3117-resolving-build-errors-for-apple-silicon
#Xcode
If, as an author, you try to modularize your app as much as possible for faster build times (faster SwiftUI previews, tests, and more), and you're really tired of writing a lot of import statements every time, the @_exported attribute can simplify this process.
The attribute allows a module to re-export all of the public declarations of another module that it depends on. In simpler terms, if you have a module that depends on another module, and you mark the dependency with @_exported, then any other modules that depend on your module will automatically get access to all of the public declarations from the original module, without having to import it directly.
p.s. be aware this attributes is under active discussion and can be changed and entirely removed in the future.
https://www.fline.dev/organizing-my-swiftpm-modules/
#SPM #optimization
🔥 Highly recommend to update fastlane
https://twitter.com/fastlanetools/status/1629153901747265538?s=46&t=6ONSW-f5wKmLTO96ZJRH6A
Celebrating the codebase’s 10-year anniversary of the Facebook iOS app, the author highlights the challenges faced during the development process and how they were overcome, with a focus on performance optimization, reliability, and scalability.
2014. The team built a new, React-inspired UI framework (Component Kit) which resulted in a 50% performance improvement.
2016. Started moving large portions of code into dynamic libraries (dylib) to curb the unbounded growth of the app's startup time. The dylib solution was effective but resulted in runtime failures and linker errors.
2017. Adopted Buck build system to address the issues introduced by dylibs. Buck allows each target to be declared with configuration information, and generates a graph of the app's classes and functions during the build process. This became the building block for FBiOS's next generation architecture.
2018. Introduced a new plugin system using Buck and code generation to build and map information about the code dependencies. This system replaced the runtime-based app-module system and improved reliability, provided faster feedback to engineers, and allowed for code sharing between mobile apps.
2020. Faced challenges due to the growing use of Swift-only APIs from Apple and the preference for more Swift in the codebase. Historically, FBiOS relied on C++ for abstraction, but it does not interop with Swift, leading to code bloat when creating shims for Swift use.
https://engineering.fb.com/2023/02/06/ios/facebook-ios-app-architecture/
I recently came across an interesting article on creating custom SF symbols, and it piqued my interest as I had never considered this approach before. If your app involves displaying text alongside an icon and it should be automatically aligning with text in all weights and sizes. If you also adopt Dynamic Type, it can prove to be extremely helpful. Adopting custom SF Symbols is a great way to enhance the design and usability of your app.
https://www.david-smith.org/blog/2023/01/23/design-notes-18/
How to create SF Symbols with Sketch
mkproduct-stories/how-to-create-sf-symbols-with-sketch-2952ee02abf5" rel="nofollow">https://medium.com/@mkproduct-stories/how-to-create-sf-symbols-with-sketch-2952ee02abf5
#SF #design #iOS
Did you know that VoiceOver, the screen reader built into Apple devices, automatically reads the name of an image for accessibility purposes? And even better, you can provide a more descriptive accessibility label for the image by using the name in the Localizable file. This helps make the content on your app more accessible for people with disabilities.
https://nilcoalescing.com/blog/ImageAccessibilityLabelsFromLocalizableStringsFiles/
#iOS #Accessibility #VoiceOver
You know what I mean 😌 defaults write com.apple.dt.Xcode XcodeCloudUpsellPromptEnabled -bool false