vibes-plug 1.0.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/rules/vibes-plug-core.md +32 -0
- package/.cursor/rules/vibes-plug-core.mdc +51 -0
- package/.cursorrules +42 -0
- package/AGENTS.md +96 -0
- package/BLUEPRINT.md +309 -125
- package/CHANGELOG.md +183 -1
- package/CLAUDE.md +70 -0
- package/LICENSE +1 -1
- package/README.md +641 -263
- package/index.js +19 -0
- package/package.json +61 -25
- package/plugin.json +24 -7
- package/scripts/generate_swarm_gif.py +295 -0
- package/scripts/install.js +201 -0
- package/skills/accessibility-testing-expert/SKILL.md +116 -0
- package/skills/ai-cost-token-optimizer/SKILL.md +82 -0
- package/skills/ai-evals-benchmark-expert/SKILL.md +188 -0
- package/skills/ai-llm-integration-expert/SKILL.md +147 -122
- package/skills/ai-media-generation-expert/SKILL.md +172 -0
- package/skills/ai-prompt-engineering-expert/SKILL.md +84 -0
- package/skills/angular-expert/SKILL.md +148 -0
- package/skills/api-design-expert/SKILL.md +316 -309
- package/skills/api-gateway-proxy-expert/SKILL.md +81 -0
- package/skills/app-analyzer-optimizer/SKILL.md +195 -188
- package/skills/apple-ecosystem-expert/SKILL.md +145 -0
- package/skills/{asisten_ramah → asisten-ramah}/SKILL.md +7 -1
- package/skills/astro-framework-expert/SKILL.md +200 -0
- package/skills/async-queue-temporal-expert/SKILL.md +240 -0
- package/skills/authentication-identity-expert/SKILL.md +279 -45
- package/skills/auto-doc-updater/SKILL.md +219 -203
- package/skills/autonomous-chaos-monkey/SKILL.md +63 -0
- package/skills/autonomous-red-teamer/SKILL.md +203 -0
- package/skills/autonomous-tdd-debugger/SKILL.md +71 -0
- package/skills/background-jobs-queue-expert/SKILL.md +235 -0
- package/skills/biome-linter-formatter-expert/SKILL.md +89 -0
- package/skills/blockchain-web3-expert/SKILL.md +115 -0
- package/skills/bootstrap-to-modern/SKILL.md +93 -86
- package/skills/brainstorming/SKILL.md +381 -353
- package/skills/browser-automation-expert/SKILL.md +222 -0
- package/skills/bun-runtime-expert/SKILL.md +7 -1
- package/skills/chatbot-messaging-expert/SKILL.md +114 -0
- package/skills/ci-cd-devops-architect/SKILL.md +81 -45
- package/skills/cloud-hosting-expert/SKILL.md +249 -243
- package/skills/coderabbit/SKILL.md +197 -191
- package/skills/compliance-gdpr-privacy-expert/SKILL.md +85 -0
- package/skills/cron-scheduler-expert/SKILL.md +304 -0
- package/skills/data-pipeline-etl-expert/SKILL.md +84 -0
- package/skills/data-telemetry-expert/SKILL.md +218 -212
- package/skills/data-visualization-expert/SKILL.md +154 -0
- package/skills/database-migration-versioning-expert/SKILL.md +90 -0
- package/skills/database-orm-expert/SKILL.md +303 -293
- package/skills/dependency-upgrade-migrator/SKILL.md +301 -0
- package/skills/design-system-architect/SKILL.md +278 -242
- package/skills/desktop-electron-expert/SKILL.md +128 -0
- package/skills/documentation-site-expert/SKILL.md +59 -0
- package/skills/doku-mcp-server/SKILL.md +257 -0
- package/skills/doku-payment-gateway/SKILL.md +233 -0
- package/skills/domain-driven-design-expert/SKILL.md +82 -0
- package/skills/e2e-testing-expert/SKILL.md +320 -314
- package/skills/ecommerce-expert/SKILL.md +87 -0
- package/skills/edge-serverless-db-expert/SKILL.md +99 -0
- package/skills/email-notification-expert/SKILL.md +368 -0
- package/skills/error-resilience-expert/SKILL.md +486 -0
- package/skills/event-driven-architect/SKILL.md +86 -80
- package/skills/feature-flag-analytics-expert/SKILL.md +66 -0
- package/skills/file-upload-media-expert/SKILL.md +437 -0
- package/skills/firebase-security-expert/SKILL.md +7 -1
- package/skills/form-validation-expert/SKILL.md +407 -0
- package/skills/fullstack-expert/SKILL.md +260 -201
- package/skills/fullstack-expert/references/api_design_guide.md +466 -466
- package/skills/fullstack-expert/references/multi_language_backend.md +528 -528
- package/skills/fullstack-expert/scripts/api_contract_validator.py +253 -253
- package/skills/fullstack-expert/scripts/architecture_analyzer.py +326 -326
- package/skills/gemini-agent-booster/SKILL.md +142 -104
- package/skills/geospatial-maps-expert/SKILL.md +80 -0
- package/skills/global-a11y-i18n-expert/SKILL.md +86 -80
- package/skills/glsl-shader-expert/SKILL.md +107 -0
- package/skills/go-programming-expert/SKILL.md +300 -294
- package/skills/graph-rag-knowledge-expert/SKILL.md +159 -0
- package/skills/graphql-apollo-expert/SKILL.md +114 -0
- package/skills/headless-cms-expert/SKILL.md +181 -0
- package/skills/hig/SKILL.md +193 -187
- package/skills/js-backend-expert/SKILL.md +218 -191
- package/skills/legacy-code-translator/SKILL.md +71 -0
- package/skills/local-slm-edge-ai-expert/SKILL.md +167 -0
- package/skills/logging-error-tracking-expert/SKILL.md +344 -0
- package/skills/mcp-client-orchestrator/SKILL.md +76 -0
- package/skills/mcp-server-architect/SKILL.md +226 -126
- package/skills/micro-frontend-architect/SKILL.md +112 -0
- package/skills/mobile-expo-expert/SKILL.md +191 -185
- package/skills/mobile-push-notification-expert/SKILL.md +71 -0
- package/skills/modern-css-native-expert/SKILL.md +189 -0
- package/skills/monday-design-aesthetic/SKILL.md +72 -66
- package/skills/monorepo-architect/SKILL.md +232 -226
- package/skills/mpa-orchestrator/SKILL.md +120 -101
- package/skills/multi-agent-orchestration/SKILL.md +173 -153
- package/skills/multiple-entry-points/SKILL.md +91 -55
- package/skills/mvc-expert/SKILL.md +237 -231
- package/skills/n8n-automation-expert/SKILL.md +89 -0
- package/skills/nextjs-app-router-expert/SKILL.md +148 -0
- package/skills/openapi-swagger-codegen-expert/SKILL.md +67 -0
- package/skills/payment-gateway-expert/SKILL.md +129 -45
- package/skills/pdf-document-generation-expert/SKILL.md +91 -0
- package/skills/performance-web-vitals/SKILL.md +337 -331
- package/skills/post-quantum-crypto-migrator/SKILL.md +57 -0
- package/skills/prd-architect/SKILL.md +206 -190
- package/skills/proactive-background-watcher/SKILL.md +68 -0
- package/skills/production-ready-hardener/PRODUCTION_READINESS_REPORT.md +67 -0
- package/skills/production-ready-hardener/SKILL.md +461 -468
- package/skills/production-ready-hardener/references/production_checklist.md +161 -161
- package/skills/production-ready-hardener/scripts/production_readiness_scanner.py +881 -875
- package/skills/project-context-mapper/SKILL.md +85 -0
- package/skills/pwa-offline-first-expert/SKILL.md +185 -0
- package/skills/python-programming-expert/SKILL.md +407 -270
- package/skills/rate-limit-abuse-prevention/SKILL.md +377 -0
- package/skills/realtime-collaboration-expert/SKILL.md +99 -45
- package/skills/rich-text-editor-expert/SKILL.md +177 -0
- package/skills/rust-programming-expert/SKILL.md +240 -234
- package/skills/saas-billing/SKILL.md +382 -376
- package/skills/saas-multi-tenant/SKILL.md +256 -236
- package/skills/saas-mvp-launcher/SKILL.md +30 -1
- package/skills/saas-transformer/SKILL.md +499 -445
- package/skills/saas-transformer/references/billing_integration_guide.md +401 -401
- package/skills/saas-transformer/references/feature_gating_patterns.md +137 -137
- package/skills/saas-transformer/references/saas_transformation_checklist.md +121 -121
- package/skills/saas-transformer/scripts/saas_transformation_scanner.py +39 -29
- package/skills/scalability-clean-code/SKILL.md +234 -228
- package/skills/search-engine-expert/SKILL.md +89 -0
- package/skills/secure-fuzz-testing/SKILL.md +7 -1
- package/skills/self-evolving-memory-graph/SKILL.md +91 -0
- package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -0
- package/skills/senior-frontend/SKILL.md +85 -105
- package/skills/seo/SKILL.md +258 -224
- package/skills/session-context-loader/SKILL.md +83 -0
- package/skills/session-handoff-resume/SKILL.md +163 -157
- package/skills/{skill_baru → skill-baru}/SKILL.md +177 -146
- package/skills/solidjs-expert/SKILL.md +80 -0
- package/skills/spa-orchestrator/SKILL.md +306 -287
- package/skills/sse-websocket-streaming-expert/SKILL.md +93 -0
- package/skills/state-management-expert/SKILL.md +277 -271
- package/skills/supabase-migration/SKILL.md +47 -1
- package/skills/supabase-security-expert/SKILL.md +248 -242
- package/skills/svelte-sveltekit-expert/SKILL.md +91 -0
- package/skills/svg-animation-motion-expert/SKILL.md +115 -0
- package/skills/tailwind-expert/SKILL.md +139 -187
- package/skills/tanstack-query-expert/SKILL.md +204 -198
- package/skills/tauri-expert/SKILL.md +7 -1
- package/skills/token-saver/SKILL.md +118 -110
- package/skills/typescript-expert/SKILL.md +329 -278
- package/skills/ui-components-expert/SKILL.md +166 -63
- package/skills/ui-ux-pro-max/SKILL.md +221 -200
- package/skills/vector-db-rag-expert/SKILL.md +208 -0
- package/skills/vibe-code-gardener/SKILL.md +180 -172
- package/skills/visual-qa-vision-agent/SKILL.md +71 -0
- package/skills/voice-ai-realtime-agent/SKILL.md +202 -0
- package/skills/vue-frontend-expert/SKILL.md +132 -0
- package/skills/wasm-edge-computing-expert/SKILL.md +97 -0
- package/skills/web-3d-graphics-expert/SKILL.md +137 -0
- package/skills/web-game-engine-expert/SKILL.md +102 -0
- package/skills/web-scraper/SKILL.md +98 -146
- package/skills/website-design-cloner/SKILL.md +180 -0
- package/skills/webxr-ar-vr-expert/SKILL.md +123 -0
- package/skills/wordpress-headless-expert/SKILL.md +144 -0
- package/skills/zero-to-prod-orchestrator/SKILL.md +231 -180
- package/skills/zero-trust-secret-vault/SKILL.md +88 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/CONTRIBUTING.md +0 -199
- package/SECURITY.md +0 -21
- package/banner.png +0 -0
- package/skills/senior-fullstack/SKILL.md +0 -167
- package/skills/senior-fullstack/references/architecture_patterns.md +0 -160
- package/skills/senior-fullstack/references/development_workflows.md +0 -222
- package/skills/senior-fullstack/references/tech_stack_guide.md +0 -190
- package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
- package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
- package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -114
- package/skills/seo-aeo-landing-page-writer/SKILL.md +0 -97
- package/skills/seo-geo/SKILL.md +0 -188
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
- package/skills/ui_ux_expert/SKILL.md +0 -114
|
@@ -1,186 +1,192 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: mobile-expo-expert
|
|
3
|
-
description: "Expert guide for React Native 0.
|
|
1
|
+
---
|
|
2
|
+
name: mobile-expo-expert
|
|
3
|
+
description: "Expert guide for React Native 0.79+ and Expo SDK 53+ development. Covers cross-platform mobile architecture, Expo Router v4, New Architecture, OTA updates, and native modules / Panduan ahli pengembangan React Native 0.79+ dan Expo SDK 53+ untuk aplikasi mobile."
|
|
4
4
|
author: "Roedy Rustam"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Mobile Expert — React Native & Expo (SDK 53 / RN 0.79 Edition)
|
|
8
|
-
|
|
9
|
-
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<a name="english"></a>
|
|
14
|
-
## English
|
|
15
|
-
|
|
16
|
-
###
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- **
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- **Expo
|
|
41
|
-
- **
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- **
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
###
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
- **
|
|
157
|
-
- **
|
|
158
|
-
- **
|
|
159
|
-
- **
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
Expo
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
####
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
####
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
####
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Mobile Expert — React Native & Expo (SDK 53 / RN 0.79 Edition)
|
|
8
|
+
|
|
9
|
+
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<a name="english"></a>
|
|
14
|
+
## English
|
|
15
|
+
|
|
16
|
+
### Orchestration & Integration
|
|
17
|
+
Connects and orchestrates with relevant domain skills like `brainstorming`, `zero-to-prod-orchestrator`, and `project-context-mapper` to ensure cohesive execution.
|
|
18
|
+
|
|
19
|
+
### Description
|
|
20
|
+
Expert guide for building production-grade cross-platform mobile applications using **React Native 0.79+** and **Expo SDK 53+**. Covers the New Architecture (stable), Expo Router v4, OTA updates, native modules, and modern state management patterns for iOS and Android.
|
|
21
|
+
|
|
22
|
+
### Trigger Conditions
|
|
23
|
+
- Building a new iOS/Android cross-platform mobile app.
|
|
24
|
+
- Using Expo SDK 53+ or React Native 0.79+ with the New Architecture.
|
|
25
|
+
- Implementing file-based routing with **Expo Router v4**.
|
|
26
|
+
- Setting up OTA (Over-the-Air) updates with EAS Update.
|
|
27
|
+
- Writing native modules using **JSI** (JavaScript Interface) or **Expo Modules API**.
|
|
28
|
+
- Integrating device features: camera, biometrics, notifications, location.
|
|
29
|
+
|
|
30
|
+
### What's New in 2026
|
|
31
|
+
|
|
32
|
+
#### React Native 0.79 — New Architecture Stable
|
|
33
|
+
The **New Architecture** (Fabric + JSI + TurboModules) is now **fully stable** and the default for all new Expo SDK 53 projects:
|
|
34
|
+
- **Fabric**: New rendering engine — synchronous rendering, better animations.
|
|
35
|
+
- **JSI (JavaScript Interface)**: Direct C++ bridge — no more async serialization for native calls.
|
|
36
|
+
- **TurboModules**: Lazy-loaded native modules — significantly faster startup time.
|
|
37
|
+
- **Concurrent React**: Full support for `useTransition`, `useDeferredValue`, and Suspense on mobile.
|
|
38
|
+
|
|
39
|
+
#### Expo SDK 53 — Key Updates
|
|
40
|
+
- **Expo Router v4**: File-based routing with typed routes, API routes (Expo functions), and universal links.
|
|
41
|
+
- **Expo Camera v15**: Unified camera API for iOS and Android.
|
|
42
|
+
- **Expo SQLite v15**: Full SQLite with WAL mode and `useSQLiteContext` hook.
|
|
43
|
+
- **Expo Modules API v2**: Easier native module authoring with Swift/Kotlin.
|
|
44
|
+
- **EAS Build**: Faster builds with M-series Mac runners.
|
|
45
|
+
|
|
46
|
+
### Core Architecture Patterns
|
|
47
|
+
|
|
48
|
+
#### 1. Project Setup (Expo SDK 53 + New Arch)
|
|
49
|
+
```bash
|
|
50
|
+
npx create-expo-app@latest MyApp --template tabs
|
|
51
|
+
cd MyApp
|
|
52
|
+
# New Architecture is enabled by default in SDK 53
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### 2. Expo Router v4 — File-Based Routing
|
|
56
|
+
```
|
|
57
|
+
app/
|
|
58
|
+
_layout.tsx # Root layout (navigation + providers)
|
|
59
|
+
(tabs)/
|
|
60
|
+
_layout.tsx # Tab navigator
|
|
61
|
+
index.tsx # Home tab
|
|
62
|
+
profile.tsx # Profile tab
|
|
63
|
+
(auth)/
|
|
64
|
+
login.tsx # Login screen
|
|
65
|
+
register.tsx
|
|
66
|
+
modal.tsx # Modal screen
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Use **typed routes** for compile-time safety:
|
|
70
|
+
```typescript
|
|
71
|
+
import { Link, useRouter } from 'expo-router';
|
|
72
|
+
|
|
73
|
+
// Typed navigation — TypeScript errors on invalid paths
|
|
74
|
+
<Link href="/profile">Profile</Link>
|
|
75
|
+
|
|
76
|
+
const router = useRouter();
|
|
77
|
+
router.push('/modal');
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
#### 3. API Routes (Expo Functions)
|
|
81
|
+
Expo Router v4 supports API routes for serverless backend logic:
|
|
82
|
+
```typescript
|
|
83
|
+
// app/api/user+api.ts
|
|
84
|
+
export async function GET(request: Request) {
|
|
85
|
+
const user = await db.user.findFirst();
|
|
86
|
+
return Response.json(user);
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### 4. State Management
|
|
91
|
+
- **TanStack Query v5**: Primary choice for server state (`useQuery`, `useMutation`).
|
|
92
|
+
- **Zustand**: Lightweight client state management (replace Context for complex state).
|
|
93
|
+
- **MMKV**: Ultra-fast synchronous storage (replace AsyncStorage).
|
|
94
|
+
- **Expo SQLite + Drizzle**: Local-first database with full SQL support.
|
|
95
|
+
|
|
96
|
+
#### 5. Navigation Patterns
|
|
97
|
+
```typescript
|
|
98
|
+
// Deep linking & Universal Links configuration
|
|
99
|
+
// app.json
|
|
100
|
+
{
|
|
101
|
+
"expo": {
|
|
102
|
+
"scheme": "myapp",
|
|
103
|
+
"ios": { "associatedDomains": ["applinks:myapp.com"] },
|
|
104
|
+
"android": { "intentFilters": [{ "action": "VIEW", "data": [{ "scheme": "https", "host": "myapp.com" }] }] }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### 6. Native Modules — Expo Modules API v2
|
|
110
|
+
```typescript
|
|
111
|
+
// modules/my-sensor/src/MyModule.ts
|
|
112
|
+
import { requireNativeModule } from 'expo-modules-core';
|
|
113
|
+
const MyModule = requireNativeModule('MyModule');
|
|
114
|
+
|
|
115
|
+
export function readSensor(): Promise<number> {
|
|
116
|
+
return MyModule.readSensor();
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### 7. OTA Updates with EAS Update
|
|
121
|
+
```bash
|
|
122
|
+
# Push an instant OTA update (no App Store review)
|
|
123
|
+
eas update --branch production --message "Fix critical bug"
|
|
124
|
+
```
|
|
125
|
+
Use **channels** to target specific user groups (production, staging, beta).
|
|
126
|
+
|
|
127
|
+
#### 8. Performance Best Practices
|
|
128
|
+
- Use **FlashList** (Shopify) instead of `FlatList` for large lists.
|
|
129
|
+
- Use **react-native-reanimated v3** for 60/120fps animations that run on the UI thread.
|
|
130
|
+
- Use **react-native-gesture-handler** for gesture recognition on the native thread.
|
|
131
|
+
- Enable **Hermes** engine (default in SDK 53) for faster startup and reduced memory.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
<a name="bahasa-indonesia"></a>
|
|
136
|
+
## Bahasa Indonesia
|
|
137
|
+
|
|
138
|
+
### Integrasi Orkestrasi
|
|
139
|
+
Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
|
|
140
|
+
|
|
141
|
+
### Deskripsi
|
|
142
|
+
Panduan ahli untuk membangun aplikasi mobile cross-platform tingkat produksi menggunakan **React Native 0.79+** dan **Expo SDK 53+**. Mencakup New Architecture (stabil), Expo Router v4, OTA updates, native modules, dan pola state management modern untuk iOS dan Android.
|
|
143
|
+
|
|
144
|
+
### Kondisi Pemicu
|
|
145
|
+
- Membangun aplikasi mobile iOS/Android cross-platform baru.
|
|
146
|
+
- Menggunakan Expo SDK 53+ atau React Native 0.79+ dengan New Architecture.
|
|
147
|
+
- Mengimplementasikan routing berbasis file dengan **Expo Router v4**.
|
|
148
|
+
- Menyiapkan OTA (Over-the-Air) updates dengan EAS Update.
|
|
149
|
+
- Menulis native modules menggunakan JSI atau Expo Modules API v2.
|
|
150
|
+
- Mengintegrasikan fitur perangkat: kamera, biometrik, notifikasi, lokasi.
|
|
151
|
+
|
|
152
|
+
### Yang Baru di 2026
|
|
153
|
+
|
|
154
|
+
#### React Native 0.79 — New Architecture Stabil
|
|
155
|
+
**New Architecture** (Fabric + JSI + TurboModules) kini **sepenuhnya stabil** dan menjadi default untuk semua proyek baru Expo SDK 53:
|
|
156
|
+
- **Fabric**: Engine rendering baru — rendering sinkron, animasi lebih baik.
|
|
157
|
+
- **JSI**: Bridge C++ langsung — tidak ada lagi serialisasi async untuk panggilan native.
|
|
158
|
+
- **TurboModules**: Modul native lazy-loaded — startup jauh lebih cepat.
|
|
159
|
+
- **Concurrent React**: Dukungan penuh untuk `useTransition`, `useDeferredValue`, dan Suspense di mobile.
|
|
160
|
+
|
|
161
|
+
#### Expo SDK 53 — Pembaruan Utama
|
|
162
|
+
- **Expo Router v4**: Routing berbasis file dengan typed routes, API routes, dan universal links.
|
|
163
|
+
- **Expo Camera v15**: API kamera terpadu untuk iOS dan Android.
|
|
164
|
+
- **Expo SQLite v15**: SQLite lengkap dengan mode WAL dan hook `useSQLiteContext`.
|
|
165
|
+
- **Expo Modules API v2**: Pembuatan modul native yang lebih mudah dengan Swift/Kotlin.
|
|
166
|
+
- **EAS Build**: Build lebih cepat dengan runner Mac M-series.
|
|
167
|
+
|
|
168
|
+
### Pola Arsitektur Inti
|
|
169
|
+
|
|
170
|
+
#### 1. Routing Berbasis File (Expo Router v4)
|
|
171
|
+
Expo Router menggunakan konvensi direktori `app/` untuk mendefinisikan semua layar dan navigasi. Gunakan **typed routes** untuk keamanan type-safe di waktu kompilasi.
|
|
172
|
+
|
|
173
|
+
#### 2. API Routes (Expo Functions)
|
|
174
|
+
Expo Router v4 mendukung API routes untuk logika backend serverless langsung di dalam proyek.
|
|
175
|
+
|
|
176
|
+
#### 3. State Management
|
|
177
|
+
- **TanStack Query v5**: Pilihan utama untuk server state.
|
|
178
|
+
- **Zustand**: State klien yang ringan.
|
|
179
|
+
- **MMKV**: Penyimpanan sinkron ultra-cepat (pengganti AsyncStorage).
|
|
180
|
+
- **Expo SQLite + Drizzle**: Database lokal-first dengan dukungan SQL penuh.
|
|
181
|
+
|
|
182
|
+
#### 4. Native Modules — Expo Modules API v2
|
|
183
|
+
Gunakan Expo Modules API untuk membuat modul native kustom dengan Swift (iOS) dan Kotlin (Android) dengan boilerplate minimal.
|
|
184
|
+
|
|
185
|
+
#### 5. OTA Updates dengan EAS Update
|
|
186
|
+
Dorong pembaruan instan ke pengguna tanpa melalui review App Store. Gunakan channel (`production`, `staging`, `beta`) untuk menargetkan kelompok pengguna tertentu.
|
|
187
|
+
|
|
188
|
+
#### 6. Praktik Terbaik Performa
|
|
189
|
+
- **FlashList**: Pengganti FlatList yang jauh lebih cepat untuk daftar panjang.
|
|
190
|
+
- **react-native-reanimated v3**: Animasi 60/120fps yang berjalan di UI thread.
|
|
191
|
+
- **react-native-gesture-handler**: Pengenalan gesture di native thread.
|
|
192
|
+
- **Hermes Engine**: Default di SDK 53 — startup lebih cepat, memori lebih sedikit.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-push-notification-expert
|
|
3
|
+
description: "Expert guide for Cross-Platform Push Notifications (Expo Push, FCM, APNs, Web Push), iOS Live Activities, and background payload handling / Panduan ahli notifikasi push mobile, FCM, APNs, dan Live Activities."
|
|
4
|
+
author: "Roedy Rustam"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Mobile Push Notification & Live Activities Expert
|
|
8
|
+
|
|
9
|
+
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<a name="english"></a>
|
|
14
|
+
## English
|
|
15
|
+
|
|
16
|
+
### Purpose & Overview
|
|
17
|
+
Comprehensive guide for configuring cross-platform push notifications (Expo Push API, Firebase Cloud Messaging FCM, Apple APNs, Web Push API), iOS Live Activities / ActivityKit, background payload handlers, deep-linking routing, and push token lifecycle management.
|
|
18
|
+
|
|
19
|
+
### Key Capabilities
|
|
20
|
+
- **Expo & FCM Push**: Sending batched push notifications with rich media, actions, and custom data payloads.
|
|
21
|
+
- **iOS Live Activities**: Real-time status updates on iOS Dynamic Island and Lock Screen.
|
|
22
|
+
- **Deep Linking**: Routing push notification taps directly to targeted screens within Expo Router / React Native.
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import * as Notifications from 'expo-notifications';
|
|
26
|
+
|
|
27
|
+
export async function registerForPushNotificationsAsync() {
|
|
28
|
+
const { status: existingStatus } = await Notifications.getPermissionsAsync();
|
|
29
|
+
let finalStatus = existingStatus;
|
|
30
|
+
if (existingStatus !== 'granted') {
|
|
31
|
+
const { status } = await Notifications.requestPermissionsAsync();
|
|
32
|
+
finalStatus = status;
|
|
33
|
+
}
|
|
34
|
+
if (finalStatus !== 'granted') return null;
|
|
35
|
+
const token = (await Notifications.getExpoPushTokenAsync()).data;
|
|
36
|
+
return token;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Implementation Checklist
|
|
41
|
+
- [ ] Configure Apple Developer Account (APNs Key) and Google Firebase (FCM Service Account).
|
|
42
|
+
- [ ] Request push notification permissions explicitly from the user after they understand the value proposition.
|
|
43
|
+
- [ ] Save the device's Push Token to the database, associated with the user's ID.
|
|
44
|
+
- [ ] Handle token refresh events when the user uninstalls/reinstalls the app or changes devices.
|
|
45
|
+
- [ ] Set up background event handlers to process incoming messages when the app is killed.
|
|
46
|
+
|
|
47
|
+
## Orchestration & Integration
|
|
48
|
+
- Integrates with: `mobile-expo-expert`, `event-driven-architect`, `database-orm-expert`.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
<a name="bahasa-indonesia"></a>
|
|
53
|
+
## Bahasa Indonesia
|
|
54
|
+
|
|
55
|
+
### Deskripsi
|
|
56
|
+
Panduan komprehensif untuk konfigurasi push notification lintas platform (Expo Push, FCM, APNs, Web Push), iOS Live Activities / ActivityKit, penanganan payload background, routing deep-linking, dan manajemen siklus token push.
|
|
57
|
+
|
|
58
|
+
### Fitur Utama
|
|
59
|
+
- **Expo & FCM Push**: Pengiriman push notification masal dengan media kaya, tombol aksi, dan payload kustom.
|
|
60
|
+
- **iOS Live Activities**: Update status real-time di Dynamic Island dan Lock Screen iOS.
|
|
61
|
+
- **Deep Linking**: Mengarahkan ketukan notifikasi secara langsung ke layar target di Expo Router / React Native.
|
|
62
|
+
|
|
63
|
+
### Checklist Implementasi
|
|
64
|
+
- [ ] Konfigurasi Akun Developer Apple (Kunci APNs) dan Google Firebase (Service Account FCM).
|
|
65
|
+
- [ ] Minta izin notifikasi push secara eksplisit dari pengguna setelah mereka memahami nilai gunanya.
|
|
66
|
+
- [ ] Simpan Push Token perangkat ke database, yang terkait dengan ID pengguna.
|
|
67
|
+
- [ ] Tangani event penyegaran token saat pengguna menghapus/menginstal ulang aplikasi atau mengganti perangkat.
|
|
68
|
+
- [ ] Siapkan handler event background untuk memproses pesan masuk saat aplikasi ditutup (killed).
|
|
69
|
+
|
|
70
|
+
## Integrasi Orkestrasi
|
|
71
|
+
- Terintegrasi dengan: `mobile-expo-expert`, `event-driven-architect`, `database-orm-expert`.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: modern-css-native-expert
|
|
3
|
+
description: "Expert guide for cutting-edge Native CSS (2026 Standard) — CSS Anchor Positioning, @starting-style, View Transitions Level 2, Container Queries, and :has() / Panduan ahli fitur CSS native modern 2026."
|
|
4
|
+
author: "Roedy Rustam"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Modern Native CSS Expert (2026 Standard & Primitives)
|
|
8
|
+
|
|
9
|
+
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
<a name="english"></a>
|
|
14
|
+
## English
|
|
15
|
+
|
|
16
|
+
### Purpose & Overview
|
|
17
|
+
Production-grade engineering guide for modern **Native CSS features (2026 Edition)** that replace cumbersome JavaScript libraries with pure browser-native primitives. Covers the **CSS Anchor Positioning API** for tooltips/popovers, **`@starting-style`** for smooth entry/exit animations on top-layer elements (`<dialog>`, `popover`), **View Transitions API Level 2**, **Container Queries (`@container`)**, and the **`:has()`** relational selector.
|
|
18
|
+
|
|
19
|
+
### Key Capabilities
|
|
20
|
+
1. **CSS Anchor Positioning**: Eliminating Floating UI / Popper.js dependencies. Tether tooltips, menus, and popovers to trigger elements natively with auto-flip fallbacks (`position-try-fallbacks`).
|
|
21
|
+
2. **Smooth Top-Layer Transitions**: Animating `<dialog>` and `[popover]` elements from `display: none` to visible with `@starting-style` and `transition-behavior: allow-discrete`.
|
|
22
|
+
3. **Container Queries (`@container`)**: Component-level responsive design based on parent container dimensions rather than viewport width.
|
|
23
|
+
4. **Relational `:has()` Selector**: Styling parent containers or sibling trees based on nested child states without React/JS state overhead.
|
|
24
|
+
5. **Native CSS Nesting & `@layer`**: Structuring clean, zero-build styles with cascade priority layers.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### Production Implementation Recipes
|
|
29
|
+
|
|
30
|
+
#### Recipe 1: Pure Native Anchor Positioning for Tooltips & Dropdowns (No JS)
|
|
31
|
+
```css
|
|
32
|
+
/* Define the anchor trigger button */
|
|
33
|
+
.anchor-trigger {
|
|
34
|
+
anchor-name: --my-dropdown-anchor;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Tether the popover menu to the anchor trigger */
|
|
38
|
+
.dropdown-menu {
|
|
39
|
+
position: fixed;
|
|
40
|
+
position-anchor: --my-dropdown-anchor;
|
|
41
|
+
|
|
42
|
+
/* Place below the anchor by default */
|
|
43
|
+
top: anchor(bottom);
|
|
44
|
+
left: anchor(left);
|
|
45
|
+
margin-top: 8px;
|
|
46
|
+
|
|
47
|
+
/* Automatic flip to top if screen boundary is reached */
|
|
48
|
+
position-try-fallbacks: flip-block;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Recipe 2: Smooth `<dialog>` Entry/Exit Animation with `@starting-style`
|
|
53
|
+
```css
|
|
54
|
+
/* Dialog element with discrete transition support */
|
|
55
|
+
dialog {
|
|
56
|
+
opacity: 0;
|
|
57
|
+
transform: scale(0.95) translateY(10px);
|
|
58
|
+
transition: opacity 0.25s ease-out, transform 0.25s ease-out, display 0.25s allow-discrete;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Open state */
|
|
62
|
+
dialog[open] {
|
|
63
|
+
opacity: 1;
|
|
64
|
+
transform: scale(1) translateY(0);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Starting style when transitioning from display: none to open */
|
|
68
|
+
@starting-style {
|
|
69
|
+
dialog[open] {
|
|
70
|
+
opacity: 0;
|
|
71
|
+
transform: scale(0.95) translateY(10px);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Backdrop smooth fade */
|
|
76
|
+
dialog::backdrop {
|
|
77
|
+
background-color: rgb(0 0 0 / 0%);
|
|
78
|
+
transition: background-color 0.25s ease-out, display 0.25s allow-discrete;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
dialog[open]::backdrop {
|
|
82
|
+
background-color: rgb(0 0 0 / 50%);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@starting-style {
|
|
86
|
+
dialog[open]::backdrop {
|
|
87
|
+
background-color: rgb(0 0 0 / 0%);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### Implementation Checklist
|
|
95
|
+
- [ ] Replace JS positioning libraries (Popper, Floating UI) with native `anchor-name` and `position-anchor`.
|
|
96
|
+
- [ ] Use `@starting-style` and `transition-behavior: allow-discrete` for animating modals and popovers without JavaScript timers.
|
|
97
|
+
- [ ] Use `@container` on modular components to allow seamless reuse across sidebars, grids, and modals.
|
|
98
|
+
- [ ] Organize design tokens and reset styles into `@layer` (e.g. `@layer base, components, utilities;`).
|
|
99
|
+
|
|
100
|
+
## Orchestration & Integration
|
|
101
|
+
- Integrates with: `design-system-architect`, `ui-components-expert`, `tailwind-expert`, `senior-frontend`.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
<a name="bahasa-indonesia"></a>
|
|
106
|
+
## Bahasa Indonesia
|
|
107
|
+
|
|
108
|
+
### Tujuan & Gambaran Umum
|
|
109
|
+
Panduan rekayasa tingkat produksi untuk memanfaatkan **Fitur CSS Native Modern (Standar 2026)** yang menggantikan pustaka JavaScript berukuran besar dengan fitur asli browser. Mencakup **CSS Anchor Positioning API** untuk tooltip dan popover, **`@starting-style`** untuk animasi masuk dan keluar yang mulus pada elemen *top-layer* (`<dialog>`, `popover`), **View Transitions API Level 2**, **Container Queries (`@container`)**, dan selektor relasional **`:has()`**.
|
|
110
|
+
|
|
111
|
+
### Kemampuan Utama
|
|
112
|
+
1. **CSS Anchor Positioning**: Menghapus ketergantungan pada pustaka seperti Floating UI atau Popper.js. Mengikat tooltip, menu, dan popover ke tombol pemicu secara native dengan pembalikan posisi otomatis (`position-try-fallbacks`).
|
|
113
|
+
2. **Animasi Mulus Top-Layer**: Menganimasikan dialog dari status `display: none` ke tampil menggunakan `@starting-style` dan `transition-behavior: allow-discrete`.
|
|
114
|
+
3. **Container Queries (`@container`)**: Desain responsif berbasis ukuran kontainer induk, bukan lebar layar viewport.
|
|
115
|
+
4. **Selektor Relasional `:has()`**: Menata gaya elemen induk berdasarkan status elemen anak di dalamnya tanpa membutuhkan *state* JavaScript.
|
|
116
|
+
5. **Nesting Native & `@layer`**: Mengatur hierarki gaya CSS tanpa alat build dan mengontrol urutan spesifisitas secara terstruktur.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### Resep Implementasi Produksi
|
|
121
|
+
|
|
122
|
+
#### Resep 1: Anchor Positioning Murni untuk Menu Dropdown (Tanpa JavaScript)
|
|
123
|
+
```css
|
|
124
|
+
/* Definisikan tombol pemicu sebagai jangkar (anchor) */
|
|
125
|
+
.tombol-pemicu {
|
|
126
|
+
anchor-name: --jangkar-menu;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Hubungkan menu popover ke tombol pemicu */
|
|
130
|
+
.menu-dropdown {
|
|
131
|
+
position: fixed;
|
|
132
|
+
position-anchor: --jangkar-menu;
|
|
133
|
+
|
|
134
|
+
/* Posisikan di bawah tombol pemicu */
|
|
135
|
+
top: anchor(bottom);
|
|
136
|
+
left: anchor(left);
|
|
137
|
+
margin-top: 8px;
|
|
138
|
+
|
|
139
|
+
/* Balik posisi ke atas jika terpotong batas layar */
|
|
140
|
+
position-try-fallbacks: flip-block;
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### Resep 2: Animasi Modal `<dialog>` dengan `@starting-style`
|
|
145
|
+
```css
|
|
146
|
+
dialog {
|
|
147
|
+
opacity: 0;
|
|
148
|
+
transform: scale(0.95) translateY(10px);
|
|
149
|
+
transition: opacity 0.25s ease-out, transform 0.25s ease-out, display 0.25s allow-discrete;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
dialog[open] {
|
|
153
|
+
opacity: 1;
|
|
154
|
+
transform: scale(1) translateY(0);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@starting-style {
|
|
158
|
+
dialog[open] {
|
|
159
|
+
opacity: 0;
|
|
160
|
+
transform: scale(0.95) translateY(10px);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
dialog::backdrop {
|
|
165
|
+
background-color: rgb(0 0 0 / 0%);
|
|
166
|
+
transition: background-color 0.25s ease-out, display 0.25s allow-discrete;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
dialog[open]::backdrop {
|
|
170
|
+
background-color: rgb(0 0 0 / 50%);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@starting-style {
|
|
174
|
+
dialog[open]::backdrop {
|
|
175
|
+
background-color: rgb(0 0 0 / 0%);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
### Checklist Implementasi
|
|
183
|
+
- [ ] Ganti library positioning pihak ketiga dengan CSS `anchor-name` dan `position-anchor`.
|
|
184
|
+
- [ ] Gunakan `@starting-style` dan `transition-behavior: allow-discrete` untuk animasi modal tanpa jeda JavaScript.
|
|
185
|
+
- [ ] Gunakan `@container` pada komponen reusable agar adaptif di semua layout.
|
|
186
|
+
- [ ] Tata arsitektur CSS menggunakan `@layer base, components, utilities;`.
|
|
187
|
+
|
|
188
|
+
## Integrasi Orkestrasi
|
|
189
|
+
- Terintegrasi dengan: `design-system-architect`, `ui-components-expert`, `tailwind-expert`, `senior-frontend`.
|