Users must accept ToS or community guidelines before posting UGC
Why it matters
Apple's guideline 1.2 requires UGC platforms to have users agree to community guidelines — implicit agreement through account creation is not sufficient. Failing to record and enforce terms acceptance means you have no legal standing when content violations occur and no proof that users were informed of the rules before posting. Beyond Apple's requirement, tos_accepted_at on the user record is the timestamp your legal team needs if a content dispute escalates. The gating must be server-side: a UI checkbox alone can be bypassed, and direct API calls from determined users would bypass it entirely.
Severity rationale
Low because this is a compliance hygiene issue that primarily affects legal standing and guidelines conformance rather than causing direct harm on its own.
Remediation
Gate UGC creation behind recorded terms acceptance — both in the UI and in the API.
// src/app/api/posts/route.ts
const user = await getUser(req);
if (!user.tos_accepted_at) {
return Response.json({ error: 'Must accept community guidelines before posting' }, { status: 403 });
}
Add a tos_accepted_at timestamptz column to your users table. In the onboarding flow, show the Community Guidelines with an explicit "I agree" tap — not a pre-checked checkbox. Link to the full guidelines text. Record acceptance server-side so the check works even if users call the API directly.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the App Store Review Blockers Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · apple-guideline-1.2-ugc-tos — Apple App Store Review Guideline 1.2 — User-Generated Content (ToS acceptance)
Taxons
History
- 2026-04-18·v1.0.0·Initial import from app-store-review-blockers·automated