Requirements & Permissions
SDK Size
| Platform | Total Size | Notes |
|---|---|---|
| React Native | ~1.4 MB | Core + RN bridge. Twilio via optional peer dep. |
| iOS | ~13.8 MB | Includes SwiftProtobuf + TwilioVoice |
| Android | ~9.8 MB | Includes OkHttp + Protobuf + Twilio Voice |
Sizes are incremental app size increase (compressed, release build). The Squad experience includes all features — community feed, messaging, Squad Line voice calls, polls, events, and wallet.
All features are included
The full Squad experience ships with all features enabled. Feature flags exist for cases where a specific partner agreement excludes a feature — they are not intended for ad-hoc toggling by integrators.
Required Permissions
The SDK requires the following device permissions. All permissions must be declared — the full Squad experience uses microphone (voice calls, audio messages, freestyles), camera (QR invite scanning), and push notifications (real-time alerts).
iOS (Info.plist)
| Permission | Key | Required | Feature |
|---|---|---|---|
| Microphone | NSMicrophoneUsageDescription |
Yes | Squad Line, audio freestyles, audio messages |
| Camera | NSCameraUsageDescription |
Yes | QR code invite scanning |
| Push Notifications | via UNUserNotificationCenter |
Yes | Message, call, and poll notifications |
<key>NSMicrophoneUsageDescription</key>
<string>Squad needs microphone access for voice calls and audio messages.</string>
<key>NSCameraUsageDescription</key>
<string>Squad uses the camera to scan invite QR codes.</string>
Android (AndroidManifest.xml)
| Permission | Manifest Entry | Required | Feature |
|---|---|---|---|
| Internet | android.permission.INTERNET |
Yes | All API communication |
| Microphone | android.permission.RECORD_AUDIO |
Yes | Squad Line, audio messages, freestyles |
| Camera | android.permission.CAMERA |
Yes | QR code invite scanning |
| Vibrate | android.permission.VIBRATE |
Yes | Haptic feedback on calls |
| Post Notifications | android.permission.POST_NOTIFICATIONS |
Yes (Android 13+) | Real-time notifications |
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- Android 13+ -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
React Native
Permissions are declared in the native layer. Follow the iOS and Android guidance above.
For Expo managed projects, add to app.json:
{
"expo": {
"ios": {
"infoPlist": {
"NSMicrophoneUsageDescription": "Squad needs microphone access for voice calls and audio messages.",
"NSCameraUsageDescription": "Squad uses the camera to scan invite QR codes."
}
},
"android": {
"permissions": [
"RECORD_AUDIO",
"CAMERA",
"VIBRATE",
"POST_NOTIFICATIONS"
]
}
}
}
Required Dependencies
React Native
All peer dependencies are required for the full Squad experience:
# Core SDK
yarn add @squad-sports/core @squad-sports/react-native
# Required peer dependencies
yarn add @react-navigation/native @react-navigation/native-stack \
react-native-screens react-native-safe-area-context \
react-native-gesture-handler react-native-reanimated \
@react-native-async-storage/async-storage \
@gorhom/bottom-sheet recoil \
expo-av expo-image expo-secure-store
# Squad Line (voice calls)
yarn add @twilio/voice-react-native-sdk
iOS
Add via Swift Package Manager. The SDK ships as a precompiled XCFramework — no source compilation required.
dependencies: [
.package(url: "https://github.com/withyoursquad/squad-sports-ios.git", from: "1.6.0"),
]
The XCFramework bundles all SDK code. SwiftProtobuf and TwilioVoice are resolved as transitive dependencies via SPM.
Android
Add the JitPack repository to settings.gradle.kts (Maven Central coming soon), then add the dependency:
dependencies {
implementation("com.github.withyoursquad:squad-sports-android:1.6.0")
}
This includes OkHttp, Protobuf, Twilio Voice, and AndroidX Security as transitive dependencies.
Privacy & Data Collection
Data the SDK collects
| Data Type | Collected | Purpose | Shared with 3rd parties |
|---|---|---|---|
| Email / Phone | Yes | Account creation, verification | No |
| Display Name | Yes | User profile | No |
| Device Info | Yes | Push notifications, analytics | No |
| Usage Analytics | Yes | SDK lifecycle events, screen views | Only to partner analytics endpoint |
| Audio Recordings | Yes (user-initiated) | Freestyles, voice messages, Squad Line calls | No (stored on Squad servers) |
| IP Address | Yes (server-side) | Rate limiting, security | No |
iOS Privacy Manifest
The SDK ships with a PrivacyInfo.xcprivacy file declaring:
- NSPrivacyTracking:
false - NSPrivacyCollectedDataTypes: email, phone, name (app functionality), audio (user-initiated), device ID (analytics)
- NSPrivacyAccessedAPITypes: UserDefaults (app preferences)
Google Play Data Safety
For your Play Store listing, declare under "Data collected":
- Personal info: Name, email, phone (required for account)
- Audio: Voice recordings (user-initiated only)
- App activity: Screen views, feature usage
- Device info: Push notification tokens
All data is encrypted in transit (TLS 1.2+) and sensitive data is encrypted at rest.
Data Deletion
Users can request account deletion from Settings within the Squad experience. Partners can also request user data deletion via the partner API:
DELETE /v2/partners/:partnerId/users/:userId
Requires your API key. Verifies the user belongs to your community. Queues a deletion request that removes all user data within 30 days, in compliance with GDPR and CCPA requirements.
Third-Party Dependencies
iOS
| Dependency | Version | Purpose | License |
|---|---|---|---|
| SwiftProtobuf | 1.25+ | API serialization | Apache 2.0 |
| TwilioVoice | 6.10+ | Voice calls (Squad Line) | Twilio ToS |
Android
| Dependency | Version | Purpose | License |
|---|---|---|---|
| OkHttp | 4.12+ | HTTP networking | Apache 2.0 |
| Protobuf Kotlin | 3.25+ | API serialization | BSD 3-Clause |
| Twilio Voice | 6.5+ | Voice calls (Squad Line) | Twilio ToS |
| AndroidX Security | 1.1+ | Encrypted token storage | Apache 2.0 |
React Native
| Dependency | Version | Purpose | License |
|---|---|---|---|
| axios | 1.8+ | HTTP networking | MIT |
| expo-secure-store | 14+ | Encrypted token storage | MIT |
| expo-av | 15+ | Audio playback/recording | MIT |
| react-native-reanimated | 3+ | UI animations | MIT |
| @twilio/voice-react-native-sdk | 1.0+ | Voice calls (Squad Line) | Twilio ToS |