This page covers the most frequently encountered problems when setting up, building, and running SkinFirts, along with step-by-step resolutions. Issues are grouped by the stage at which they appear — bundler, native build, runtime, and API. If your issue is not listed here, consult the React Native troubleshooting guide linked at the bottom of this page.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BhushanBadhe39/SkinFirts/llms.txt
Use this file to discover all available pages before exploring further.
Metro bundler won't start
Metro bundler won't start
Metro may fail to start if the cache is stale or corrupted, particularly after upgrading a dependency or switching branches.Fix: Clear the Metro cache and restart:If the problem persists, also remove the Watchman cache:
iOS build fails after adding a native dependency
iOS build fails after adding a native dependency
React Native libraries that include native iOS code (Objective-C or Swift modules) must be linked via CocoaPods. Forgetting to re-run CocoaPods after If this is your first time cloning the project, run
npm install is the most common cause of iOS build failures after adding a dependency.Fix: Install CocoaPods dependencies from the project root, then rebuild:bundle install first to install the correct CocoaPods version:Android build fails with SDK/JDK errors
Android build fails with SDK/JDK errors
The Android toolchain requires a compatible Java Development Kit and Android SDK. Common error messages include
JAVA_HOME is not set, SDK location not found, or Gradle version conflicts.Fix:Install Java 17+
Download and install Java 17 or later. Set the
JAVA_HOME environment variable to point to the JDK installation directory.Install Android SDK via Android Studio
Open Android Studio → SDK Manager and install the Android SDK platform matching the
targetSdkVersion in android/build.gradle. Ensure the ANDROID_HOME environment variable is also set.App crashes on launch with 'Unable to resolve module'
App crashes on launch with 'Unable to resolve module'
This error means Metro cannot locate a JavaScript module. It usually happens after a dependency installation goes wrong, the On iOS, also reinstall CocoaPods dependencies after
node_modules folder is out of sync, or the Metro cache refers to old paths.Fix: Perform a full clean and reinstall:npm install:Doctors list not loading / API errors
Doctors list not loading / API errors
The app fetches doctor data from a MockAPI endpoint defined in
src/api/Client.js. Loading failures are typically caused by network issues, an unreachable MockAPI URL, or a request timeout.Checks to perform:- Confirm your device or simulator has network connectivity.
- Verify that the
baseURLinsrc/api/Client.js(https://6a63416d1bffb2ffab8bf093.mockapi.io) is reachable from your machine by opening it in a browser. - The
apiClienthas atimeoutof 10 seconds (10000ms). If MockAPI is slow to respond, the request is aborted and an error is thrown. Try again once MockAPI is responsive. - Check that the
doctorDataresource exists and contains records in the MockAPI dashboard.
src/api/Client.js (excerpt)
Login always fails
Login always fails
loginUser in authService.js matches credentials against the full users list fetched from MockAPI. Login will always return false if the credentials or the backend data don’t line up.Checks to perform:- Confirm the test account exists in the MockAPI
usersresource dashboard. - The email comparison is case-insensitive and trimmed —
" User@Example.com "will match"user@example.com". - The password comparison is exact match (
===) — there is no client-side hashing. Make sure the value stored in MockAPI is identical to what the login form submits. - If you recently created the account with
signUpUser, confirm the POST succeeded and the new record appears in MockAPI.
SVG assets not rendering
SVG assets not rendering
SVG files are only usable as React components if the Metro SVG transformer is correctly configured and the file is imported as a default import.Checks to perform:
- Confirm
metro.config.jscontains the SVG transformer configuration:
metro.config.js (excerpt)
- Import the SVG as a default import (not a named import):
- Restart Metro with
--reset-cacheafter any change tometro.config.js.
Fast Refresh not working
Fast Refresh not working
Fast Refresh automatically updates the running app when you save a source file. If changes are not reflected in the running app, try a manual reload.
- Android emulator / device: Press R twice, or open the Dev Menu with Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS) and tap Reload.
- iOS Simulator: Press R while the Simulator window is focused.
CocoaPods version mismatch
CocoaPods version mismatch
Running
pod install directly (without bundle exec) uses whatever version of CocoaPods is installed globally, which may differ from the version pinned for this project. Version mismatches can cause unexpected pod resolution failures.Fix: Always use the Bundler-managed CocoaPods version:AsyncStorage data persists after logout
AsyncStorage data persists after logout
If a user appears to remain logged in after tapping the logout button, the most likely cause is that
logoutUser was not awaited before the navigation reset fired.logoutUser is async and calls AsyncStorage.removeItem internally. If the navigation reset triggers synchronously before the removeItem promise settles, the new screen may read the stale @user_account_details key before it is deleted.Fix: Always await logoutUser before resetting navigation:For issues not covered above — such as environment setup, native debugging, or platform-specific build errors — see the official React Native Troubleshooting page.