Skip to main content

March 25th, 2026

The Great Enforcer: Native Blocking & Triple-Write Sync Today was a marathon session focused on building the most resilient app-blocking engine possible on Android. We moved beyond simple UI toggles and implemented a mission-critical enforcement layer that bridges SQLite, Native Kotlin, and React Native.

1. Mission-Critical Accessibility Enforcer (M.C.A.E.)

We re-engineered our blocking service into a professional-grade enforcement engine:
  • Direct-to-Vault Enforcement: To achieve sub-5ms latency, the BlockerAccessibilityService now queries the SQLite database directly from the Android UI thread’s event loop, bypassing the React Native bridge entirely. This prevents users from “gaming” the blocker via rapid app-swiping.
  • Protocol A (Anti-Tamper Shield): Implemented a real-time UI inspection engine that intercepts long-presses on the CommitT icon. This prevents users from accessing “Uninstall” or “App Info” menus during active commitment windows.
  • Protocol B (Violation Neutralization): Automated interception of system-level uninstaller packages (e.g., com.android.packageinstaller) to ensure the app cannot be removed while a commitment is active.
  • BlockerOverlayActivity: Launched a high-performance, pure-Kotlin overlay UI that neutralizes unauthorized apps with a professional CommitT terracotta theme. It bypassing the Android keyguard to ensure deterministic blocking.

2. Triple-Write Sync & SQLite Architecture

We implemented a robust data persistence layer to support the hardware enforcer:
  • SQLite Migrations (v10 & v11): Established dedicated blocked_apps and blocked_websites tables for high-performance relational queries.
  • Relational Projection: The local repository now “projects” complex JSON conditions into these flat relational tables during the sync process.
  • Multi-Path Resolution: Added logic to resolve the SQLite vault path across various Android variants (Expo default vs. Standard vs. Absolute), ensuring the enforcer always finds the “Source of Truth.”
  • Atomic Synchronization: Guaranteed atomicity across Convex Cloud, the SQLite local cache, and the Android hardware scheduler.

3. UI Optimization & 60FPS Fluidity

To maintain a premium feel despite the heavy native operations, we implemented several performance upgrades:
  • InteractionManager Deferral: Wrapped heavy rendering logic in InteractionManager.runAfterInteractions to ensure 60FPS navigation transitions.
  • Virtualized Listing: Refactored the application selection list to use a virtualized FlatList for buttery-smooth scrolling through 300+ apps.
  • Horizontal Skeleton Shimmers: Added premium horizontal skeletons to the DigitalCommitItem to ensure zero-snap loading states on the Final Summary screen.
  • Gesture Conflict Resolution: Decoupled navigation triggers from scrollable items, allowing users to swipe through blocked apps without accidentally triggering a screen transition.

4. High-Fidelity Summary & Modal Integration

Integrated the new native data into the user-facing UI:
  • Dynamic Icon Resolution: Replaced all static placeholders with real device-installed app icons (Base64) across the entire app.
  • EventDetailModal Upgrade: Added a new BlocklistSection to the event details, featuring a horizontally scrollable gallery of the blocked apps’ icons.
  • Condition Hierarchy: Re-organized the modal layout to prioritize a logical flow: Time → Location → Digital Commitment → Penalty → Waiver.