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:
| Change | Old (2008) | New (2025) |
|---|---|---|
| Total Questions | 100 | 128 |
| Questions Asked | 10 | 20 |
| Passing Score | 6 | 12 |
| Pass Rate | 60% | 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: booleanflag for 65/20 exemption questions - New
dynamicAnswer: booleanflag for questions with changing answers - Question IDs:
q1throughq128
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_IDSwith 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 componentscheckNetworkStatus()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
| File | Purpose |
|---|---|
lib/offline.ts | Offline mode utilities |
components/OfflineIndicator.tsx | Offline status UI |
docs/OFFLINE-MODE.md | Offline documentation |
docs/RELEASE-NOTES-v3.md | This file |
Modified Files
| File | Changes |
|---|---|
lib/bank/en.ts | 128 questions with senior65 flags |
lib/algorithm.ts | v3.0.0 with 2025 constants |
lib/types.ts | Added senior65, dynamicAnswer |
lib/ai-interview.ts | Updated exemption IDs, offline check |
lib/interview-data.ts | Updated to 20/12 format |
store/useAppStore.ts | Fixed SENIOR_EXAM_QUESTIONS |
app/_layout.tsx | Added OfflineIndicator |
app/(tabs)/interview/index.tsx | Updated civics info |
DOCS.md | Added offline section, 2025 format |
docs/MASTER-CHECKLIST.md | Updated status |
Verification Results
| Test | Status |
|---|---|
| TypeScript | No errors |
| Jest Tests | 7/7 passed |
| Expo Doctor | 17/17 checks passed |
| Question Count | 128 verified |
| Senior65 Questions | 20 verified |
| Algorithm Version | 3.0.0 |
Current Officials (Dynamic Answers)
These questions have dynamicAnswer: true and need updating after elections:
| Question | Current Answer |
|---|---|
| q38 - President | Donald Trump |
| q39 - Vice President | JD Vance |
| q30 - Speaker of House | Mike Johnson |
| q61 - Governor | (State-specific) |
Breaking Changes
-
Question IDs Changed
- Old:
q.president.current,q.vp.current, etc. - New:
q1throughq128(matching USCIS numbering)
- Old:
-
Algorithm Constants Changed
USCIS.TOTAL_QUESTIONS: 100 → 128USCIS.EXAM_QUESTIONS: 10 → 20USCIS.PASSING_SCORE: 6 → 12
-
New Required Package
expo-networkfor offline detection
Upgrade Notes
If upgrading from v2.x:
- User question stats will reset (new question IDs)
- Progress percentage will change (128 vs 100 questions)
- Exam simulations will use new 20/12 format
Next Steps
- E2E testing on device
- Set up Vercel API for AI interviews
- Wire RevenueCat purchases
- Add AdMob ads
- App store submission
Bismillah - Ready for the 2025 Citizenship Test!