The App Store's Social Media Checkbox and What It Costs

Two Boolean fields in the App Store Connect API carry the entire weight of a submission requirement that starts in September: socialMedia and socialMediaAgeRestricted.1 The second one costs an entitlement, an API adoption, and a behavioral branch in your app.

Apple announced the requirement on June 8, 2026: “Starting September 2026, you’ll be required to indicate whether your app or game includes social media capabilities in order to submit new versions or updates to the App Store, or for notarization for distribution on alternative app marketplaces.”2 On July 9 Apple shipped the questionnaire change and added one sentence that decides how you should spend the weeks before then: “You can review and answer these questions starting today.”3

TL;DR

  • The declaration is live in App Store Connect right now and becomes mandatory in September 2026, so the gap between available and required is yours to spend on a decision rather than a deadline.23
  • Apple does define “social media capabilities,” in four places, and the three do not match. June scopes it to feeds “that visibly spreads content to many users”; July drops the clause entirely.234
  • The App Store Connect API exposes the answer as two writable Booleans and keeps userGeneratedContent and messagingAndChat as separate questions with separate rating floors. Social media is a new axis, not a rename.14
  • Staying out of the under-13 Social Media bucket takes three conditions, not one. Apple’s news post names the Declared Age Range API; App Store Connect Help adds that under-13 users get no access at all and that “Only age-appropriate UGC is delivered.”24
  • The Declared Age Range API ships on iOS, iPadOS, Mac Catalyst, and macOS, and nowhere else.5 A tvOS, visionOS, or watchOS app still answers the question in September, and the documented way to qualify for the carve-out does not exist on its platform.

The one change in this cycle that a calendar fires

Every other breaking change I have covered this cycle waits for you to move first. The launch screen requirement triggers on building against the iOS 27.0 SDK. The @State macro triggers on opening the project in Xcode 27. The On Demand Resources deprecation triggers a compiler warning you can ignore indefinitely. Leave your toolchain alone and none of them reaches you.

The social media declaration reaches you anyway, because Apple bound it to a month and to an act you were performing regardless. A one-line bug fix rides the same submission pipeline as a feature release, and in September that pipeline asks the question.

The scope is narrow and worth reading exactly. The requirement covers “new versions or updates to the App Store” and “notarization for distribution on alternative app marketplaces.”2 July repeats the pair as “new apps or updates to the App Store” and “apps for notarization for alternative distribution.”3 Neither announcement mentions an SDK version, a deployment target, or a platform. Apps already live keep selling. The gate stands at the door of the next submission.

What the answer costs you is placement in a bucket parents can cap. Time Allowances arrives this fall alongside Ask to Browse, Schedules, and a redesigned Screen Time, giving parents “more flexible ways to manage the time their kids spend in apps across categories, including Entertainment, Games, and Social Media,” with age-tailored guidance as the starting point.16 Entertainment and Games placement follows your App Store Connect category. Social Media placement follows the questionnaire answer alone, “regardless of the category selected in App Store Connect.”2 A puzzle game with a feed lands in the category a parent throttles first, whatever the product page says.

Apple defines the term, and the definitions drift

The usual failure mode with a policy question is guessing at an undefined word. Apple published a definition, which narrows the guessing, and published it four times with different edges.

June frames it inclusively: “This includes the ability to redistribute, amplify, or interact with user-generated content through a social feed or similar discovery method that visibly spreads content to many users.”2

July frames it definitionally, and shorter: “A social media capability is defined as the ability to redistribute, amplify, or interact with user-generated content through a social feed or similar discovery method.”3 The qualifier about visibly spreading content to many users is gone.

App Store Connect Help carries the longest version, keeps the qualifier, and adds examples: “Redistribution, amplification, or interaction with user-generated content through a social feed or similar discovery method that visibly spreads content to many users. May include: users reposting, liking, commenting, reacting, or making user-generated content more visible through a social feed, community, search, or other sharing and discovery tools.”4

Three of the four require broad visible spread. One does not, and for an app near the boundary the difference decides the answer. I would treat the Help page as controlling, because the questionnaire links to it and news posts age out; reading it that way is my inference, not Apple’s instruction. “May include” matters too: Apple lists examples rather than closing the set, so a capability resembling none of the five listed verbs can still qualify.

