AI summary
Curious what AI thinks about this app? Ask for a short summary highlighting what it does and any noteworthy details.
About this app
Satria Launcher is a minimalist, high-performance Android launcher built with React Native. It features a unique Assistant Dock with personalized greetings, advanced app management, smooth animations, and Simple style design philosophy.
✨ Key Features
🎯 Core Functionality
- 4-Column Grid Layout - Clean app drawer with optimized spacing - Simple Style Icons - Rounded square icons with 22% border radius - Smart App Management - Hide/unhide apps with persistent storage - Dual-View Dock - Toggle between Assistant messages and pinned apps (max 5) - Native Uninstall - One-tap app removal with proper cleanup - Custom Avatar & Username - Personalized Assistant experience - Persistent Settings - All preferences saved across sessions
🎨 User Experience
- 60 FPS Animations - Buttery smooth spring physics - Instant Feedback - Spring scale animation on icon press - Time-Based Messages - Assistant adapts to time of day - Toast Notifications - Clear feedback for all actions - Empty States - Helpful guidance when dock is empty - Minimalist Mode - Toggle app name visibility
⚡ Performance
- Hardware Acceleration - All animations use native driver - Optimized Rendering - Smart FlatList configuration - Memory Efficient - ~88MB active RAM, ~65MB idle - Zero Memory Leaks - Proper cleanup on component unmount - Background Optimization - Minimal footprint when inactive
🛠️ Customization
- Toggle App Names - Icon-only minimalist mode - Show/Hide Apps - Privacy-focused app management - Custom Avatar - Upload your own assistant image (200x200px max) - Editable Username - Personalized greeting messages - Transparent Background - Your wallpaper shines through
🎓 Usage Guide
Basic Operations
- Launch app: Tap app icon. - Open actions: Long press app icon. - Toggle dock view: Tap avatar. - Open settings: Long press avatar.
App Management
Pin to Dock
1. Long press any app 2. Select "📌 Pin to Dock" 3. App moves to dock (max 5 apps) 4. Automatically removed from main list
Hide App
1. Long press app 2. Select "🙈 Hide" 3. App hidden from launcher 4..Auto-removed from dock if pinned
Unhide App
1. Enable "Show Hidden Apps" in settings 2. Long press hidden app 3. Select "👁️ Unhide"
Uninstall App
1. Long press app 2. Select "🗑️ Uninstall" 3. System uninstall dialog appears 4. Automatic cleanup after confirmation
Dock Management
Switch Views
- Tap avatar → Toggle between message view and dock apps view - Long press avatar → Open settings modal
Pinned Apps
- Max 5 apps in dock (Simple style) - Apps automatically hidden from main drawer - Long press dock app to unpin or uninstall
Settings
Available Options:
- Ur Name - Customize Assistant's greeting - Show Hidden Apps - Toggle visibility of hidden apps - Show App Names - Minimalist icon-only mode - Change Avatar - Upload custom assistant image (200x200px max)
📄 License
This project is proprietary software. Unauthorized copying, modification, distribution, or use of this software, via any medium, is strictly prohibited without explicit written permission from the copyright holder.
What's new
- Version 1.4 (Release Date: February 18, 2026) v1.4 (Current) - Layout Modes & UX Overhaul
- 🎨 New Features
- ✨ Dual Layout Mode - Switch between Grid (4-column) and List (Niagara-style)
- Grid mode: Traditional 4-column layout List mode: Single column with left-aligned icons + names List mode (no names): Center-aligned icons only Toggle in Settings with visual button selector (⊞ Grid / ☰ List) Persistent across app restarts via layout_mode.txt Smooth transition with zero lag, instant switch 💬 Fullscreen Assistant Chat - Complete chat UI redesign
- Fullscreen black overlay for immersive experience Ultra-smooth 60 FPS scroll (no bubble photos, flat hierarchy) Bilingual fuzzy matching (English + Indonesian) Handles typos: "wht is time" → "what is time", "jamberapa" → "jam berapa" Levenshtrin distance with similarity threshold 0.72-0.82 Period-based auto messages (morning, afternoon, evening, night, late night) Unread badge on dock avatar (red dot indicator, polls every 10s) Hardware back button support for native Android feel Zero scroll lag with optimized FlatList config 🔔 Smart Period Messages - Auto-send caring reminders
- 04:00-11:00: "Good morning! ☀️ Wake up and conquer" 11:00-15:00: "Had lunch? 🍔 Don't skip meals!" 15:00-18:00: "Take a break ☕ You must be tired" 18:00-22:00: "Time to relax 🌙 Unwind for the day" 22:00-04:00: "Put the phone down! 😠 You need rest" Messages sent automatically at period transitions (checked every 60s) Badge notification for unread messages (red dot on avatar) Chat resets daily at 01:00 AM 🧹 Smart Cache Management - Background optimization without refresh
- Progressive clearing strategy: 5s (basic), 30s (deep) Clears decoded image bitmaps (~15MB RAM saved) Triggers garbage collection hints Never clears app list or user data (no refresh on return) Cancels timers if user returns quickly (<5s = zero overhead) Images re-decode instantly on return (<50ms, imperceptible) Zero visible impact on user experience ⚡ Performance Optimizations
- 🚀 Chat Scroll Performance - Fullscreen chat optimizations
- Removed all bubble animations (instant render) Removed avatar images in chat bubbles (50% less Views per message) Flat View hierarchy: 3 Views vs 7 before (-57%) requestAnimationFrame for scroll (no setTimeout overhead) Stable keyExtractor and renderItem callbacks windowSize: 5, maxToRenderPerBatch: 10 Scroll FPS: 30-45 → 60 locked (+100%) Memory: 45MB → 22MB in chat (-51%) 💾 Memory Efficiency - Code cleanup and optimization
- Removed isActive state (redundant, AppState used directly) Removed dead code: backgroundTimerRef, deepCacheTimerRef refs Removed requestAnimationFrame in app filtering (unnecessary) Lazy animation init removed (direct useRef(new Animated.Value(0))) Removed unused imports: width from modals Removed unused parameters: msgId from notifyNewMessage() Removed unused state: _lastAssistantMsgId global Background RAM: 45MB → 30-35MB (-15MB with cache clear) ⚙️ App Management
- Dock pin limit enforced (max 4 apps, consistent with design) "Pin to Dock" button auto-hides when dock full (4 apps) Smart logic: Show "Unpin" if app already docked (even when full) dockCount prop passed to AppActionModal showPinButton = isDocked || dockCount < 4 logic 🎯 UI/UX Improvements
- 📱 iOS-Style Bottom Sheets - Complete modal redesign
- Settings & Action modals now bottom sheets (iOS-inspired) Drag handle at top center (visual affordance for drag-to-close) Removed close button (tap overlay or back to dismiss) PanResponder drag-to-close with smooth translateY animation Drag threshold: 80px vertical or velocity 0.5 Native Android back button support (BackHandler) Smooth translateY animation from bottom (no scale) Animated.timing (150ms) instead of Animated.spring (faster) 🎨 Layout Mode Selector - Settings UI addition
- Visual toggle buttons: "⊞ Grid" / "☰ List" Active mode highlighted in green (#27ae60) Inactive mode grayed out (#666) Single tap to switch modes instantly Background: dark toggle container (#1a1a1a) Persistent state saved to layout_mode.txt 💬 Chat UI Improvements
- Fullscreen black background (#000) for immersive feel Header with avatar (38px circle) + online status badge No bubble photos (performance + visual cleanliness) Typing indicator with 3 bouncing dots (AppState-aware) Custom send icon (pure RN paths, no dependencies) Time stamps inside bubbles (bottom right, 11px) User bubbles: green (#27ae60), right-aligned, 4px bottom-right radius Assistant bubbles: dark gray (#2a2a2a), left-aligned, 4px bottom-left radius StatusBar: light-content + #000 background 🐛 Bug Fixes
- ✅ List Mode Icons - Fixed icons not rendering in list mode
- Root cause: Tried to use base64 Image component Fix: Use SafeAppIcon like grid mode (handles file:// paths) Icons now render properly at 52px in list mode ✅ Period Transition Logic - Fixed period detection
- Root cause: Used === equality check, missed time ranges Fix: Use range checks >= and < for hour boundaries Removed circular reference to _cachePeriod in getCurrentPeriod() ✅ Chat Cache Initialization - Fixed memory leak
- Root cause: Always created new auto message on load Fix: Check cache first with initChat() before creating message Saves RAM, prevents duplicate messages ✅ Timer Leaks - Fixed AssistantPopup timer cleanup
- Root cause: periodTimerRef not cleared on unmount Fix: Added cleanup in two places (unmount + period change) Prevents "setState on unmounted component" warnings ✅ Modal Animations - Removed unused animation code
- Removed scale animations (not used in bottom sheets) Removed unused animation refs and cleanup Cleaner, simpler animation logic ✅ Fuzzy Matching - Fixed bilingual query handling
- Handles English: "what time", "how are you", "good morning" Handles Indonesian: "jam berapa", "apa kabar", "selamat pagi" Mixed patterns: "wht is time now", "jamber sekarang" Similarity threshold: 0.78 default, 0.72 for time (loose), 0.82 for greetings (strict) ✅ Scroll Performance - Fixed chat lag
- Removed complex View hierarchy (7 → 3 Views) Removed image decoding overhead (no bubble photos) Removed bubble fade-in animations Result: 60 FPS locked, butter smooth 🔧 Code Quality
- 🧹 Cleanup (App.tsx)
- Removed isActive state (use AppState directly) Removed backgroundTimerRef, deepCacheTimerRef (unused) Removed requestAnimationFrame in filtering (unnecessary) Changed lazy animation init → direct useRef(new Animated.Value(0)) Changed Animated.spring → Animated.timing (150ms) for modals Combined dockApps + isDocked in single useMemo Removed setAllApps from destructuring (unused) 🧹 Cleanup (AssistantPopup.tsx)
- Fixed getCurrentPeriod() — use range checks, not equality Added initChat() — check cache before creating message Removed _lastAssistantMsgId global (unused) Removed msgId parameter from notifyNewMessage() (unused) Added periodTimerRef with proper cleanup in two places 🧹 Cleanup (SettingsModal.tsx)
- iOS-style bottom sheet with drag handle Removed close button (tap overlay or back to dismiss) Changed animation: scale → translateY from bottom Added PanResponder for drag-to-close Added BackHandler for Android back button Removed unused import: width 🧹 Cleanup (AppActionModal.tsx)
- Same bottom sheet redesign as Settings Drag handle, PanResponder, BackHandler Removed close button Added dockCount prop for smart pin button logic Removed unused import: width ⚡ Optimizations
- Levenshtrin uses Uint16Array instead of 2D array (4× less memory) Regex compiled once at module level (RE_PUNCT, RE_SPACE) FlatList: windowSize: 5, maxToRenderPerBatch: 10 Chat: initialNumToRender: 20, no onContentSizeChange Stable callbacks: keyExtractor, renderItem with useCallback Typing dots pause in background (AppState listener) Feedback and contributions welcome!
About this version
- Version
- 1.4 (7)
- Size
- 14.7 MB
- Requires Android
- 6.0
- Target SDK
- 23
- Architecture
- arm64-v8a
- Downloads
- 33
- Updated
- Feb 19, 2026
- Package
- com.satrialauncher
Ratings & reviews
- 50
- 40
- 30
- 20
- 10