Release Notes V3

Civix v3.0 Release Notes

Release Date: 2025-12-16 Algorithm Version: 3.0.0 Test Format: 2025 USCIS Civics Test


What's New in v3.0

2025 USCIS Test Format

The app has been completely updated for the new 2025 USCIS Citizenship Test:

ChangeOld (2008)New (2025)
Total Questions100128
Questions Asked1020
Passing Score612
Pass Rate60%60%

65/20 Exemption Mode

For applicants age 65+ with 20 years residency:

  • 20 designated questions (marked in question bank)
  • Officer asks 10 questions
  • Must answer 6 correctly
  • Can take test in native language

100% Offline Mode

The app now works completely offline:

  • All 128 questions bundled locally
  • Progress saved to device storage
  • XP, levels, badges work offline
  • Network status indicator
  • Graceful degradation for AI features

Technical Changes

Question Bank (lib/bank/en.ts)

  • 128 questions from official USCIS 2025 document (M-1778)
  • New senior65: boolean flag for 65/20 exemption questions
  • New dynamicAnswer: boolean flag for questions with changing answers
  • Question IDs: q1 through q128

Algorithm (lib/algorithm.ts)

  • Version bumped to 3.0.0
  • Updated constants:
    USCIS = {
      TOTAL_QUESTIONS: 128,
      EXAM_QUESTIONS: 20,
      PASSING_SCORE: 12,
      SENIOR_QUESTIONS: 20,
      SENIOR_EXAM_QUESTIONS: 10,
      SENIOR_PASSING: 6,
    }
    
  • Updated SENIOR_QUESTION_IDS with 20 designated question IDs
  • Updated selectExamQuestions() for new format
  • Updated checkExamPassed() with total questions

Types (lib/types.ts)

type QA = {
  // ... existing fields
  senior65?: boolean;      // 65/20 exemption question
  dynamicAnswer?: boolean; // Answer changes (current officials)
}

Offline Support (lib/offline.ts)

  • Network status detection using expo-network
  • useNetworkStatus() hook for components
  • checkNetworkStatus() async function
  • Feature availability matrix
  • Offline-first data sync strategy

UI Components

  • OfflineIndicator.tsx - Banner shown when offline
  • Updated interview info screens with 2025 format

Files Changed

New Files

FilePurpose
lib/offline.tsOffline mode utilities
components/OfflineIndicator.tsxOffline status UI
docs/OFFLINE-MODE.mdOffline documentation
docs/RELEASE-NOTES-v3.mdThis file

Modified Files

FileChanges
lib/bank/en.ts128 questions with senior65 flags
lib/algorithm.tsv3.0.0 with 2025 constants
lib/types.tsAdded senior65, dynamicAnswer
lib/ai-interview.tsUpdated exemption IDs, offline check
lib/interview-data.tsUpdated to 20/12 format
store/useAppStore.tsFixed SENIOR_EXAM_QUESTIONS
app/_layout.tsxAdded OfflineIndicator
app/(tabs)/interview/index.tsxUpdated civics info
DOCS.mdAdded offline section, 2025 format
docs/MASTER-CHECKLIST.mdUpdated status

Verification Results

TestStatus
TypeScriptNo errors
Jest Tests7/7 passed
Expo Doctor17/17 checks passed
Question Count128 verified
Senior65 Questions20 verified
Algorithm Version3.0.0

Current Officials (Dynamic Answers)

These questions have dynamicAnswer: true and need updating after elections:

QuestionCurrent Answer
q38 - PresidentDonald Trump
q39 - Vice PresidentJD Vance
q30 - Speaker of HouseMike Johnson
q61 - Governor(State-specific)

Breaking Changes

  1. Question IDs Changed

    • Old: q.president.current, q.vp.current, etc.
    • New: q1 through q128 (matching USCIS numbering)
  2. Algorithm Constants Changed

    • USCIS.TOTAL_QUESTIONS: 100 → 128
    • USCIS.EXAM_QUESTIONS: 10 → 20
    • USCIS.PASSING_SCORE: 6 → 12
  3. New Required Package

    • expo-network for offline detection

Upgrade Notes

If upgrading from v2.x:

  1. User question stats will reset (new question IDs)
  2. Progress percentage will change (128 vs 100 questions)
  3. Exam simulations will use new 20/12 format

Next Steps

  1. E2E testing on device
  2. Set up Vercel API for AI interviews
  3. Wire RevenueCat purchases
  4. Add AdMob ads
  5. App store submission

Bismillah - Ready for the 2025 Citizenship Test!