What sharpens the boundary is the company the descriptor keeps. Apple defines User-Generated Content separately, as “the broad distribution of content created by users as a component of the app’s intended user experience,” and Messaging and Chat separately again, as users who “can directly communicate with one another through features within the app.”4 The App Store Connect API preserves the split exactly, carrying userGeneratedContent, messagingAndChat, and socialMedia as three independent Booleans.1

Ratings diverge just as sharply. User-generated content and messaging both appear in Apple’s 4+ definition. Social media appears first at 13+.4 An app can host user content, let people message each other, and still rate 4+; add a feed that amplifies that same content to strangers and the floor jumps nine years. Both social media descriptors live only in the rating scheme for OS 26 and later, and Apple’s table for earlier OS versions carries no social media entry at any rating.4

The field is answerable today

Three Apple artifacts confirm the questionnaire change already shipped, which is the practical point of the whole post.

Apple’s July 9 announcement says the questionnaire “now includes questions about your app’s social media capabilities” and invites you to answer immediately.3 The App Store Connect API documents socialMedia as “A Boolean value that indicates whether the app includes social media features” and socialMediaAgeRestricted as “A Boolean value that indicates whether the app’s social media features are age restricted.”1 Apple’s published OpenAPI specification carries both as writable, nullable Booleans.1 They sit next to ageAssurance, added by Apple’s earlier questionnaire overhaul, whose definition names “declared age range API” as a qualifying mechanism.415 Adopting the carve-out therefore lands you inside that definition too, which reads to me as a second question to revisit rather than one to leave alone.

Anyone automating submissions should learn the shape now: read the declaration at GET /v1/appInfos/{id}/ageRatingDeclaration, write it at PATCH /v1/ageRatingDeclarations/{id}, and pass either Boolean to the fields[ageRatingDeclarations] parameter.1 A pipeline that builds age rating payloads by hand keeps passing until the day it does not.

One consequence surfaced only in July: “Apps with these capabilities will display a new Social Media content descriptor on their App Store product page.”3 Answering yes changes your listing, not only a parental-controls bucket.

So open the questionnaire this week and read the rating App Store Connect computes. Doing so commits nothing until you submit, and converts a deadline into a decision you have already made.

The carve-out has three conditions, not one

Apple’s news post makes the under-13 path sound like a single API call: “If you indicate that your app or game includes social media capabilities but they are disabled for anyone under 13, it won’t be included in the Time Allowance category for Social Media for users under 13… You’ll also need to use the Declared Age Range API (at a minimum) to check users’ age ranges.”2

App Store Connect Help states the same descriptor as three requirements: “Users under 13 don’t have access to social media capabilities. At a minimum, the Declared Age Range API is called to check users’ age ranges before enabling social media features. Only age-appropriate UGC is delivered.”4

The third sentence is the one nobody quotes. “Only age-appropriate UGC is delivered” is a moderation obligation with no API attached, no threshold published, and no test you can run. Apple defines neither age-appropriate nor the delivery mechanism. A team that adopts the age gate and ships the same unfiltered feed to a 12-year-old has met one condition of three by the Help page’s own text.

Note also what the carve-out does not buy. Apple’s own sentence continues that such an app “will remain in the Social Media category for users 13 and above.”2 The exemption covers under-13 users only, so a 14-year-old still meets whatever cap a parent set on Social Media.

The rating tables carry a tension I could not resolve. Apple’s news post says the restricted option leaves your “overall responses in the age rating questionnaire” to determine the rating, which “may result in a rating lower than 13+.”2 Yet Apple’s global table lists both “Social media” and “Social media disabled for users under 13” under Capabilities at 13+, and the regional tables place both together at 16+ in Australia, A16 in Brazil, 15+ in Korea, and 16+ in Vietnam.4 Read the way every other row reads, where a descriptor sets a floor, the restricted option looks like a 13+ floor too. Apple reconciles nothing, and I am not guessing which document the calculator implements. Select the option in the live questionnaire, read the computed rating, and trust the calculator over both.

Following the checkbox down into the app

Say you take the carve-out. You enable the Declared Age Range capability on the target in Xcode, which adds the com.apple.developer.declared-age-range entitlement: “A Boolean value indicating whether your app may request a person’s age range.”6 Then you call the API with the thresholds you care about, which in SwiftUI arrives as an environment action:5

