@nextsparkjs/ai-workflow 0.1.0-beta.100
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/LICENSE +21 -0
- package/README.md +115 -0
- package/claude/_docs/workflows-optimizations.md +359 -0
- package/claude/agents/api-tester.md +634 -0
- package/claude/agents/architecture-supervisor.md +1351 -0
- package/claude/agents/backend-developer.md +997 -0
- package/claude/agents/backend-validator.md +417 -0
- package/claude/agents/bdd-docs-writer.md +737 -0
- package/claude/agents/block-developer.md +677 -0
- package/claude/agents/code-reviewer.md +1432 -0
- package/claude/agents/db-developer.md +721 -0
- package/claude/agents/db-validator.md +407 -0
- package/claude/agents/demo-video-generator.md +493 -0
- package/claude/agents/documentation-writer.md +1268 -0
- package/claude/agents/frontend-developer.md +1234 -0
- package/claude/agents/frontend-validator.md +777 -0
- package/claude/agents/functional-validator.md +630 -0
- package/claude/agents/mock-analyst.md +387 -0
- package/claude/agents/product-manager.md +963 -0
- package/claude/agents/qa-automation.md +1762 -0
- package/claude/agents/release-manager.md +634 -0
- package/claude/agents/selectors-translator.md +262 -0
- package/claude/agents/unit-test-writer.md +785 -0
- package/claude/agents/visual-comparator.md +329 -0
- package/claude/agents/workflow-maintainer.md +352 -0
- package/claude/commands/do/README.md +88 -0
- package/claude/commands/do/create-api.md +64 -0
- package/claude/commands/do/create-entity.md +66 -0
- package/claude/commands/do/create-migration.md +64 -0
- package/claude/commands/do/create-plugin.md +56 -0
- package/claude/commands/do/create-theme.md +70 -0
- package/claude/commands/do/mock-data.md +67 -0
- package/claude/commands/do/reset-db.md +71 -0
- package/claude/commands/do/setup-scheduled-action.md +75 -0
- package/claude/commands/do/sync-code-review.md +117 -0
- package/claude/commands/do/update-selectors.md +112 -0
- package/claude/commands/do/use-skills.md +90 -0
- package/claude/commands/do/validate-blocks.md +69 -0
- package/claude/commands/how-to/README.md +261 -0
- package/claude/commands/how-to/add-metadata.md +692 -0
- package/claude/commands/how-to/add-taxonomies.md +806 -0
- package/claude/commands/how-to/add-translations.md +571 -0
- package/claude/commands/how-to/create-api.md +577 -0
- package/claude/commands/how-to/create-block.md +575 -0
- package/claude/commands/how-to/create-child-entities.md +771 -0
- package/claude/commands/how-to/create-entity.md +597 -0
- package/claude/commands/how-to/create-migrations.md +605 -0
- package/claude/commands/how-to/create-plugin.md +654 -0
- package/claude/commands/how-to/customize-app.md +481 -0
- package/claude/commands/how-to/customize-dashboard.md +553 -0
- package/claude/commands/how-to/customize-theme.md +438 -0
- package/claude/commands/how-to/define-features-flows.md +632 -0
- package/claude/commands/how-to/deploy.md +507 -0
- package/claude/commands/how-to/handle-file-uploads.md +746 -0
- package/claude/commands/how-to/implement-search.md +1001 -0
- package/claude/commands/how-to/install-plugins.md +352 -0
- package/claude/commands/how-to/manage-test-coverage.md +984 -0
- package/claude/commands/how-to/run-tests.md +400 -0
- package/claude/commands/how-to/set-app-languages.md +601 -0
- package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
- package/claude/commands/how-to/set-scheduled-actions.md +527 -0
- package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
- package/claude/commands/how-to/setup-authentication.md +388 -0
- package/claude/commands/how-to/setup-claude-code.md +440 -0
- package/claude/commands/how-to/setup-database.md +274 -0
- package/claude/commands/how-to/setup-email-providers.md +598 -0
- package/claude/commands/how-to/setup-mobile-dev.md +627 -0
- package/claude/commands/how-to/start.md +500 -0
- package/claude/commands/how-to/use-devtools.md +639 -0
- package/claude/commands/how-to/use-superadmin.md +622 -0
- package/claude/commands/session/README.md +193 -0
- package/claude/commands/session/block-create.md +190 -0
- package/claude/commands/session/block-list.md +203 -0
- package/claude/commands/session/block-update.md +192 -0
- package/claude/commands/session/block-validate.md +218 -0
- package/claude/commands/session/changelog.md +115 -0
- package/claude/commands/session/close.md +225 -0
- package/claude/commands/session/commit.md +174 -0
- package/claude/commands/session/db-entity.md +206 -0
- package/claude/commands/session/db-fix.md +212 -0
- package/claude/commands/session/db-sample.md +206 -0
- package/claude/commands/session/demo.md +178 -0
- package/claude/commands/session/doc-bdd.md +207 -0
- package/claude/commands/session/doc-feature.md +218 -0
- package/claude/commands/session/doc-read.md +225 -0
- package/claude/commands/session/execute.md +204 -0
- package/claude/commands/session/explain.md +202 -0
- package/claude/commands/session/fix-bug.md +210 -0
- package/claude/commands/session/fix-build.md +182 -0
- package/claude/commands/session/fix-test.md +189 -0
- package/claude/commands/session/pending.md +232 -0
- package/claude/commands/session/refine.md +188 -0
- package/claude/commands/session/resume.md +192 -0
- package/claude/commands/session/review.md +192 -0
- package/claude/commands/session/scope-change.md +181 -0
- package/claude/commands/session/start-blocks.md +347 -0
- package/claude/commands/session/start.md +604 -0
- package/claude/commands/session/status.md +169 -0
- package/claude/commands/session/test-fix.md +221 -0
- package/claude/commands/session/test-run.md +203 -0
- package/claude/commands/session/test-write.md +242 -0
- package/claude/commands/session/validate.md +162 -0
- package/claude/config/context.json +40 -0
- package/claude/config/github.json +69 -0
- package/claude/config/github.schema.json +106 -0
- package/claude/config/team.json +46 -0
- package/claude/config/team.schema.json +106 -0
- package/claude/config/workspace.json +43 -0
- package/claude/config/workspace.schema.json +75 -0
- package/claude/skills/README.md +228 -0
- package/claude/skills/accessibility/SKILL.md +573 -0
- package/claude/skills/api-bypass-layers/SKILL.md +550 -0
- package/claude/skills/asana-integration/SKILL.md +499 -0
- package/claude/skills/better-auth/SKILL.md +666 -0
- package/claude/skills/billing-subscriptions/SKILL.md +660 -0
- package/claude/skills/block-decision-matrix/SKILL.md +359 -0
- package/claude/skills/clickup-integration/SKILL.md +434 -0
- package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
- package/claude/skills/create-plugin/SKILL.md +425 -0
- package/claude/skills/create-theme/SKILL.md +331 -0
- package/claude/skills/cypress-api/SKILL.md +511 -0
- package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
- package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
- package/claude/skills/cypress-e2e/SKILL.md +526 -0
- package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
- package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
- package/claude/skills/cypress-selectors/SKILL.md +309 -0
- package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
- package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
- package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
- package/claude/skills/database-migrations/SKILL.md +335 -0
- package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
- package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
- package/claude/skills/design-system/SKILL.md +682 -0
- package/claude/skills/documentation/SKILL.md +540 -0
- package/claude/skills/entity-api/SKILL.md +482 -0
- package/claude/skills/entity-system/SKILL.md +635 -0
- package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
- package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
- package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
- package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
- package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
- package/claude/skills/github/SKILL.md +467 -0
- package/claude/skills/i18n-nextintl/SKILL.md +302 -0
- package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
- package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
- package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
- package/claude/skills/impact-analysis/SKILL.md +203 -0
- package/claude/skills/jest-unit/SKILL.md +306 -0
- package/claude/skills/jest-unit/references/component-testing.md +371 -0
- package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
- package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
- package/claude/skills/jira-integration/SKILL.md +539 -0
- package/claude/skills/media-library/SKILL.md +743 -0
- package/claude/skills/mock-analysis/SKILL.md +276 -0
- package/claude/skills/monorepo-architecture/SKILL.md +162 -0
- package/claude/skills/nextjs-api-development/SKILL.md +364 -0
- package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
- package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
- package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
- package/claude/skills/notion-integration/SKILL.md +641 -0
- package/claude/skills/npm-development-workflow/SKILL.md +480 -0
- package/claude/skills/page-builder-blocks/SKILL.md +530 -0
- package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
- package/claude/skills/permissions-system/SKILL.md +619 -0
- package/claude/skills/plugins/SKILL.md +340 -0
- package/claude/skills/plugins/references/plugin-templates.md +414 -0
- package/claude/skills/plugins/references/plugin-testing.md +353 -0
- package/claude/skills/plugins/references/plugin-types.md +198 -0
- package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
- package/claude/skills/pom-patterns/SKILL.md +452 -0
- package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
- package/claude/skills/rate-limiting/SKILL.md +342 -0
- package/claude/skills/react-best-practices/AGENTS.md +2410 -0
- package/claude/skills/react-best-practices/README.md +123 -0
- package/claude/skills/react-best-practices/SKILL.md +125 -0
- package/claude/skills/react-best-practices/metadata.json +15 -0
- package/claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/claude/skills/react-best-practices/rules/_template.md +28 -0
- package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/claude/skills/react-patterns/SKILL.md +688 -0
- package/claude/skills/registry-system/SKILL.md +331 -0
- package/claude/skills/scheduled-actions/SKILL.md +671 -0
- package/claude/skills/scope-enforcement/SKILL.md +542 -0
- package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
- package/claude/skills/server-actions/SKILL.md +493 -0
- package/claude/skills/service-layer/SKILL.md +587 -0
- package/claude/skills/session-management/SKILL.md +266 -0
- package/claude/skills/session-management/scripts/create-session.py +166 -0
- package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
- package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
- package/claude/skills/session-management/scripts/session-archive.sh +87 -0
- package/claude/skills/session-management/scripts/session-close.sh +133 -0
- package/claude/skills/session-management/scripts/session-init.sh +225 -0
- package/claude/skills/session-management/scripts/session-list.sh +163 -0
- package/claude/skills/session-management/scripts/split-plan.sh +116 -0
- package/claude/skills/shadcn-components/SKILL.md +586 -0
- package/claude/skills/shadcn-theming/SKILL.md +446 -0
- package/claude/skills/suspense-loading/SKILL.md +280 -0
- package/claude/skills/tailwind-theming/SKILL.md +507 -0
- package/claude/skills/tanstack-query/SKILL.md +608 -0
- package/claude/skills/test-coverage/SKILL.md +239 -0
- package/claude/skills/web-design-guidelines/SKILL.md +39 -0
- package/claude/skills/zod-validation/SKILL.md +537 -0
- package/claude/templates/blocks/progress.md +86 -0
- package/claude/templates/iteration/changes.md +61 -0
- package/claude/templates/iteration/progress.md +55 -0
- package/claude/templates/log.md +31 -0
- package/claude/templates/story/context.md +77 -0
- package/claude/templates/story/pendings.md +37 -0
- package/claude/templates/story/plan.md +299 -0
- package/claude/templates/story/requirements.md +109 -0
- package/claude/templates/story/scope.json +10 -0
- package/claude/templates/story/tests.md +91 -0
- package/claude/templates/task/progress.md +58 -0
- package/claude/templates/task/requirements.md +54 -0
- package/claude/workflows/README.md +154 -0
- package/claude/workflows/blocks.md +614 -0
- package/claude/workflows/story.md +1207 -0
- package/claude/workflows/task.md +927 -0
- package/claude/workflows/tweak.md +527 -0
- package/cursor/.gitkeep +0 -0
- package/package.json +35 -0
- package/scripts/postinstall.mjs +198 -0
- package/scripts/setup.mjs +282 -0
- package/scripts/sync.mjs +209 -0
|
@@ -0,0 +1,627 @@
|
|
|
1
|
+
# /how-to:setup-mobile-dev
|
|
2
|
+
|
|
3
|
+
Interactive guide to set up your development environment for NextSpark Mobile (Android & iOS).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Syntax
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/how-to:setup-mobile-dev
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Behavior
|
|
16
|
+
|
|
17
|
+
Guides the user through setting up Android Studio, Xcode, environment variables, and understanding the difference between Expo Go and Development Builds.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Tutorial Overview
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
STEPS OVERVIEW (5 steps)
|
|
25
|
+
|
|
26
|
+
Step 1: Prerequisites & Environment Check
|
|
27
|
+
└── Node, pnpm, Expo CLI verification
|
|
28
|
+
|
|
29
|
+
Step 2: Android Development Setup
|
|
30
|
+
└── Android Studio, SDK, Emulator, Environment Variables
|
|
31
|
+
|
|
32
|
+
Step 3: iOS Development Setup (macOS only)
|
|
33
|
+
└── Xcode, CocoaPods, Simulator
|
|
34
|
+
|
|
35
|
+
Step 4: Understanding Expo Go vs Development Builds
|
|
36
|
+
└── Limitations, when to use each approach
|
|
37
|
+
|
|
38
|
+
Step 5: Running Your First Build
|
|
39
|
+
└── expo prebuild, expo run:android/ios
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Step 1: Prerequisites & Environment Check
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
48
|
+
📱 HOW TO: SETUP MOBILE DEVELOPMENT
|
|
49
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
50
|
+
|
|
51
|
+
STEP 1 OF 5: Prerequisites & Environment Check
|
|
52
|
+
|
|
53
|
+
Verify your system has the required tools installed.
|
|
54
|
+
|
|
55
|
+
┌─────────────────────────────────────────────┐
|
|
56
|
+
│ PREREQUISITES CHECKLIST │
|
|
57
|
+
│ ───────────────────────────────────────── │
|
|
58
|
+
│ │
|
|
59
|
+
│ [ ] Node.js 18+ installed │
|
|
60
|
+
│ node --version │
|
|
61
|
+
│ │
|
|
62
|
+
│ [ ] pnpm installed │
|
|
63
|
+
│ pnpm --version │
|
|
64
|
+
│ │
|
|
65
|
+
│ [ ] Expo CLI available │
|
|
66
|
+
│ npx expo --version │
|
|
67
|
+
│ │
|
|
68
|
+
│ [ ] Git installed │
|
|
69
|
+
│ git --version │
|
|
70
|
+
│ │
|
|
71
|
+
└─────────────────────────────────────────────┘
|
|
72
|
+
|
|
73
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
74
|
+
|
|
75
|
+
📋 Verify Prerequisites:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Check Node.js version (18+ required)
|
|
79
|
+
node --version
|
|
80
|
+
# v18.0.0 or higher
|
|
81
|
+
|
|
82
|
+
# Check pnpm
|
|
83
|
+
pnpm --version
|
|
84
|
+
# 8.0.0 or higher
|
|
85
|
+
|
|
86
|
+
# Check Expo CLI (will install if missing)
|
|
87
|
+
npx expo --version
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
|
|
92
|
+
📋 Install Missing Prerequisites:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Install pnpm (if missing)
|
|
96
|
+
npm install -g pnpm
|
|
97
|
+
|
|
98
|
+
# Expo CLI is included via npx, no global install needed
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Step 2: Android Development Setup
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
110
|
+
📱 HOW TO: SETUP MOBILE DEVELOPMENT
|
|
111
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
112
|
+
|
|
113
|
+
STEP 2 OF 5: Android Development Setup
|
|
114
|
+
|
|
115
|
+
Set up Android Studio and configure environment variables.
|
|
116
|
+
|
|
117
|
+
┌─────────────────────────────────────────────┐
|
|
118
|
+
│ ANDROID SETUP CHECKLIST │
|
|
119
|
+
│ ───────────────────────────────────────── │
|
|
120
|
+
│ │
|
|
121
|
+
│ [ ] Install Android Studio │
|
|
122
|
+
│ [ ] Install Android SDK (API 34+) │
|
|
123
|
+
│ [ ] Create Android Virtual Device (AVD) │
|
|
124
|
+
│ [ ] Configure environment variables │
|
|
125
|
+
│ │
|
|
126
|
+
└─────────────────────────────────────────────┘
|
|
127
|
+
|
|
128
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
129
|
+
|
|
130
|
+
📋 Step 2.1: Install Android Studio
|
|
131
|
+
|
|
132
|
+
1. Download Android Studio from:
|
|
133
|
+
https://developer.android.com/studio
|
|
134
|
+
|
|
135
|
+
2. Run the installer and follow the setup wizard
|
|
136
|
+
|
|
137
|
+
3. During setup, ensure these are selected:
|
|
138
|
+
- Android SDK
|
|
139
|
+
- Android SDK Platform
|
|
140
|
+
- Android Virtual Device
|
|
141
|
+
|
|
142
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
143
|
+
|
|
144
|
+
📋 Step 2.2: Install Android SDK
|
|
145
|
+
|
|
146
|
+
1. Open Android Studio
|
|
147
|
+
2. Go to: Settings/Preferences → Languages & Frameworks → Android SDK
|
|
148
|
+
3. In "SDK Platforms" tab, select:
|
|
149
|
+
- Android 14 (API 34) or higher
|
|
150
|
+
4. In "SDK Tools" tab, ensure these are installed:
|
|
151
|
+
- Android SDK Build-Tools
|
|
152
|
+
- Android SDK Command-line Tools
|
|
153
|
+
- Android Emulator
|
|
154
|
+
- Android SDK Platform-Tools
|
|
155
|
+
|
|
156
|
+
Click "Apply" to install selected components.
|
|
157
|
+
|
|
158
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
159
|
+
|
|
160
|
+
📋 Step 2.3: Create Android Virtual Device (AVD)
|
|
161
|
+
|
|
162
|
+
1. In Android Studio, go to: Tools → Device Manager
|
|
163
|
+
2. Click "Create Device"
|
|
164
|
+
3. Select a device (e.g., Pixel 7)
|
|
165
|
+
4. Select a system image (API 34 recommended)
|
|
166
|
+
5. Name your AVD and click "Finish"
|
|
167
|
+
|
|
168
|
+
To start the emulator:
|
|
169
|
+
- Click the play button next to your AVD in Device Manager
|
|
170
|
+
- Or use command line:
|
|
171
|
+
```bash
|
|
172
|
+
emulator -avd <your-avd-name>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
176
|
+
|
|
177
|
+
📋 Step 2.4: Configure Environment Variables
|
|
178
|
+
|
|
179
|
+
Add these to your shell configuration file (~/.zshrc or ~/.bashrc):
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Java (bundled with Android Studio)
|
|
183
|
+
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
|
184
|
+
|
|
185
|
+
# Android SDK
|
|
186
|
+
export ANDROID_HOME="$HOME/Library/Android/sdk"
|
|
187
|
+
|
|
188
|
+
# Add tools to PATH
|
|
189
|
+
export PATH="$JAVA_HOME/bin:$PATH"
|
|
190
|
+
export PATH="$ANDROID_HOME/platform-tools:$PATH"
|
|
191
|
+
export PATH="$ANDROID_HOME/emulator:$PATH"
|
|
192
|
+
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
After editing, reload your shell:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
source ~/.zshrc
|
|
199
|
+
# or
|
|
200
|
+
source ~/.bashrc
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
204
|
+
|
|
205
|
+
📋 Verify Android Setup:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
# Check Java
|
|
209
|
+
java -version
|
|
210
|
+
|
|
211
|
+
# Check Android SDK
|
|
212
|
+
adb --version
|
|
213
|
+
|
|
214
|
+
# Check emulator
|
|
215
|
+
emulator -list-avds
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Step 3: iOS Development Setup (macOS only)
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
227
|
+
📱 HOW TO: SETUP MOBILE DEVELOPMENT
|
|
228
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
229
|
+
|
|
230
|
+
STEP 3 OF 5: iOS Development Setup (macOS only)
|
|
231
|
+
|
|
232
|
+
Set up Xcode and CocoaPods for iOS development.
|
|
233
|
+
|
|
234
|
+
⚠️ iOS development requires macOS with Xcode installed.
|
|
235
|
+
Skip this step if you're on Windows or Linux.
|
|
236
|
+
|
|
237
|
+
┌─────────────────────────────────────────────┐
|
|
238
|
+
│ iOS SETUP CHECKLIST │
|
|
239
|
+
│ ───────────────────────────────────────── │
|
|
240
|
+
│ │
|
|
241
|
+
│ [ ] Install Xcode from App Store │
|
|
242
|
+
│ [ ] Accept Xcode license │
|
|
243
|
+
│ [ ] Install Xcode Command Line Tools │
|
|
244
|
+
│ [ ] Install CocoaPods │
|
|
245
|
+
│ [ ] Configure iOS Simulator │
|
|
246
|
+
│ │
|
|
247
|
+
└─────────────────────────────────────────────┘
|
|
248
|
+
|
|
249
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
250
|
+
|
|
251
|
+
📋 Step 3.1: Install Xcode
|
|
252
|
+
|
|
253
|
+
1. Open the Mac App Store
|
|
254
|
+
2. Search for "Xcode"
|
|
255
|
+
3. Click "Get" / "Install" (requires Apple ID)
|
|
256
|
+
4. Wait for download (15+ GB)
|
|
257
|
+
|
|
258
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
259
|
+
|
|
260
|
+
📋 Step 3.2: Accept License & Install CLI Tools
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Accept Xcode license
|
|
264
|
+
sudo xcodebuild -license accept
|
|
265
|
+
|
|
266
|
+
# Install command line tools
|
|
267
|
+
xcode-select --install
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
271
|
+
|
|
272
|
+
📋 Step 3.3: Install CocoaPods
|
|
273
|
+
|
|
274
|
+
CocoaPods is a dependency manager for iOS projects.
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# Install CocoaPods via Homebrew (recommended)
|
|
278
|
+
brew install cocoapods
|
|
279
|
+
|
|
280
|
+
# Or via RubyGems
|
|
281
|
+
sudo gem install cocoapods
|
|
282
|
+
|
|
283
|
+
# Verify installation
|
|
284
|
+
pod --version
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
288
|
+
|
|
289
|
+
📋 Step 3.4: Configure iOS Simulator
|
|
290
|
+
|
|
291
|
+
1. Open Xcode
|
|
292
|
+
2. Go to: Xcode → Settings → Platforms
|
|
293
|
+
3. Download iOS Simulator runtime if not present
|
|
294
|
+
4. To open Simulator manually:
|
|
295
|
+
```bash
|
|
296
|
+
open -a Simulator
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Or use Xcode:
|
|
300
|
+
- Go to: Xcode → Open Developer Tool → Simulator
|
|
301
|
+
|
|
302
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
303
|
+
|
|
304
|
+
📋 Verify iOS Setup:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
# Check Xcode version
|
|
308
|
+
xcodebuild -version
|
|
309
|
+
|
|
310
|
+
# Check CocoaPods
|
|
311
|
+
pod --version
|
|
312
|
+
|
|
313
|
+
# List available simulators
|
|
314
|
+
xcrun simctl list devices available
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Step 4: Understanding Expo Go vs Development Builds
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
326
|
+
📱 HOW TO: SETUP MOBILE DEVELOPMENT
|
|
327
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
328
|
+
|
|
329
|
+
STEP 4 OF 5: Understanding Expo Go vs Development Builds
|
|
330
|
+
|
|
331
|
+
Learn the difference and when to use each approach.
|
|
332
|
+
|
|
333
|
+
⚠️ IMPORTANT: Expo Go Limitations
|
|
334
|
+
|
|
335
|
+
NextSpark mobile uses modern native modules
|
|
336
|
+
(react-native-reanimated, gesture-handler) that
|
|
337
|
+
may have version incompatibilities with Expo Go.
|
|
338
|
+
|
|
339
|
+
Common error you might see:
|
|
340
|
+
|
|
341
|
+
┌─────────────────────────────────────────────┐
|
|
342
|
+
│ ERROR: │
|
|
343
|
+
│ "[Worklets] Mismatch between JavaScript │
|
|
344
|
+
│ part and native part of Reanimated" │
|
|
345
|
+
└─────────────────────────────────────────────┘
|
|
346
|
+
|
|
347
|
+
SOLUTION: Use Development Build instead of Expo Go
|
|
348
|
+
|
|
349
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
350
|
+
|
|
351
|
+
📋 Comparison Table:
|
|
352
|
+
|
|
353
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
354
|
+
│ Method │ Command │ Use Case │
|
|
355
|
+
│ ────────────────┼────────────────────────────┼──────────────── │
|
|
356
|
+
│ Expo Go │ npx expo start │ Quick prototype │
|
|
357
|
+
│ │ │ (may fail) │
|
|
358
|
+
│ ────────────────┼────────────────────────────┼──────────────── │
|
|
359
|
+
│ Dev Build │ npx expo prebuild && │ Real development│
|
|
360
|
+
│ (Android) │ npx expo run:android │ (recommended) │
|
|
361
|
+
│ ────────────────┼────────────────────────────┼──────────────── │
|
|
362
|
+
│ Dev Build │ npx expo prebuild && │ Real development│
|
|
363
|
+
│ (iOS) │ npx expo run:ios │ (recommended) │
|
|
364
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
365
|
+
|
|
366
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
367
|
+
|
|
368
|
+
📋 When to Use Each:
|
|
369
|
+
|
|
370
|
+
EXPO GO:
|
|
371
|
+
✓ Quick UI previews
|
|
372
|
+
✓ Simple apps without native modules
|
|
373
|
+
✗ May fail with native module mismatches
|
|
374
|
+
✗ Cannot use custom native code
|
|
375
|
+
|
|
376
|
+
DEVELOPMENT BUILD:
|
|
377
|
+
✓ Full native module support
|
|
378
|
+
✓ Custom native code possible
|
|
379
|
+
✓ Matches production behavior
|
|
380
|
+
✓ Recommended for NextSpark Mobile
|
|
381
|
+
|
|
382
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
383
|
+
|
|
384
|
+
📋 What is "expo prebuild"?
|
|
385
|
+
|
|
386
|
+
The `expo prebuild` command generates native
|
|
387
|
+
iOS and Android project folders:
|
|
388
|
+
|
|
389
|
+
```
|
|
390
|
+
mobile/
|
|
391
|
+
├── android/ ← Generated Android project
|
|
392
|
+
├── ios/ ← Generated iOS project
|
|
393
|
+
├── app/ ← Your Expo Router screens
|
|
394
|
+
├── src/ ← Your source code
|
|
395
|
+
└── app.config.ts
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
This allows you to build and run the app using
|
|
399
|
+
native tooling (Android Studio / Xcode) while
|
|
400
|
+
keeping the Expo development experience.
|
|
401
|
+
|
|
402
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## Step 5: Running Your First Build
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
411
|
+
📱 HOW TO: SETUP MOBILE DEVELOPMENT
|
|
412
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
413
|
+
|
|
414
|
+
STEP 5 OF 5: Running Your First Build
|
|
415
|
+
|
|
416
|
+
Build and run the app on your emulator/simulator.
|
|
417
|
+
|
|
418
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
419
|
+
|
|
420
|
+
📋 Step 5.1: Navigate to Mobile Directory
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
cd mobile
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
427
|
+
|
|
428
|
+
📋 Step 5.2: Install Dependencies
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
pnpm install
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
435
|
+
|
|
436
|
+
📋 Step 5.3: Build for Android
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
# Generate native Android project
|
|
440
|
+
npx expo prebuild --platform android
|
|
441
|
+
|
|
442
|
+
# Build and run on emulator/device
|
|
443
|
+
npx expo run:android
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
First build may take several minutes as it
|
|
447
|
+
downloads Gradle dependencies.
|
|
448
|
+
|
|
449
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
450
|
+
|
|
451
|
+
📋 Step 5.4: Build for iOS (macOS only)
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
# Generate native iOS project
|
|
455
|
+
npx expo prebuild --platform ios
|
|
456
|
+
|
|
457
|
+
# Install CocoaPods dependencies
|
|
458
|
+
cd ios && pod install && cd ..
|
|
459
|
+
|
|
460
|
+
# Build and run on simulator
|
|
461
|
+
npx expo run:ios
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
First build may take several minutes.
|
|
465
|
+
|
|
466
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
467
|
+
|
|
468
|
+
📋 Full Build Commands (Both Platforms):
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
# Clean previous builds (optional)
|
|
472
|
+
npx expo prebuild --clean
|
|
473
|
+
|
|
474
|
+
# Android
|
|
475
|
+
npx expo prebuild --platform android
|
|
476
|
+
npx expo run:android
|
|
477
|
+
|
|
478
|
+
# iOS
|
|
479
|
+
npx expo prebuild --platform ios
|
|
480
|
+
npx expo run:ios
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
484
|
+
|
|
485
|
+
📋 Configure API Connection:
|
|
486
|
+
|
|
487
|
+
For the mobile app to connect to your NextSpark
|
|
488
|
+
web backend, configure the API URL:
|
|
489
|
+
|
|
490
|
+
1. In development, Expo auto-detects the dev server
|
|
491
|
+
|
|
492
|
+
2. For production, set in your app.config.ts or
|
|
493
|
+
use EAS environment variables:
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
# Example: Set production API URL
|
|
497
|
+
EXPO_PUBLIC_API_URL=https://your-app.com
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
501
|
+
|
|
502
|
+
📋 Troubleshooting:
|
|
503
|
+
|
|
504
|
+
ANDROID:
|
|
505
|
+
• "No Java compiler found" / JAVA_HOME not set
|
|
506
|
+
→ This is the #1 cause of Android build failure
|
|
507
|
+
→ JAVA_HOME MUST be set before running expo run:android
|
|
508
|
+
→ Run: echo $JAVA_HOME
|
|
509
|
+
→ Fix: Add to ~/.zshrc:
|
|
510
|
+
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
|
511
|
+
→ Then: source ~/.zshrc
|
|
512
|
+
|
|
513
|
+
• "SDK location not found"
|
|
514
|
+
→ Verify ANDROID_HOME is set correctly
|
|
515
|
+
→ Run: echo $ANDROID_HOME
|
|
516
|
+
|
|
517
|
+
• "No emulators found"
|
|
518
|
+
→ Create AVD in Android Studio Device Manager
|
|
519
|
+
→ Or connect physical device with USB debugging
|
|
520
|
+
|
|
521
|
+
• Login/API calls fail on Android emulator
|
|
522
|
+
→ Android emulator uses a virtual network where
|
|
523
|
+
"localhost" points to the emulator itself, NOT your Mac
|
|
524
|
+
→ The api.config.ts auto-detects your host IP via
|
|
525
|
+
Expo's hostUri, so this should work automatically
|
|
526
|
+
→ If using EXPO_PUBLIC_API_URL in .env, use your
|
|
527
|
+
local IP (e.g., http://192.168.x.x:3000)
|
|
528
|
+
NOT http://localhost:3000
|
|
529
|
+
→ Alternative: http://10.0.2.2:3000 (Android emulator
|
|
530
|
+
special alias for host machine)
|
|
531
|
+
|
|
532
|
+
iOS:
|
|
533
|
+
• "CocoaPods not installed"
|
|
534
|
+
→ Run: brew install cocoapods
|
|
535
|
+
|
|
536
|
+
• "Xcode not found"
|
|
537
|
+
→ Run: xcode-select --install
|
|
538
|
+
|
|
539
|
+
• "Simulator not available"
|
|
540
|
+
→ Open Xcode, download iOS runtime from Settings
|
|
541
|
+
|
|
542
|
+
NETWORKING NOTE:
|
|
543
|
+
iOS Simulator shares the Mac's network stack,
|
|
544
|
+
so "localhost" works. Android Emulator does NOT.
|
|
545
|
+
The api.config.ts handles this automatically via
|
|
546
|
+
Expo's hostUri (uses your real network IP).
|
|
547
|
+
|
|
548
|
+
BOTH:
|
|
549
|
+
• "Worklets mismatch"
|
|
550
|
+
→ Don't use Expo Go, use Development Build
|
|
551
|
+
→ Run: npx expo prebuild --clean
|
|
552
|
+
|
|
553
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
554
|
+
|
|
555
|
+
🎉 SUCCESS!
|
|
556
|
+
|
|
557
|
+
Your mobile development environment is ready.
|
|
558
|
+
You can now build and run NextSpark Mobile.
|
|
559
|
+
|
|
560
|
+
Next steps:
|
|
561
|
+
• Explore the app/ directory for screens
|
|
562
|
+
• Customize src/config/app.config.ts
|
|
563
|
+
• Connect to your NextSpark web backend
|
|
564
|
+
|
|
565
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
## Quick Reference
|
|
571
|
+
|
|
572
|
+
### Environment Variables Template (macOS)
|
|
573
|
+
|
|
574
|
+
Add to `~/.zshrc`:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
# Java (Android Studio bundled JDK)
|
|
578
|
+
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
|
|
579
|
+
|
|
580
|
+
# Android SDK
|
|
581
|
+
export ANDROID_HOME="$HOME/Library/Android/sdk"
|
|
582
|
+
|
|
583
|
+
# Add to PATH
|
|
584
|
+
export PATH="$JAVA_HOME/bin:$PATH"
|
|
585
|
+
export PATH="$ANDROID_HOME/platform-tools:$PATH"
|
|
586
|
+
export PATH="$ANDROID_HOME/emulator:$PATH"
|
|
587
|
+
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### Essential Commands
|
|
591
|
+
|
|
592
|
+
```bash
|
|
593
|
+
# Android build
|
|
594
|
+
cd mobile
|
|
595
|
+
npx expo prebuild --platform android
|
|
596
|
+
npx expo run:android
|
|
597
|
+
|
|
598
|
+
# iOS build (macOS only)
|
|
599
|
+
cd mobile
|
|
600
|
+
npx expo prebuild --platform ios
|
|
601
|
+
npx expo run:ios
|
|
602
|
+
|
|
603
|
+
# Clean rebuild
|
|
604
|
+
npx expo prebuild --clean
|
|
605
|
+
|
|
606
|
+
# Start Metro bundler only
|
|
607
|
+
npx expo start --dev-client
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
### Common Issues
|
|
611
|
+
|
|
612
|
+
| Issue | Solution |
|
|
613
|
+
|-------|----------|
|
|
614
|
+
| No Java compiler found | Set `JAVA_HOME` to Android Studio JBR (see env vars above) |
|
|
615
|
+
| Worklets mismatch | Use Development Build, not Expo Go |
|
|
616
|
+
| SDK not found | Check `ANDROID_HOME` environment variable |
|
|
617
|
+
| Android login/API fails | Use local IP in `.env`, not `localhost` (Android emulator network) |
|
|
618
|
+
| CocoaPods error | Run `brew install cocoapods` |
|
|
619
|
+
| Build fails | Run `npx expo prebuild --clean` |
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
## Related Commands
|
|
624
|
+
|
|
625
|
+
- `/how-to:start` - Get started with NextSpark
|
|
626
|
+
- `/how-to:deploy` - Deploy to production
|
|
627
|
+
- `/how-to:customize-app` - Customize your application
|