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?
20 Answers 20
Specify a simulator using the --simulator
flag.
These are the available devices for iOS 14.0 onwards:
npx react-native run-ios --simulator="iPhone 8"
npx react-native run-ios --simulator="iPhone 8 Plus"
npx react-native run-ios --simulator="iPhone 11"
npx react-native run-ios --simulator="iPhone 11 Pro"
npx react-native run-ios --simulator="iPhone 11 Pro Max"
npx react-native run-ios --simulator="iPhone SE (2nd generation)"
npx react-native run-ios --simulator="iPhone 12 mini"
npx react-native run-ios --simulator="iPhone 12"
npx react-native run-ios --simulator="iPhone 12 Pro"
npx react-native run-ios --simulator="iPhone 12 Pro Max"
npx react-native run-ios --simulator="iPhone 13 Pro"
npx react-native run-ios --simulator="iPhone 13 Pro Max"
npx react-native run-ios --simulator="iPhone 13 mini"
npx react-native run-ios --simulator="iPhone 13"
npx react-native run-ios --simulator="iPod touch (7th generation)"
npx react-native run-ios --simulator="iPad Pro (9.7-inch)"
npx react-native run-ios --simulator="iPad (9th generation)"
npx react-native run-ios --simulator="iPad Air (4th generation)"
npx react-native run-ios --simulator="iPad Pro (11-inch) (3rd generation)"
npx react-native run-ios --simulator="iPad Pro (12.9-inch) (5th generation)"
npx react-native run-ios --simulator="iPad mini (6th generation)"
List all available iOS devices:
xcrun simctl list devices
There is currently no way to set a default.
6 Comments
react-native run-ios --simulator="iPad Air"
react-native run-ios --simulator="iPhone 11 Pro Max (13.4)"
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
4 Comments
"launch-ios": "react-native run-ios --simulator 'iPad Air 2'"
=
and single qotes as mentioned by @ifkwtz, i used in my scripts like : "ios:tpmx": "npx react-native run-ios --simulator='iPhone 12 Pro Max'"
There are multiple ways to achieve this:
- By using
--simulator
flag - By using
--udid
flag
Firstly you need to list all the available devices. To list all the devices run
xcrun simctl list devices
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.
- To run using
--simulator
run:
npx react-native run-ios --simulator="iPhone SE"
- To run using
--udid
flag run:
npx react-native run-ios --udid 90953319-BF9A-4C6E-8AB1-594394AD26CE
I hope this answer helped you.
2 Comments
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
Comments
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.
3 Comments
"runArguments": [ "--simulator", "iPhone 5s" ]
to my launch configuration worked perfectly.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
Comments
Update:
npx react-native run-ios --simulator="iPhone 14"
npx react-native run-ios --simulator="iPhone 13"
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)"
1 Comment
As answered by Ian L, I also use NPM to manage my scripts.
Example:
{
"scripts": {
"ios": "react-native run-ios --simulator=\"iPad Air 2\"",
"devices": "xcrun simctl list devices"
}
}
This way, I can quickly get what I need:
- List all devices:
npm run devices
- Run the default simulator:
npm run ios
Comments
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 Comment
node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/index.js
You can use
npx react-native run-ios --simulator="iPhone 14"
Or Go to xcode and add a new simulator with the name "iPhone 6 (9.2)"
(if you don't want to add --simulator="iPhone 14"
each time )
Comments
SOLVED!
Run this command to see available simulators:
xcrun simctl list devices
and then run the command with the simulator that you want:
npm run ios -- --simulator="iPhone SE (3rd generation)"
Or you can add an entry to the scripts element of your package.json file. E.g.
"launch-ios": "npm run ios -- --simulator=\"iPhone SE (3rd generation)\""
Then just use this:
npm run launch-ios
Comments
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)'
Comments
for iPhone Xʀ Simulator
"iosxr": "react-native run-ios --simulator=\"iPhone Xʀ\"",
just add this to your scripts in package.json file
the letter "ʀ" used here is a different Unicode than "R"
then hit $ yarn iosxr
to launch the app on iPhone Xʀ Simulator
Comments
I developed CLI tool for it.You can just type "rndcli".and select device
Comments
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.
Comments
for RN 0.64.2, the configuration is located at node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/index.js
, you can just revise the default simulator in the file
Comments
The best and the easiest way to change iOS device is:
- Open Simulator
- Choose File > Open Simulator > then choose the device you want
Comments
1st case:
It happened on a login screen, where I had autoFocus
on an TextInput
. Commented that out and everything went back to normal.
2nd case:
With Expo!
After an update of XCode I was getting always the iPhone 12 Max simulator, but I prefered the iPhone 8. So here are the steps I took:
- While simulator on focus, go to
File -> Open Simulator
and choose the one you wish to be the default. - Close the old simulator, close the
localhost:19002
and stop the server in your terminal withctr + C
. - Run
npm start
and then pressi
.
Now it's running on the simulator you left open.
Happy coding!
Comments
React Native will run the first device it finds in the list of simulators (If no simulator is supplied in the run command). To have it run a specific sim as the "default", you can re-order your x-code simulator list by deleting simulators and re-adding them. The first simulator (the one at the bottom of the list) is the one that will be run.
Comments
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;
}
react-native run-ios
you can change device inSimulator > Hardware > Device > iOS x.x > iPhone 5
. This will work until you quit simulator.