Apple attaches a placement rule to that action: use it “in response to user interactions,” and Apple’s own sample puts the call behind a button.5 The request can present a system sheet, so firing it from .task or onAppear throws a permission prompt at someone who has not asked for anything yet. Hang it on the tap that enters the gated surface instead.

import SwiftUI
import DeclaredAgeRange

@available(iOS 26.0, *)
struct SocialFeedGate: View {
    @Environment(\.requestAgeRange) private var requestAgeRange
    @State private var feedEnabled = false
    @State private var checking = false

    var body: some View {
        if feedEnabled {
            FeedView()
        } else {
            Button("Open community feed") {
                checking = true
                Task {
                    feedEnabled = await resolveGate()
                    checking = false
                }
            }
            .disabled(checking)
        }
    }

    private func resolveGate() async -> Bool {
        guard let response = try? await requestAgeRange(ageGates: 13) else {
            return false          // AgeRangeService.Error: your default, not Apple's
        }
        guard case let .sharing(ageRange) = response else {
            return false          // .declinedSharing
        }
        guard let lowerBound = ageRange.lowerBound else {
            return false          // nil lower bound means below your lowest gate
        }
        return lowerBound >= 13
    }
}

Four details in that listing decide whether the gate holds.

You get at most three gates. Both overloads stop at three thresholds: the SwiftUI action is callAsFunction(ageGates threshold1: Int, _ threshold2: Int? = nil, _ threshold3: Int? = nil), and the UIKit method adds only the presentation anchor.7 Four buckets is the ceiling. Need 13 for Apple’s rule and 16 for Australian law, and you have spent three of four before designing anything.

A nil lower bound is the answer, not an error. AgeRange.lowerBound and upperBound are both Int?, and Apple states the nil case plainly: “When this value is nil, the person’s age range is below your lowest specified age, indicating they are under your minimum age requirement.”8 Code that unwraps optimistically inverts the gate on exactly the population it exists to protect.

Declining is a real branch, and Apple does not say what to do with it. AgeRangeService.Response carries .sharing(range:) and .declinedSharing.9 In some regulated regions “the system automatically provides the person’s age range” and people “can’t decline sharing”; in nonregulated regions “If the person declines, you receive a declinedSharing response.”10 A decline is indistinguishable from an adult who values privacy: treat it as under-13 and you block grown-ups, treat it as adult and you open the gate you promised to close. Apple leaves the default to you. I would fail closed and say so in the interface.

Your gates are advisory. The system “may return age ranges that override the age gates you specify based on the person’s location and applicable regulations,” and when local regulations require specific gates, “the returned age range reflects regulatory requirements rather than the bounds of your age gates.”7 Code assuming the returned bounds match the request misbehaves first in the strictest jurisdictions.

One more behavior belongs in the design, and I expect it to generate support tickets. Apple caches the answer: “When a person’s age crosses into a new range (for example, when they turn 13), the API continues returning the previous range until the anniversary of their original declaration.”10 A child who turns 13 on Monday can keep reading as under-13 for months. The remedy is a Settings path the user walks alone, under their name, then Personal Information, then Age Range for Apps.10 Any app gating on 13 needs that instruction in its own UI, because nobody finds it otherwise.

Two smaller details matter at design time. isEligibleForAgeFeatures reports whether the person sits in a region requiring age assurance, and on macOS it “returns false because the system doesn’t require Age Assurance for the person or device,” so a Mac app calls requestAgeRange directly instead.11 And AgeRangeDeclaration, which reports how the age was set, has already churned: six granular cases at 26.2 naming payment, government ID, and other methods for person and guardian, collapsed into a single confirmed case at 26.5.12 Ask which method verified a user and the current API no longer says.

Then there is the platform floor, which the availability metadata states and no prose source does. Declared Age Range publishes iOS 26.0, iPadOS 26.0, Mac Catalyst 26.0, and macOS 26.0, and nothing else: no tvOS row, no visionOS row, no watchOS row.5 Time Allowances lands on the same families, “iOS 27, iPadOS 27, and macOS 27, or later,” while the declaration requirement carries no platform qualifier at all.23 A tvOS or visionOS app with a social feed therefore answers in September and cannot meet the documented minimum of the carve-out, because the API it names does not exist there. Reading the mismatch as a gap rather than an intentional exemption is my inference; Apple has published nothing either way.

