When I run this command:
react-native run-ios
My app runs by default in the iPhone6 simulator device:
Found Xcode project RN.xcodeproj
Launching iPhone 6 (9.2)...
How can I have the app run in a different simulator device (like iPhone5s) by default?
This question is related to
react-native
change line code of /node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js
line 55
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== true
) {
continue;
}
replace which:
if (
simulator.availability !== '(available)' &&
simulator.isAvailable !== true
) {
continue;
}
There is a project setting if you hunt down:
{project}/node_modules/react-native/local-cli/runIOS/runIOS.js
Within there are some options under module.exports
including:
options: [{
command: '--simulator [string]',
description: 'Explicitly set simulator to use',
default: 'iPhone 7',
}
Mine was line 231, simply set that to a valid installed simulator and run
react-native run-ios
it will run to that simulator by default.
Here is new path for changing iOS simulator you just need to change
default: 'iPhone 6' or something else
Path:
<project_root>/node_modules/@react-native-community/cli/build/commands/runIOS/runIOS.js
1) Rename your simulator, If simulator with same name but different iOS version
Xcode -> Window -> Devices and Simulators -> Simulators.
2) Open your react native project folder
3) Edit package.json
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest",
"flow": "node_modules/.bin/flow",
"start-iphone6": "react-native run-ios --simulator \"iPhone 6 11.3\""
}
4) npm run start-iphone6
You can create an alias at your ~/.bash_profile
file:
alias rn-ios="react-native run-ios --simulator \"iPhone 5s (10.0)\""
And then run react-native using the created alias:
$ rn-ios
Get device list with this command
xcrun simctl list devices
Console
== Devices ==
-- iOS 13.5 --
iPhone 6s (9981E5A5-48A8-4B48-B203-1C6E73243E83) (Shutdown)
iPhone 8 (FC540A6C-F374-4113-9E71-1291790C8C4C) (Shutting Down)
iPhone 8 Plus (CAC37462-D873-4EBB-9D71-7C6D0C915C12) (Shutdown)
iPhone 11 (347EFE28-9B41-4C1A-A4C3-D99B49300D8B) (Shutting Down)
iPhone 11 Pro (5AE964DC-201C-48C9-BFB5-4506E3A0018F) (Shutdown)
iPhone 11 Pro Max (48EE985A-39A6-426C-88A4-AA1E4AFA0133) (Shutdown)
iPhone SE (2nd generation) (48B78183-AFD7-4832-A80E-AF70844222BA) (Shutdown)
iPad Pro (9.7-inch) (2DEF27C4-6A18-4477-AC7F-FB31CCCB3960) (Shutdown)
iPad (7th generation) (36A4AF6B-1232-4BCB-B74F-226E025225E4) (Shutdown)
iPad Pro (11-inch) (2nd generation) (79391BD7-0E55-44C8-B1F9-AF92A1D57274) (Shutdown)
iPad Pro (12.9-inch) (4th generation) (ED90A31F-6B20-4A6B-9EE9-CF22C01E8793) (Shutdown)
iPad Air (3rd generation) (41AD1CF7-CB0D-4F18-AB1E-6F8B6261AD33) (Shutdown)
-- tvOS 13.4 --
Apple TV 4K (51925935-97F4-4242-902F-041F34A66B82) (Shutdown)
-- watchOS 6.2 --
Apple Watch Series 5 - 40mm (7C50F2E9-A52B-4E0D-8B81-A811FE995502) (Shutdown)
Apple Watch Series 5 - 44mm (F7D8C256-DC9F-4FDC-8E65-63275C222B87) (Shutdown)
Select Simulator string without ID here is an example.
iPad Pro (12.9-inch) (4th generation)
Final command
iPhone
• iPhone 6s
react-native run-ios --simulator="iPhone 6s"
• iPhone 8
react-native run-ios --simulator="iPhone 8"
• iPhone 8 Plus
react-native run-ios --simulator="iPhone 8 Plus"
• iPhone 11
react-native run-ios --simulator="iPhone 11"
• iPhone 11 Pro
react-native run-ios --simulator="iPhone 11 Pro"
• iPhone 11 Pro Max
react-native run-ios --simulator="iPhone 11 Pro Max"
• iPhone SE (2nd generation)
react-native run-ios --simulator="iPhone SE (2nd generation)"
iPad
• iPad Pro (9.7-inch)
react-native run-ios --simulator="iPad Pro (9.7-inch)"
• iPad (7th generation)
react-native run-ios --simulator="iPad (7th generation)"
• iPad Pro (11-inch) (2nd generation)
react-native run-ios --simulator="iPad Pro (11-inch) (2nd generation)"
• iPad Pro (12.9-inch) 4th generation
react-native run-ios --simulator="iPad Pro (12.9-inch) (4th generation)"
• iPad Air (3rd generation)
react-native run-ios --simulator="iPad Air (3rd generation)"
There are multiple ways to achieve this:
--simulator
flag--udid
flagFirstly you need to list all the available devices. To list all the devices run
xcrun simctl list device
This will give output as follows:
These are the available devices for iOS 13.0 onwards:
== Devices ==
-- iOS 13.6 --
iPhone 8 (5C7EF61D-6080-4065-9C6C-B213634408F2) (Shutdown)
iPhone 8 Plus (5A694E28-EF4D-4CDD-85DD-640764CAA25B) (Shutdown)
iPhone 11 (D6820D3A-875F-4CE0-B907-DAA060F60440) (Shutdown)
iPhone 11 Pro (B452E7A1-F21C-430E-98F0-B02F0C1065E1) (Shutdown)
iPhone 11 Pro Max (94973B5E-D986-44B1-8A80-116D1C54665B) (Shutdown)
iPhone SE (2nd generation) (90953319-BF9A-4C6E-8AB1-594394AD26CE) (Booted)
iPad Pro (9.7-inch) (9247BC07-00DB-4673-A353-46184F0B244E) (Shutdown)
iPad (7th generation) (3D5B855D-9093-453B-81EB-B45B7DBF0ADF) (Shutdown)
iPad Pro (11-inch) (2nd generation) (B3AA4C36-BFB9-4ED8-BF5A-E37CA38394F8) (Shutdown)
iPad Pro (12.9-inch) (4th generation) (DBC7B524-9C75-4C61-A568-B94DA0A9BCC4) (Shutdown)
iPad Air (3rd generation) (03E3FE18-AB46-481E-80A0-D37383ADCC2C) (Shutdown)
-- tvOS 13.4 --
Apple TV (41579EEC-0E68-4D36-9F98-5822CD1A4104) (Shutdown)
Apple TV 4K (B168EF40-F2A4-4A91-B4B0-1F541201479B) (Shutdown)
Apple TV 4K (at 1080p) (D55F9086-A56E-4893-ACAD-579FB63C561E) (Shutdown)
-- watchOS 6.2 --
Apple Watch Series 4 - 40mm (D4BA8A57-F9C1-4F55-B3E0-6042BA7C4ED4) (Shutdown)
Apple Watch Series 4 - 44mm (65D5593D-29B9-42CD-9417-FFDBAE9AED87) (Shutdown)
Apple Watch Series 5 - 40mm (1B73F8CC-9ECB-4018-A212-EED508A68AE3) (Shutdown)
Apple Watch Series 5 - 44mm (5922489B-5CF9-42CD-ACB0-B11FAF88562F) (Shutdown)
Then from the output you can select the name or the uuid then proceed as you wish.
--simulator
run:npx react-native run-ios --simulator="iPhone SE"
--udid
flag run:npx react-native run-ios --udid 90953319-BF9A-4C6E-8AB1-594394AD26CE
I hope this answer helped you.
If you want to change default device and only have to run react-native run-ios you can search in finder for keyword "runios" then open folder and fixed index.js file change 'iphone X' to your device in need.
As answered by Ian L, I also use NPM to manage my scripts.
Example:
{_x000D_
"scripts": {_x000D_
"ios": "react-native run-ios --simulator=\"iPad Air 2\"",_x000D_
"devices": "xcrun simctl list devices"_x000D_
}_x000D_
}
_x000D_
This way, I can quickly get what I need:
npm run devices
npm run ios
I had an issue with XCode 10.2 specifying the correct iOS simulator version number, so used:
react-native run-ios --simulator='iPhone X (com.apple.CoreSimulator.SimRuntime.iOS-12-1)'
I developed CLI tool for it.You can just type "rndcli".and select device
You can also use npm for this by adding an entry to the scripts
element of your package.json
file. E.g.
"launch-ios": "react-native run-ios --simulator \"iPad Air 2\""
Then to use this: npm run launch-ios
Source: Stackoverflow.com