WWDC 2025 – Deliver age-appropriate experiences in your app



This content originally appeared on DEV Community and was authored by ArshTechPro

Ages description
Apple’s commitment to child safety has reached new heights with the introduction of the Declared Age Range API in iOS 26. This framework enables developers to create tailored, age-appropriate experiences while maintaining user privacy through intelligent age range detection rather than exact birth date collection.

Key Background Updates in 2025

February 2025: Apple released “Helping Protect Kids Online” white paper

  • Outlined comprehensive approach to digital child safety
  • Emphasized privacy-first design principles

March 2025: Streamlined child setup flow launched

  • Child-appropriate default settings activated automatically
  • Parents can complete account setup at their convenience

iOS 26 Major Changes:

  • Ability to correct child account ages if previously set incorrectly
  • App Store age ratings expanded to five categories: 4+, 9+, 13+, 16+, 18+
  • Introduction of Declared Age Range API

Core Framework Principles

Privacy-First Age Detection

  • Apps request age ranges, not exact birth dates
  • Users control what information to share
  • Regional maximum age limits automatically applied
  • Adult age determined by regional requirements

Flexible Age Range Configuration

  • Up to 3 different ages per request
  • Results in 4 distinct age ranges
  • Minimum 2-year duration per range
  • Customizable based on app requirements

User Experience Flow

AGE description

Age Range Examples

App requests ages 13 and 16:

  • Olivia (14): Can declare 13-15 range
  • Emily (9): Can share “12 or under”
  • Ann (42): Can share “16 or over”

Three Sharing Settings

Always Share:

  • Automatically returns requested age range
  • Notifications appear for new information reveals

Ask First:

  • Prompts user for each sharing decision
  • Default setting for most users

Never Share:

  • Automatically declines all age requests
  • No prompts displayed to users

Implementation Guide

Setup Requirements

  1. Add Capability: Navigate to Signing & Capabilities → Add Declared Age Range capability
  2. Environment Setup: Configure window environment for multi-window apps (iPad/Mac)

Basic Implementation

import SwiftUI
import DeclaredAgeRange

struct ContentView: View {
    @State var advancedFeaturesEnabled = false
    @Environment(\.requestAgeRange) var requestAgeRange

    var body: some View {
        VStack {
            Button("Advanced Features") {}
                .disabled(!advancedFeaturesEnabled)
        }
        .task {
            await requestAgeRangeHelper()
        }
    }

    func requestAgeRangeHelper() async {
        do {
            let ageRangeResponse = try await requestAgeRange(ageGates: 16)
            switch ageRangeResponse {
            case let .sharing(range):
                if let lowerBound = range.lowerBound, lowerBound >= 16 {
                    advancedFeaturesEnabled = true
                }
            case .declinedSharing:
                // Handle declined sharing
                break
            }
        } catch AgeRangeService.Error.invalidRequest {
            // Handle invalid request (e.g., age range < 2 years)
        } catch AgeRangeService.Error.notAvailable {
            // Handle device configuration issues
        }
    }
}

Advanced Features

Age Range Declaration Types

  • guardianDeclared: Children and teens in iCloud Family
  • selfDeclared: Teens outside iCloud Family and adults

Parental Controls Integration

case let .sharing(range):
    if range.activeParentalControls.contains(.communicationLimits) {
        // Implement communication restrictions
        // Reference: "Enhance child safety with PermissionKit"
    }

Privacy Protection Mechanisms

Anniversary-Based Updates

  • New age information revealed only on declaration anniversary
  • Prevents birth date inference through frequent requests
  • Manual cache clearing available in Settings

Cache Management

  • System-level response caching prevents excessive prompting
  • Cross-device synchronization (iPhone ↔ Mac)
  • User-controlled cache clearing in Age Range for Apps settings

Error Handling Best Practices

Common Error Types

invalidRequest: Developer-side issues

  • Age ranges less than 2 years
  • Invalid parameter configurations

notAvailable: Device configuration problems

  • User not signed into Apple Account
  • Regional restrictions

Robust Error Implementation

do {
    let response = try await requestAgeRange(ageGates: [13, 16])
    // Handle response
} catch AgeRangeService.Error.invalidRequest {
    // Fix request parameters
} catch AgeRangeService.Error.notAvailable {
    // Guide user to proper device setup
} catch {
    // Handle unexpected errors
}

Complementary Safety Tools

Sensitive Content Analysis API

  • Real-time nudity detection in images/videos
  • iOS 26: Extended to live streaming video calls
  • Automatic content filtering capabilities

Screen Time Framework

  • Web usage supervision tools
  • Parental oversight integration

Family Controls

  • Custom parental control implementation
  • Device-level restriction management

Key Takeaways

The Declared Age Range API represents a significant advancement in privacy-conscious age verification. By requesting age ranges instead of exact ages, developers can create safer experiences while respecting user privacy.


This content originally appeared on DEV Community and was authored by ArshTechPro