What eight of my own apps declare

I ran the survey before writing about anyone else’s code: eight Xcode projects, 491 Swift files.13 Zero contain CKShare, UICloudSharingController, a shared or public CloudKit database, GameKit, or any Declared Age Range symbol. No app in the set moves content from one person to another at all. Four projects hold no flagged surface whatsoever. The other four hold surfaces a careful person could hesitate over, and they come in three kinds worth reasoning through out loud.

Get Bananas has a shared shopping list, and “shared” is narrower than it sounds. The app writes a JSON document into an iCloud ubiquity container and reads it back on iPhone, Apple Watch, and Mac, with com.apple.developer.icloud-services set to CloudDocuments and no CloudKit sharing anywhere in the project.13 The list is shared across one person’s devices, not between people, so nothing redistributes and there is no second user to spread to. The answer flips the day I add CKShare for household collaboration, and even then it flips to user-generated content rather than social media, because a two-person grocery list has no feed and no discovery surface. The line worth watching sits further out: shared lists plus a public template gallery plus likes is a feed with extra steps.

Three apps present a share sheet, and a share sheet is not a social feature. Get Bananas, Water, and ResumeGeni’s iOS app each wrap UIActivityViewController to hand the user’s own content to whatever app they pick.13 The content leaves for Messages or Mail and never returns to a surface my app controls, and Apple’s definition turns on redistribution “through a social feed or similar discovery method,” which a system share sheet is not.4 The reasoning covers a large slice of the App Store: exporting is not publishing.

Watch Connectivity looks like messaging and is not. Get Bananas and Reps both use WCSession, which moves data between a phone and a watch paired to the same person, while Apple’s Messaging and Chat descriptor requires that “Users can directly communicate with one another.”413 One user sits on both ends.

The null result generalizes, which is the part worth borrowing. Every app in the set stores content for the person who made it and shows it back to that same person. The questionnaire asks something else entirely: does your app take one person’s content and put it in front of others through something that spreads. Trackers, timers, and study tools answer no by architecture rather than by policy reading. The apps that have to think are the ones with any surface where users see each other’s work.

Deployment targets are the other number to check first. Six of the seven projects with an iOS target sit at iOS 26.0 or later; Ace Citizenship still declares 17.0 and 17.5 on some of its targets.13 Anything below 26.0 cannot call the API at all, which removes the carve-out and leaves the plain declaration as the only accurate answer.

The platform gap shows up in the same survey, and more widely than the version one. Four of the eight projects declare xros xrsimulator in SUPPORTED_PLATFORMS: Reps, Return, Water, and Yawara. Reps adds appletvos appletvsimulator and ships a separate watchos watchsimulator target; Return and Banana List carry watchOS targets too.13 Declared Age Range publishes availability for iOS 26.0, iPadOS 26.0, Mac Catalyst 26.0, and macOS 26.0, and no row for tvOS, visionOS, or watchOS.5 Every one of those targets owes the September declaration, and on any of them an answer of yes puts the carve-out out of reach, because the API the carve-out depends on does not ship there.

A caution on method, since I got this wrong on the first pass. XROS_DEPLOYMENT_TARGET appears in projects that have no visionOS destination at all, because Xcode writes the setting into configurations regardless. ResumeGeni carries XROS_DEPLOYMENT_TARGET = 26.2 and builds iphoneos iphonesimulator only.13 Read SUPPORTED_PLATFORMS, not the deployment-target keys, or you will count platforms your app does not ship.

Where the answer stops being technical

Apple attaches a disclaimer to the Declared Age Range documentation worth reading twice: the data “is based on information declared by an end user, or their parent or guardian,” and “You are solely responsible for ensuring compliance with associated laws or regulations that may apply to your app.”14

That sentence draws the line the post stops at. Apple’s questionnaire produces a rating and a Time Allowance bucket, and compliance with nothing. Australian law has required certain social media platforms to prevent people under 16 from holding an account since December 10, 2025, and Apple’s guidance on that law names the Declared Age Range API as one tool among five.15 Questionnaire and statute overlap without lining up: one asks about 13, the other about 16, and you have three gates to cover both.

