Search results for

“A Summary of the WWDC25 Group Lab”

10,647 results found

Post

Replies

Boosts

Views

Activity

Unable to sync SwiftData model fully using CloudKit
Hey everyone I just ran into an issue where I couldn't sync the model below fully by using CloudKit, enum LinkMapV3_1: VersionedSchema { static let versionIdentifier: Schema.Version = .init(3, 1, 0) static var models: [any PersistentModel.Type] { [AnnotationData.self, GroupData.self, Item.self, Deployment.self, History.self] } // MARK: - Data @Model class AnnotationData { var name: String = var longitude: Double = 0.0 var latitude: Double = 0.0 var order: Int = -1 var level: Int = 1 var detail: String = @Relationship(deleteRule: .nullify, inverse: GroupData.annotation) var groups: [GroupData]? @Relationship(deleteRule: .nullify, inverse: AnnotationData.to) var from: AnnotationData? var to: AnnotationData? var history: History? } // MARK: - History @Model class History { var id: UUID = UUID() var timestamp: Date = Date() @Relationship(deleteRule: .nullify, inverse: AnnotationData.history) var annotations: [AnnotationData]? @Relationship(deleteRule: .nullify, inverse: GroupData.history) var groups
1
0
300
Jan ’26
Reply to Persisted log entries disappeared?
Each system log entry has time to live (TTL) value. You can see evidence for this in various places within the UI. For example: % sudo log stream … TTL … 0 fseventsd: (libsystem_info.dylib) Resolve user group list … … 7 WindowServer: (SkyLight) [com.apple.SkyLight:KeyboardEvent] kCGSEventKeyUp … AFAIK there’s no supported way to override that, but if you poke around in /System/Library/Preferences/Logging on your Mac it’s not hard to see how it works. WARNING As with all implementation details, there’s no guarantee that this will actually work, or that it hasn’t worked differently in the past, or will work differently in the future. So don’t build knowledge of this into a product that you ship to a wide range of users. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
UITabGroup child tabs ignoring viewControllerProvider in Sidebar
Hi, I am implementing a sidebar navigation using UITabBarController with the new UITabGroup API on and above iPadOS 18. I’ve encountered an issue where selecting a child UITab within a group does not seem to trigger the child's own viewControllerProvider. Instead, the UITabBarController displays the ViewController associated with the parent UITabGroup. The Issue: In the snippet below, when I tap Item 2A or Item 2B in the iPad sidebar, the app displays the emptyVC (clear background) defined in the section2Group provider, rather than the teal or cyan ViewControllers defined in the individual child tabs. let item2A = UITab( title: Item 2A, image: UIImage(systemName: a.circle), identifier: tab.section2.item2a ) { _ in self.createViewController( title: Section 2 - Item 2A, color: .systemTeal, description: Part of Section 2A group ) } let item2B = UITab( title: Item 2B, image: UIImage(systemName: b.circle), identifier: tab.section2.item2b ) { _ in self.createViewController( title: Section 2 - Item
1
0
115
Jan ’26
Reply to UITabGroup child tabs ignoring viewControllerProvider in Sidebar
This is the default behavior for how UITabGroup works. To get enhanced view controller management through a UINavigationController stack, use the UITabGroup.managingNavigationController API. There's a little more description of how that works on the following answer in another post in the forum; or check out the WWDC25 - Make your UIKit app more flexible video.
Topic: UI Frameworks SubTopic: UIKit Tags:
Jan ’26
[iOS26]UITableView drag bug
I encountered a bug with drag-and-drop sorting in ios 26. I created a UITableView for dragging and dropping to adjust the order of the list. However, when I set the height of the cells to a custom height, some cells were not displayed during the dragging process. The tools I use are the official version of Xcode16.1 and the ios 26 emulator And I can also reproduce the same problem on the real device. class ViewController: UIViewController { private let tableView: UITableView = { let tableView = UITableView.init(frame: .zero, style: .grouped) tableView.backgroundColor = .clear tableView.estimatedSectionHeaderHeight = 50 tableView.isEditing = true tableView.showsVerticalScrollIndicator = false tableView.allowsSelectionDuringEditing = true return tableView }() var content: [Int] = [] override func viewDidLoad() { super.viewDidLoad() tableView.register(FTWatchGroupPageCell.self, forCellReuseIdentifier: FTWatchGroupPageCell) tableView.delegate = self tableView.dataSource = self view.addSubview(tableView)
3
0
471
Jan ’26
Problem Saving a ASPasskeyCredentialIdentity
Hi I'm developing an app that autofills Passkeys. The app allows the user to authenticate to their IdP to obtain an access token. Using the token the app fetches from /attestation/options. The app will generate a Passkey credential using a home-grown module - the extension has no involvement, neither does ASAuthorizationSecurityKeyPublicKeyCredentialProvider. I can confirm the passkey does get created. Next the credential is posted to /attestation/results with the response JSON being parsed and used to create a ASPasskeyCredentialIdentity - a sample of the response JSON is attached. Here is my save function: static func save(authenticator: AuthenticatorInfo) async throws { guard let credentialID = Data(base64URLEncoded: authenticator.attributes.credentialId) else { throw AuthenticatorError.invalidEncoding(Credential ID is not a valid Base64URL string.) } guard let userHandle = authenticator.userId.data(using: .utf8) else { throw AuthenticatorError.invalidEncoding(User handle is not a valid UTF-8 string.) } le
1
0
428
Jan ’26
Flutter iOS - EXC_BAD_ACCESS crash on cold start after app was killed, affects ~1-2% of users
Question: How to prevent Flutter app crash on iOS 18 during cold start when iOS traverses view hierarchy before Flutter engine is fully initialized? Help needed: Looking for a way to either delay iOS view hierarchy traversal or ensure Flutter is fully initialized before iOS lifecycle callbacks fire. Problem Summary Our Flutter app crashes on cold start for approximately 1-2% of iOS users. The crash occurs specifically on iOS and only under these exact conditions: When crash happens: User opens app and uses it normally ✅ User minimizes app (goes to background) ✅ User returns to app from background ✅ (works fine) User kills app from app switcher (swipe up to close) User taps app icon to launch again → CRASH ❌ Key observations: Crash is intermittent - app may open on 2nd, 3rd, or 5th attempt 100% reproducible on affected devices by repeating kill→launch cycle ~98% of users have no issues Environment Flutter: 3.38.3 Crash Logs (from Sentry) Crash Type 1: Stack Overflow (most common) OS Version: iOS 18.7.
Topic: UI Frameworks SubTopic: UIKit
2
0
386
Jan ’26
Reply to Provisioning profile missing entitlement
You are correct that the profile from step 3 has no entry for key-value storage. However, the profile from step 5 still uses the old team ID. One thing I realized while looking at this is that I'm still a member of the old team. That team's developer subscription is no longer active but I'm still a member. I almost left it when I realized but decided to only follow the steps you suggested. Step 3 (iCloud not enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.team-identifier => TEAM_ID com.apple.security.application-groups => [ 0 => group.ORGANIZATION ] get-task-allow => false keychain-access-groups => [ 0 => TEAM_ID.* 1 => com.apple.token ] } Step 5 (iCloud re-enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.icloud-container-develo
Jan ’26
Reply to Strange behavior for automounted directory.
How are you creating this directory: /System/Volumes/Data/mnt/ The issue here is that the contents that are visible at / are created by basically merging the contents of the ROSV (Read Only System Volume) and the data volume of its volume group. Within that context, I think there are two ways to create something like a common mnt directory: Bypass these issues by placing the directory inside one of the existing standard directories. For example, create /Library/mnt/. If you specifically want the directory to exist at /, then use the /etc/synthetic.conf config file to create a new directory or symbolic link (see man synthetic.conf) for details. ...but what I would NOT do is simply create a new directory at the root of the Data volume and use it through /System/Volumes/ like this: /System/Volumes/Data/mnt/ The BEST case here is that you only get weird UI issues, since mnt won't be visible at / but will be visible in the path above (which is not a standard path). The worst case is that: I am working on
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
Reply to HELP WITH SUBSCRIPTIONS
If you are using SubscriptionStoreView with groupID overload, make sure the groupID entered is matching with the one in App Store Connect, not the one from your Xcode StoreKit configuration file. In Xcode testing, you need a StoreKit config file, and make sure to select Edit Scheme -> Options tab and select StoreKit Configuration to the correct configuration file. But this does not affect your App Store version. You might need to handle unfinished transactions. Take a look at sample code from WWDC25 on StoreKit 2.
Topic: App & System Services SubTopic: StoreKit Tags:
Jan ’26
Reply to How can I configure the application or environment to suppress this repeated permission prompt?"
Paris and I chatted about your issue and we realised that it has a bit more subtlety than we first thought. First up, it’s not clear whether the app that hits this issue is one of your apps, or whether you’re hitting it an app created by a different third-party developer. We can help you in the first case, but in the second case you should talk to that app’s developer. Assuming that you are the one creating this app, the alert you’re seeing is the result of a feature known as app group container protection. There’s a link to the WWDC video that introduced this feature in Trusted Execution Resources. I also have a bunch of info about app groups in general in my App Groups: macOS vs iOS: Working Towards Harmony post. As explained in that last post, you don’t see this alert if all the apps accessing the app group are from the same team. However, there’s no way to avoid it if you’re trying to access an app group associated with some other team. The example you posted s
Jan ’26
Does accessing multiple Keychain items with .userPresence force multiple biometric prompts despite reuse duration?
Hi everyone, I'm working on an app that stores multiple secrets in the Keychain, each protected with .userPresence. My goal is to authenticate the user once via FaceID/TouchID and then read multiple Keychain items without triggering subsequent prompts. I am reusing the same LAContext instance for these operations, and I have set: context.touchIDAuthenticationAllowableReuseDuration = LATouchIDAuthenticationMaximumAllowableReuseDuration However, I'm observing that every single SecItemCopyMatching call triggers a new FaceID/TouchID prompt, even if they happen within seconds of each other using the exact same context. Here is a simplified flow of what I'm doing: Create a LAContext. Set touchIDAuthenticationAllowableReuseDuration to max. Perform a query (SecItemCopyMatching) for Item A, passing [kSecUseAuthenticationContext: context]. Result: System prompts for FaceID. Success. Immediately perform a query (SecItemCopyMatching) for Item B, passing the same [kSecUseAuthenticationContext: context]. Result: System pro
3
0
569
Jan ’26
Reply to Provisioning profile failed qualification. Profile doesn't support App Groups.
[quote='872694022, Kopyl, /thread/775029?answerId=872694022#872694022, /profile/Kopyl'] my app has nothing to do with iOS and their app groups. [/quote] OK. But my post, App Groups: macOS vs iOS: Working Towards Harmony, is still relevant regardless. The good news is that the situation has both stabilised and improved since you started this thread, and thus I don’t see any impediments to you solving this nicely. To offer specific advice I need to know more about your specific setup. What is your Team ID? What is the Apple ID of your app? And what app group ID are you trying to use? If you’re not comfortable sharing this info publicly, feel free to redact it. For example, for Apple Configurator that info would be: Team ID 4WXS7A4F54 -> 4________4 Apple ID 1037126344 -> 1________4 App group ID K36BKF7T3D.group.com.apple.configurator -> K________D.g___p.c__.a___e.c__________r IMPORTANT I’m looking for the Apple ID of the app, not your Apple ID (now known as an Apple A
Jan ’26
Provisioning profile failed qualification. Profile doesn't support App Groups.
I can't upload my macOS app to app store connect. Each time i try to upload, i see this message: Provisioning profile failed qualification Profile doesn't support App Groups. An empty app without an app group uploads fine, but if i add an app group to it, it does not upload.
10
0
1.4k
Jan ’26
Unable to sync SwiftData model fully using CloudKit
Hey everyone I just ran into an issue where I couldn't sync the model below fully by using CloudKit, enum LinkMapV3_1: VersionedSchema { static let versionIdentifier: Schema.Version = .init(3, 1, 0) static var models: [any PersistentModel.Type] { [AnnotationData.self, GroupData.self, Item.self, Deployment.self, History.self] } // MARK: - Data @Model class AnnotationData { var name: String = var longitude: Double = 0.0 var latitude: Double = 0.0 var order: Int = -1 var level: Int = 1 var detail: String = @Relationship(deleteRule: .nullify, inverse: GroupData.annotation) var groups: [GroupData]? @Relationship(deleteRule: .nullify, inverse: AnnotationData.to) var from: AnnotationData? var to: AnnotationData? var history: History? } // MARK: - History @Model class History { var id: UUID = UUID() var timestamp: Date = Date() @Relationship(deleteRule: .nullify, inverse: AnnotationData.history) var annotations: [AnnotationData]? @Relationship(deleteRule: .nullify, inverse: GroupData.history) var groups
Replies
1
Boosts
0
Views
300
Activity
Jan ’26
Reply to Persisted log entries disappeared?
Each system log entry has time to live (TTL) value. You can see evidence for this in various places within the UI. For example: % sudo log stream … TTL … 0 fseventsd: (libsystem_info.dylib) Resolve user group list … … 7 WindowServer: (SkyLight) [com.apple.SkyLight:KeyboardEvent] kCGSEventKeyUp … AFAIK there’s no supported way to override that, but if you poke around in /System/Library/Preferences/Logging on your Mac it’s not hard to see how it works. WARNING As with all implementation details, there’s no guarantee that this will actually work, or that it hasn’t worked differently in the past, or will work differently in the future. So don’t build knowledge of this into a product that you ship to a wide range of users. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = eskimo + 1 + @ + apple.com
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
UITabGroup child tabs ignoring viewControllerProvider in Sidebar
Hi, I am implementing a sidebar navigation using UITabBarController with the new UITabGroup API on and above iPadOS 18. I’ve encountered an issue where selecting a child UITab within a group does not seem to trigger the child's own viewControllerProvider. Instead, the UITabBarController displays the ViewController associated with the parent UITabGroup. The Issue: In the snippet below, when I tap Item 2A or Item 2B in the iPad sidebar, the app displays the emptyVC (clear background) defined in the section2Group provider, rather than the teal or cyan ViewControllers defined in the individual child tabs. let item2A = UITab( title: Item 2A, image: UIImage(systemName: a.circle), identifier: tab.section2.item2a ) { _ in self.createViewController( title: Section 2 - Item 2A, color: .systemTeal, description: Part of Section 2A group ) } let item2B = UITab( title: Item 2B, image: UIImage(systemName: b.circle), identifier: tab.section2.item2b ) { _ in self.createViewController( title: Section 2 - Item
Replies
1
Boosts
0
Views
115
Activity
Jan ’26
Reply to UITabGroup child tabs ignoring viewControllerProvider in Sidebar
This is the default behavior for how UITabGroup works. To get enhanced view controller management through a UINavigationController stack, use the UITabGroup.managingNavigationController API. There's a little more description of how that works on the following answer in another post in the forum; or check out the WWDC25 - Make your UIKit app more flexible video.
Topic: UI Frameworks SubTopic: UIKit Tags:
Replies
Boosts
Views
Activity
Jan ’26
[iOS26]UITableView drag bug
I encountered a bug with drag-and-drop sorting in ios 26. I created a UITableView for dragging and dropping to adjust the order of the list. However, when I set the height of the cells to a custom height, some cells were not displayed during the dragging process. The tools I use are the official version of Xcode16.1 and the ios 26 emulator And I can also reproduce the same problem on the real device. class ViewController: UIViewController { private let tableView: UITableView = { let tableView = UITableView.init(frame: .zero, style: .grouped) tableView.backgroundColor = .clear tableView.estimatedSectionHeaderHeight = 50 tableView.isEditing = true tableView.showsVerticalScrollIndicator = false tableView.allowsSelectionDuringEditing = true return tableView }() var content: [Int] = [] override func viewDidLoad() { super.viewDidLoad() tableView.register(FTWatchGroupPageCell.self, forCellReuseIdentifier: FTWatchGroupPageCell) tableView.delegate = self tableView.dataSource = self view.addSubview(tableView)
Replies
3
Boosts
0
Views
471
Activity
Jan ’26
Problem Saving a ASPasskeyCredentialIdentity
Hi I'm developing an app that autofills Passkeys. The app allows the user to authenticate to their IdP to obtain an access token. Using the token the app fetches from /attestation/options. The app will generate a Passkey credential using a home-grown module - the extension has no involvement, neither does ASAuthorizationSecurityKeyPublicKeyCredentialProvider. I can confirm the passkey does get created. Next the credential is posted to /attestation/results with the response JSON being parsed and used to create a ASPasskeyCredentialIdentity - a sample of the response JSON is attached. Here is my save function: static func save(authenticator: AuthenticatorInfo) async throws { guard let credentialID = Data(base64URLEncoded: authenticator.attributes.credentialId) else { throw AuthenticatorError.invalidEncoding(Credential ID is not a valid Base64URL string.) } guard let userHandle = authenticator.userId.data(using: .utf8) else { throw AuthenticatorError.invalidEncoding(User handle is not a valid UTF-8 string.) } le
Replies
1
Boosts
0
Views
428
Activity
Jan ’26
Flutter iOS - EXC_BAD_ACCESS crash on cold start after app was killed, affects ~1-2% of users
Question: How to prevent Flutter app crash on iOS 18 during cold start when iOS traverses view hierarchy before Flutter engine is fully initialized? Help needed: Looking for a way to either delay iOS view hierarchy traversal or ensure Flutter is fully initialized before iOS lifecycle callbacks fire. Problem Summary Our Flutter app crashes on cold start for approximately 1-2% of iOS users. The crash occurs specifically on iOS and only under these exact conditions: When crash happens: User opens app and uses it normally ✅ User minimizes app (goes to background) ✅ User returns to app from background ✅ (works fine) User kills app from app switcher (swipe up to close) User taps app icon to launch again → CRASH ❌ Key observations: Crash is intermittent - app may open on 2nd, 3rd, or 5th attempt 100% reproducible on affected devices by repeating kill→launch cycle ~98% of users have no issues Environment Flutter: 3.38.3 Crash Logs (from Sentry) Crash Type 1: Stack Overflow (most common) OS Version: iOS 18.7.
Topic: UI Frameworks SubTopic: UIKit
Replies
2
Boosts
0
Views
386
Activity
Jan ’26
Reply to Provisioning profile missing entitlement
You are correct that the profile from step 3 has no entry for key-value storage. However, the profile from step 5 still uses the old team ID. One thing I realized while looking at this is that I'm still a member of the old team. That team's developer subscription is no longer active but I'm still a member. I almost left it when I realized but decided to only follow the steps you suggested. Step 3 (iCloud not enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.team-identifier => TEAM_ID com.apple.security.application-groups => [ 0 => group.ORGANIZATION ] get-task-allow => false keychain-access-groups => [ 0 => TEAM_ID.* 1 => com.apple.token ] } Step 5 (iCloud re-enabled) Entitlements => { application-identifier => TEAM_ID.com.ORGANIZATION.APP aps-environment => production beta-reports-active => true com.apple.developer.icloud-container-develo
Replies
Boosts
Views
Activity
Jan ’26
Reply to Strange behavior for automounted directory.
How are you creating this directory: /System/Volumes/Data/mnt/ The issue here is that the contents that are visible at / are created by basically merging the contents of the ROSV (Read Only System Volume) and the data volume of its volume group. Within that context, I think there are two ways to create something like a common mnt directory: Bypass these issues by placing the directory inside one of the existing standard directories. For example, create /Library/mnt/. If you specifically want the directory to exist at /, then use the /etc/synthetic.conf config file to create a new directory or symbolic link (see man synthetic.conf) for details. ...but what I would NOT do is simply create a new directory at the root of the Data volume and use it through /System/Volumes/ like this: /System/Volumes/Data/mnt/ The BEST case here is that you only get weird UI issues, since mnt won't be visible at / but will be visible in the path above (which is not a standard path). The worst case is that: I am working on
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to HELP WITH SUBSCRIPTIONS
If you are using SubscriptionStoreView with groupID overload, make sure the groupID entered is matching with the one in App Store Connect, not the one from your Xcode StoreKit configuration file. In Xcode testing, you need a StoreKit config file, and make sure to select Edit Scheme -> Options tab and select StoreKit Configuration to the correct configuration file. But this does not affect your App Store version. You might need to handle unfinished transactions. Take a look at sample code from WWDC25 on StoreKit 2.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to How can I configure the application or environment to suppress this repeated permission prompt?"
Paris and I chatted about your issue and we realised that it has a bit more subtlety than we first thought. First up, it’s not clear whether the app that hits this issue is one of your apps, or whether you’re hitting it an app created by a different third-party developer. We can help you in the first case, but in the second case you should talk to that app’s developer. Assuming that you are the one creating this app, the alert you’re seeing is the result of a feature known as app group container protection. There’s a link to the WWDC video that introduced this feature in Trusted Execution Resources. I also have a bunch of info about app groups in general in my App Groups: macOS vs iOS: Working Towards Harmony post. As explained in that last post, you don’t see this alert if all the apps accessing the app group are from the same team. However, there’s no way to avoid it if you’re trying to access an app group associated with some other team. The example you posted s
Replies
Boosts
Views
Activity
Jan ’26
How can I configure the application or environment to suppress this repeated permission prompt?"
I am attempting to read and write data to an Office Group Container, and I am consistently prompted with the App would like to access data from other apps alert. How can I configure the application or environment to suppress this repeated permission prompt?
Replies
3
Boosts
0
Views
294
Activity
Jan ’26
Does accessing multiple Keychain items with .userPresence force multiple biometric prompts despite reuse duration?
Hi everyone, I'm working on an app that stores multiple secrets in the Keychain, each protected with .userPresence. My goal is to authenticate the user once via FaceID/TouchID and then read multiple Keychain items without triggering subsequent prompts. I am reusing the same LAContext instance for these operations, and I have set: context.touchIDAuthenticationAllowableReuseDuration = LATouchIDAuthenticationMaximumAllowableReuseDuration However, I'm observing that every single SecItemCopyMatching call triggers a new FaceID/TouchID prompt, even if they happen within seconds of each other using the exact same context. Here is a simplified flow of what I'm doing: Create a LAContext. Set touchIDAuthenticationAllowableReuseDuration to max. Perform a query (SecItemCopyMatching) for Item A, passing [kSecUseAuthenticationContext: context]. Result: System prompts for FaceID. Success. Immediately perform a query (SecItemCopyMatching) for Item B, passing the same [kSecUseAuthenticationContext: context]. Result: System pro
Replies
3
Boosts
0
Views
569
Activity
Jan ’26
Reply to Provisioning profile failed qualification. Profile doesn't support App Groups.
[quote='872694022, Kopyl, /thread/775029?answerId=872694022#872694022, /profile/Kopyl'] my app has nothing to do with iOS and their app groups. [/quote] OK. But my post, App Groups: macOS vs iOS: Working Towards Harmony, is still relevant regardless. The good news is that the situation has both stabilised and improved since you started this thread, and thus I don’t see any impediments to you solving this nicely. To offer specific advice I need to know more about your specific setup. What is your Team ID? What is the Apple ID of your app? And what app group ID are you trying to use? If you’re not comfortable sharing this info publicly, feel free to redact it. For example, for Apple Configurator that info would be: Team ID 4WXS7A4F54 -> 4________4 Apple ID 1037126344 -> 1________4 App group ID K36BKF7T3D.group.com.apple.configurator -> K________D.g___p.c__.a___e.c__________r IMPORTANT I’m looking for the Apple ID of the app, not your Apple ID (now known as an Apple A
Replies
Boosts
Views
Activity
Jan ’26
Provisioning profile failed qualification. Profile doesn't support App Groups.
I can't upload my macOS app to app store connect. Each time i try to upload, i see this message: Provisioning profile failed qualification Profile doesn't support App Groups. An empty app without an app group uploads fine, but if i add an app group to it, it does not upload.
Replies
10
Boosts
0
Views
1.4k
Activity
Jan ’26