Whether your app is a social media platform under a given law is a question for a lawyer in that jurisdiction. Whether it has social media capabilities under Apple’s questionnaire is yours, answerable today against Apple’s published definition.

FAQ

Is the social media question live in App Store Connect right now?

Yes. Apple’s July 9, 2026 announcement states that the questionnaire “now includes questions about your app’s social media capabilities” and that “You can review and answer these questions starting today.”3 The App Store Connect API confirms it independently, documenting socialMedia and socialMediaAgeRestricted as attributes of the AgeRatingDeclaration resource, both writable through PATCH /v1/ageRatingDeclarations/{id}.1 Answering now commits nothing: responses bind when you submit, and September 2026 is when submitting without them stops working.2

Does Apple define “social media capabilities”?

Yes, in four places, with two different scopes. App Store Connect Help gives the fullest version, requiring “Redistribution, amplification, or interaction with user-generated content through a social feed or similar discovery method that visibly spreads content to many users,” then lists reposting, liking, commenting, reacting, and boosting visibility as examples.4 June carries the same scoping clause; July drops it.23 Because the examples are illustrative rather than exhaustive, you still classify your own app, and I would classify it against the Help page.

My app has user-generated content. Is that automatically social media?

No. Apple keeps them as separate questions with separate definitions and separate rating consequences. User-Generated Content covers “the broad distribution of content created by users as a component of the app’s intended user experience,” and appears in Apple’s 4+ definition.4 Social media requires redistribution, amplification, or interaction through a feed or comparable discovery surface, and appears first at 13+.4 The API mirrors the split with independent userGeneratedContent and socialMedia Booleans.1 An app where people create content only they see is neither.

What does the under-13 option actually require me to build?

Three things, and only the second is an API. App Store Connect Help requires that under-13 users have no access to social media capabilities, that “At a minimum, the Declared Age Range API is called to check users’ age ranges before enabling social media features,” and that “Only age-appropriate UGC is delivered.”4 So you add the com.apple.developer.declared-age-range entitlement, call requestAgeRange with 13 among your gates before any social surface appears, branch on the response including the decline case Apple leaves undefined, and separately keep the content you deliver to minors age appropriate.56 The API caps you at three gates and caches a person’s range until the anniversary of their declaration, so a user who turns 13 keeps reading as younger until they update Settings.710

Key Takeaways

For iOS developers: - Answer the questionnaire this week rather than in September. The field is live, the responses bind only at submission, and reading the computed rating settles the 13+ question that neither announcement resolves cleanly.34 - If you take the under-13 carve-out, budget for three conditions rather than one API call, and write the decline branch deliberately. .declinedSharing looks identical to a privacy-minded adult, and Apple publishes no guidance on which way to fail.49

For teams on tvOS, visionOS, or watchOS: - Check availability before you plan. Declared Age Range publishes iOS, iPadOS, Mac Catalyst, and macOS rows and nothing else, so the carve-out’s documented minimum is unavailable on your platform while the September declaration still applies to your submission.25 - The same gap catches any target below iOS 26.0 for a different reason: no API, no carve-out, and the plain declaration as the only accurate answer.5

For release managers: - Treat the date as the trigger, unlike the rest of this cycle. The launch screen key and the @State macro fire on an SDK and a toolchain you control; September fires on a submission you were making anyway.2 - Route the answer past whoever owns the product page. Declaring social media capabilities adds a Social Media content descriptor to your App Store listing, a consequence Apple disclosed only in July.3


The 27 cycle keeps sorting its changes by what sets them off: a build setting, a toolchain, a compiler warning, and now a calendar. For the deprecation in the same cycle with the weakest teeth and the largest migration behind it, see On Demand Resources and what Background Assets costs. The full series hub is the Apple Ecosystem Series.

References


  1. Apple, AgeRatingDeclaration.Attributes, App Store Connect API. Source of “A Boolean value that indicates whether the app includes social media features” (socialMedia), “A Boolean value that indicates whether the app’s social media features are age restricted” (socialMediaAgeRestricted), “A Boolean value that indicates whether the app uses age assurance to verify a person’s age” (ageAssurance), and the separate userGeneratedContent and messagingAndChat attributes. Endpoint paths, writability, and the sparse-fieldset values verified against Apple’s published App Store Connect OpenAPI specification, version 4.4.1, downloaded July 25, 2026 with an archive timestamp of July 15, 2026: AgeRatingDeclaration carries 29 attributes, AgeRatingDeclarationUpdateRequest exposes all 29 as nullable writable fields including socialMedia, socialMediaAgeRestricted, and ageAssurance, and the paths are GET /v1/appInfos/{id}/ageRatingDeclaration and PATCH /v1/ageRatingDeclarations/{id}

  2. Apple, Introducing Time Allowances, Apple Developer News, June 8, 2026. Source of the September requirement (“Starting September 2026, you’ll be required to indicate whether your app or game includes social media capabilities in order to submit new versions or updates to the App Store, or for notarization for distribution on alternative app marketplaces”), the platform list (“New Time Allowances in iOS 27, iPadOS 27, and macOS 27, or later”), the June definition (“This includes the ability to redistribute, amplify, or interact with user-generated content through a social feed or similar discovery method that visibly spreads content to many users”), the advance notice of the questionnaire change (“Starting July 2026, the age rating questionnaire will be updated to let you indicate whether your app or game includes social media capabilities”), the 13+ minimum for the plain declaration, and the restricted option including “You’ll also need to use the Declared Age Range API (at a minimum) to check users’ age ranges” and “If you select this option, your overall responses in the age rating questionnaire determine your age rating and may result in a rating lower than 13+.” Also the source of “Time Allowance categories are different from categories for user discovery on the App Store.” Verified verbatim against the page HTML on July 25, 2026. 

  3. Apple, Age rating questionnaire now includes social media questions, Apple Developer News, July 9, 2026. Source of the shipped questionnaire change (“the age rating questionnaire in App Store Connect now includes questions about your app’s social media capabilities”), the shortened definition (“A social media capability is defined as the ability to redistribute, amplify, or interact with user-generated content through a social feed or similar discovery method”), the product page consequence (“Apps with these capabilities will display a new Social Media content descriptor on their App Store product page”), the availability statement (“You can review and answer these questions starting today”), and the restated September scope (“beginning in September 2026, responses will be required when submitting new apps or updates to the App Store, or when submitting apps for notarization for alternative distribution”). Verified verbatim against the page HTML on July 25, 2026. Searching Apple Developer News on the same date returned no item later than this one on Time Allowances, age ratings, or social media declarations. 

  4. Apple, Age ratings values and definitions, App Store Connect Help. Source of the Capabilities definitions quoted here for Social Media, Social Media Disabled for Users Under 13 (“Users under 13 don’t have access to social media capabilities. At a minimum, the Declared Age Range API is called to check users’ age ranges before enabling social media features. Only age-appropriate UGC is delivered”), User-Generated Content, and Messaging and Chat, plus the In-App Controls definition of Age Assurance. Also the source of the rating tables, all of which apply to devices running a minimum of iOS 26, iPadOS 26, macOS Tahoe 26, tvOS 26, visionOS 26, and watchOS 26. Under the “Age rating values” heading, Apple’s global table lists User-generated content, Messaging and chat, Advertising, Parental controls, and Age assurance at 4+, and lists both Social media and Social media disabled for users under 13 under Capabilities at 13+. The four regional tables place both social media descriptors together at 16+ under “Australia age rating values,” A16 under “Brazil age rating values,” 15+ under “Republic of Korea age rating values,” and 16+ under “Vietnam age rating values.” The separate “Age ratings on OS versions earlier than 26” section carries no social media descriptor at any rating. Read from the page HTML on July 25, 2026. 

  5. Apple, Declared Age Range, framework documentation. Availability: iOS 26.0, iPadOS 26.0, Mac Catalyst 26.0, and macOS 26.0, with no tvOS, visionOS, or watchOS row. Source of the framework overview (“Use the Declared Age Range API to request that people share their age range with your app”) and the Family Sharing behavior where a parent, guardian, or Family Organizer can “always share a child’s age information with your app, ask the child every time, or never share their age information.” The SwiftUI environment action is documented at DeclaredAgeRangeAction, and the @Environment(\.requestAgeRange) usage shown in this article’s code sample is Apple’s own, from the example on AgeRangeService. Availability read from Apple’s documentation JSON on July 25, 2026, since the HTML renders through JavaScript. 

  6. Apple, com.apple.developer.declared-age-range, Entitlements reference. “A Boolean value indicating whether your app may request a person’s age range.” Availability: iOS 26.0, iPadOS 26.0, and macOS 26.0. Apple’s instruction is to add it “by enabling the Declared Age Range capability on your target in Xcode.” Note that the entitlement page publishes no Mac Catalyst row while the framework does; the discrepancy is in Apple’s metadata and I have not tested which is authoritative. 

  7. Apple, callAsFunction(ageGates:::) on DeclaredAgeRangeAction, and requestAgeRange(ageGates:::in:) on AgeRangeService, Declared Age Range. The SwiftUI action declares func callAsFunction(ageGates threshold1: Int, _ threshold2: Int? = nil, _ threshold3: Int? = nil) async throws -> AgeRangeService.Response; the UIKit method declares the same three thresholds plus in viewController: UIViewController. Three thresholds is the cap on both. The UIKit page is also the source of the regional override: “The system may return age ranges that override the age gates you specify based on the person’s location and applicable regulations. When local regulations require specific age gates, the returned age range reflects regulatory requirements rather than the bounds of your age gates.” The action is available on iOS 26.0, iPadOS 26.0, Mac Catalyst 26.0, and macOS 26.0; the in viewController: overload lists iOS 26.0, iPadOS 26.0, and Mac Catalyst 26.0, with macOS served by the NSWindow variant. 

  8. Apple, AgeRangeService.AgeRange and lowerBound, Declared Age Range. Source of the privacy framing (“Rather than receiving an exact age, you receive age range bounds that correspond to your specified age gates”), the property declarations var lowerBound: Int? and var upperBound: Int?, both introduced at iOS 26.0, and the nil semantics quoted here: “When this value is nil, the person’s age range is below your lowest specified age, indicating they are under your minimum age requirement. When the value is present, it represents the lowest age that the person meets or exceeds.” Apple’s worked example on the same page: with age gates of 13, 16, and 18, a lowerBound of 16 means the person is at least 16 “but may or may not be 18 or older.” The structure also exposes ageRangeDeclaration and activeParentalControls

  9. Apple, AgeRangeService.Response, Declared Age Range. Two cases: sharing(range:), which “Contains the person’s shared age range information,” and declinedSharing, which “Indicates the person declined to share their age range with your app.” Apple publishes no guidance on which way an app should default when a person declines; the recommendation to fail closed and disclose the behavior in the interface is mine. 

  10. Apple, Requesting people’s age range information in your app, Declared Age Range. Source of the caching behavior (“The system protects privacy by caching age range responses. When a person’s age crosses into a new range (for example, when they turn 13), the API continues returning the previous range until the anniversary of their original declaration”), the Settings remedy (Settings on iPhone or iPad, or System Settings on Mac, then the person’s name, then Personal Information, then Age Range for Apps), the regulated-region behavior where “the system automatically provides the person’s age range” and people “can’t decline sharing,” and the nonregulated-region behavior (“If the person declines, you receive a declinedSharing response”). 

  11. Apple, isEligibleForAgeFeatures, Declared Age Range. var isEligibleForAgeFeatures: Bool { get async throws }, available from iOS 26.2, iPadOS 26.2, Mac Catalyst 26.2, and macOS 26.2. Source of “In macOS, isEligibleForAgeFeatures returns false because the system doesn’t require Age Assurance for the person or device. However, you can still call requestAgeRange in macOS to get the declared age range.” 

  12. Apple, AgeRangeService.AgeRangeDeclaration, Declared Age Range. Current cases: selfDeclared and guardianDeclared (iOS 26.0) and confirmed (iOS 26.5), the last described as “Indicates a user’s age range was set using a scrutinized method, like a credit card or government ID.” Apple’s documentation groups six further cases under a Deprecated heading: paymentChecked, governmentIDChecked, checkedByOtherMethod, and the three guardian equivalents, each introduced at iOS 26.2. Availability read from Apple’s documentation JSON on July 25, 2026; the individual case pages carry no deprecatedAt version in their platform metadata, so the deprecation is stated by the documentation’s own grouping rather than by an availability annotation. 

  13. Author’s survey of eight Xcode projects on macOS 26.5.2 with Xcode 26.6 (build 17F113), July 25, 2026. Project directories under ~/Projects, named exactly because two of them are easy to confuse: Banana List (shipping as Get Bananas), Reps, Return, Ace-Citizenship, Water, Yawara, Cels, and ResumeGeniApp, which is the SwiftUI iOS app and not the separate four-file ResumeGeni Safari web extension project sitting beside it. Swift file counts excluding build, DerivedData, .build, Pods, .git, and worktrees: 55, 77, 57, 26, 34, 143, 29, and 70 respectively, totalling 491. Searched every Swift file, entitlements file, and property list for CKShare, UICloudSharingController, CKAllowedSharingOptions, sharedCloudDatabase, publicCloudDatabase, GKLeaderboard, GKLocalPlayer, GKMatch, MFMessageComposeViewController, MSMessagesAppViewController, DeclaredAgeRange, AgeRangeService, requestAgeRange, and declared-age-range. Zero matches on every pattern in every project. UIActivityViewController appears in Get Bananas, Water, and ResumeGeni’s iOS app; WCSession appears in Get Bananas and Reps; ASAuthorizationAppleID appears in ResumeGeni’s iOS app only. Get Bananas persists its list as JSON in an iCloud ubiquity container reached through FileManager.default.url(forUbiquityContainerIdentifier:), with com.apple.developer.icloud-services set to CloudDocuments in its entitlements and no CloudKit sharing anywhere in the project. Deployment targets read from each project.pbxproj: seven projects declare IPHONEOS_DEPLOYMENT_TARGET (Get Bananas 26.0, Reps 26.0 and 26.2, Return 26.1, Water 26.0, Yawara 26.5, ResumeGeni’s iOS app 26.2, and Ace Citizenship 17.0, 17.5, and 26.1 across its targets), while Cels declares only MACOSX_DEPLOYMENT_TARGET = 26.0 and ships no iOS target. Platform values read from each project’s SUPPORTED_PLATFORMS build setting rather than from deployment-target keys; the eight are Blake’s shipping App Store projects. 

  14. Apple, Declared Age Range, framework overview, Important aside: “Data from the Declared Age Range API is based on information declared by an end user, or their parent or guardian, and may be confirmed using a payment method (like a credit card), government ID, or another method. You are solely responsible for ensuring compliance with associated laws or regulations that may apply to your app.” 

  15. Apple, New Requirements for Social Media Apps in Australia, Apple Developer News, December 8, 2025. Source of the Australian requirement (“Beginning December 10, 2025, a new Australian law will require certain social media platforms operating in Australia to prevent people under 16 from having a social media account”) and of the five tools Apple lists in response: the Declared Age Range API, the App Store app description, the in-app controls shown on the product page, a higher self-selected minimum age rating, and an Age Suitability URL. Apple states that “Impacted developers are responsible for making sure they follow the requirements of the new law.” Also the source for dating the age assurance question earlier than the social media one: “This year, Apple updated the age ratings questionnaire that is required for all apps. The update included adding new questions about in-app controls, such as the presence of age assurance and parental controls.” 

  16. Apple, Apple previews new child safety features, Apple Newsroom, June 8, 2026. Source of the user-facing description of Time Allowances, which ships alongside Ask to Browse, Schedules, and a redesigned Screen Time: “Time Allowances give parents more flexible ways to manage the time their kids spend in apps across categories, including Entertainment, Games, and Social Media. When setting Time Allowances, parents are provided with guidance, based on expert research, that’s tailored to a child’s age.” 

相關文章

On Demand Resources Is Deprecated: What Background Assets Costs

Apple deprecated ODR in 13 words. The replacement forks three ways, sets an iOS 26 floor, and hands you back the disk ma…

25 分鐘閱讀

The @State Macro: What Xcode 27 Stops Compiling

Xcode 27 reimplements SwiftUI's @State as a Swift macro. The break lands on toolchain upgrade, not deployment target, an…

20 分鐘閱讀