{"id":5213,"date":"2026-07-03T11:14:00","date_gmt":"2026-07-03T05:44:00","guid":{"rendered":"https:\/\/www.getpanto.ai\/blog\/?p=5213"},"modified":"2026-07-03T11:14:03","modified_gmt":"2026-07-03T05:44:03","slug":"detox-ios-simulator-not-found","status":"publish","type":"post","link":"https:\/\/www.getpanto.ai\/blog\/detox-ios-simulator-not-found","title":{"rendered":"Detox iOS Simulator Not Found: Causes and Fixes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Detox &#8220;iOS Simulator Not Found&#8221; is a device resolution failure that occurs before your test suite ever launches. If you are hitting this on macOS <a href=\"https:\/\/www.getpanto.ai\/blog\/detox-alternatives\">while running Detox<\/a> against an iOS simulator, this guide covers that failure path specifically, not the Android emulator equivalent or Xcode&#8217;s own simulator boot errors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This error signals that Detox&#8217;s device allocator could not match the simulator configuration in your <code>.detoxrc.js<\/code> or <code>package.json<\/code> against what <code>xcrun simctl<\/code> reports as available on the host machine. It almost always points to a mismatch between config and environment rather than a broken test.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-detox-ios-simulator-not-found\"><span class=\"ez-toc-section\" id=\"what-is-detox-ios-simulator-not-found\"><\/span><strong>What Is Detox iOS Simulator Not Found?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<p class=\"wp-block-paragraph\">Detox iOS Simulator Not Found is thrown during the device allocation phase, before any test file executes. Detox calls into <code>simctl<\/code> to query installed simulator runtimes and device types, then tries to resolve the <code>device.type<\/code> string from your configuration against that list. When no match is found, allocation fails immediately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This happens at test-runner startup, specifically inside Detox&#8217;s <code>init<\/code> lifecycle hook, before Jest or Mocha has instantiated a single test block. If your CI logs show zero test results and an early stack trace referencing <code>DeviceRegistry<\/code> or <code>IosSimulatorDriver<\/code>, you are looking at this error rather than a runtime crash.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is worth distinguishing this from a simulator that fails to boot after being found. That is a separate failure, usually surfaced as a timeout waiting for the simulator to reach a booted state. This error is earlier in the chain: Detox cannot even identify a matching device to attempt booting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.getpanto.ai\/blog\/test-timeout-error-detox\"><em>See our blog on Test timeout error in Detox \u2192<\/em><\/a><\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"what-causes-detox-ios-simulator-not-found\"><span class=\"ez-toc-section\" id=\"what-causes-detox-ios-simulator-not-found\"><\/span><strong>What Causes Detox iOS Simulator Not Found?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">Detox iOS Simulator Not Found traces back to a handful of root causes, ranging from simple config drift to environment-level mismatches. Here&#8217;s what typically triggers it, ordered from most to least common:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mismatched device type string<\/strong>: The most common cause is a <code>device.type<\/code> string in <code>.detoxrc.js<\/code> that does not exactly match an installed simulator name on the current machine. Apple renames device types across Xcode versions, so a config written for &#8220;iPhone 14&#8221; can silently break after an Xcode upgrade replaces it with &#8220;iPhone 15&#8221; in the default runtime list.<br><br><\/li>\n\n\n\n<li><strong>Missing or uninstalled iOS runtime<\/strong>: A close second is a missing or uninstalled iOS runtime. Xcode ships with only the runtimes selected during installation, and CI images in particular often include a narrower runtime set than a developer&#8217;s local machine, so a config pinned to iOS 17.0 fails on a runner that only has iOS 16.4 available.<br><br><\/li>\n\n\n\n<li><strong>Stale or corrupted simulator state<\/strong>: Detox maintains its own device registry cache, and if a simulator was deleted or reset outside of Detox (through Xcode&#8217;s own device manager, for example), the cache can reference a UDID that <code>simctl<\/code> no longer recognizes.<br><br><\/li>\n\n\n\n<li><strong>Xcode Command Line Tools pointing at the wrong installation<\/strong>: This causes issues less often but is disproportionately confusing when it happens. If <code>xcode-select -p<\/code> resolves to a different Xcode.app than the one with your intended simulators installed, Detox queries the wrong runtime list entirely.<br><br><\/li>\n\n\n\n<li><strong>No pre-created simulators on a fresh machine<\/strong>: Least commonly, a fresh CI runner or new team member&#8217;s machine simply has no simulators pre-created, since <code>simctl<\/code> distinguishes between installed runtimes and instantiated simulator devices, and Detox expects the latter to already exist.<br><br><\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"how-to-reproduce-the-error-ios-simulator-not-found\"><span class=\"ez-toc-section\" id=\"how-to-reproduce-the-error-ios-simulator-not-found\"><\/span><strong>How To Reproduce The Error: iOS Simulator Not Found<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">The failure reproduces reliably by pointing a Detox config at a device type string that does not exist on the current machine, then running the standard test command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ .detoxrc.js\nmodule.exports = {\n  devices: {\n    simulator: {\n      type: 'ios.simulator',\n      device: {\n        type: 'iPhone 14 Pro' \/\/ renamed or missing on this Xcode version\n      }\n    }\n  },\n  configurations: {\n    'ios.sim.debug': {\n      device: 'simulator',\n      app: 'ios.debug'\n    }\n  }\n};\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>detox test --configuration ios.sim.debug\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>DetoxRuntimeError: Failed to find a device by type = \"iPhone 14 Pro\"\nAvailable device types are: iPhone 15, iPhone 15 Pro, iPhone SE (3rd generation)...\n    at IosSimulatorDriver.acquireFreeDevice\n<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-fix-detox-ios-simulator-not-found\"><span class=\"ez-toc-section\" id=\"how-to-fix-detox-ios-simulator-not-found\"><\/span><strong>How To Fix Detox iOS Simulator Not Found<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"1-list-available-simulators-and-correct-the-device-type-string\"><span class=\"ez-toc-section\" id=\"1-list-available-simulators-and-correct-the-device-type-string\"><\/span><strong>1. List available simulators and correct the device type string<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">Run <code>xcrun simctl list devicetypes<\/code> to get the exact strings Detox needs to match against. Copy the name verbatim into your config rather than guessing from memory or an old README.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xcrun simctl list devicetypes | grep iPhone\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>device: {\n  type: 'iPhone 15 Pro'\n}\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"2-install-the-missing-ios-runtime\"><span class=\"ez-toc-section\" id=\"2-install-the-missing-ios-runtime\"><\/span><strong>2. Install the missing iOS runtime<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">If the device type exists but the paired OS version does not, open Xcode&#8217;s Settings &gt; Platforms panel and install the missing simulator runtime, or use the command line equivalent on CI.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xcodebuild -downloadPlatform iOS\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"3-reset-detoxs-device-registry-cache\"><span class=\"ez-toc-section\" id=\"3-reset-detoxs-device-registry-cache\"><\/span><strong>3. Reset Detox&#8217;s device registry cache<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">When simulators were modified outside Detox, clear its cached device state so it re-queries <code>simctl<\/code> fresh on the next run.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>detox clean-framework-cache\ndetox build-framework-cache\nrm -rf ~\/Library\/Detox\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"4-verify-and-correct-the-active-xcode-path\"><span class=\"ez-toc-section\" id=\"4-verify-and-correct-the-active-xcode-path\"><\/span><strong>4. Verify and correct the active Xcode path<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">Confirm <code>xcode-select<\/code> points at the Xcode installation that actually has your target simulators, especially on machines with multiple Xcode versions.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xcode-select -p\nsudo xcode-select -s \/Applications\/Xcode.app\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"5-precreate-the-simulator-device-explicitly\"><span class=\"ez-toc-section\" id=\"5-pre-create-the-simulator-device-explicitly\"><\/span><strong>5. Pre-create the simulator device explicitly<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">On fresh machines or CI images with no instantiated simulators, create the device manually so <code>simctl<\/code> has something for Detox to resolve against.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xcrun simctl create \"iPhone 15 Pro\" \"iPhone 15 Pro\" \"iOS17.0\"\n<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"how-ai-can-help-you-fix-detox-ios-simulator-not-found-faster\"><span class=\"ez-toc-section\" id=\"how-ai-can-help-you-fix-detox-ios-simulator-not-found-faster\"><\/span><strong>How AI Can Help You Fix Detox iOS Simulator Not Found Faster<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">When this error hits, most engineers start by manually running <code>simctl list<\/code>, scrolling through dozens of device type and runtime entries, and eyeballing the diff against their config file. That diagnosis step alone often takes longer than the fix itself, and it repeats every time Xcode updates or a new teammate sets up their machine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.getpanto.ai\/code-review-agent\">AI-assisted code review<\/a> can inspect a <code>.detoxrc.js<\/code> file against a known list of currently valid device type strings before the test suite ever runs, flagging a device string that is deprecated, misspelled, or tied to a runtime not present in the CI image. It can also catch config drift between what a pull request changes and what the CI environment actually supports.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Detox tells you the simulator was not found after the test process has already started and failed. A code review layer can catch a device string mismatch or missing runtime dependency at PR time, before a CI job is scheduled and burns runner minutes on a failure that was knowable from the diff alone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.getpanto.ai\/\"><strong>That is where Panto AI fits<\/strong><\/a>. While Detox surfaces the failure at runtime, Panto AI&#8217;s mobile QA and code review layer can flag device configuration mismatches earlier in the workflow and directly in the pull request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The value is not in replacing Detox. The value is in catching a stale device configuration before it becomes a failed CI run, a blocked release pipeline, and an hour of a developer&#8217;s afternoon spent re-deriving something a config check could have caught in seconds.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"best-practices-to-prevent-detox-ios-simulator-not-found\"><span class=\"ez-toc-section\" id=\"best-practices-to-prevent-detox-ios-simulator-not-found\"><\/span><strong>Best Practices To Prevent Detox iOS Simulator Not Found<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pin device types to a version-controlled list.<\/strong> Keep the exact <code>simctl list devicetypes<\/code> output for your supported Xcode version in the repo so config changes can be checked against a known-good reference instead of memory.<br><br><\/li>\n\n\n\n<li><strong>Match CI runner images to local Xcode versions.<\/strong> Use a CI provider image that specifies an exact Xcode version rather than &#8220;latest,&#8221; since runtime availability shifts between Xcode releases and silently breaks configs.<br><br><\/li>\n\n\n\n<li><strong>Automate simulator creation in setup scripts.<\/strong> Add a <code>postinstall<\/code> or CI setup step that runs <code>xcrun simctl create<\/code> for your target devices, so no one depends on a simulator existing by accident.<br><br><\/li>\n\n\n\n<li><strong>Audit device config on every Xcode upgrade.<\/strong> Treat Xcode upgrades as a breaking change candidate for Detox config, since Apple periodically renames or retires device type strings without much announcement.<br><br><\/li>\n\n\n\n<li><strong>Keep Detox&#8217;s cache lifecycle explicit in CI.<\/strong> Run <code>detox clean-framework-cache<\/code> as a scheduled or pre-test step on CI runners that persist state between jobs, so stale registry entries do not accumulate silently.<br><br><\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"handling-detox-ios-simulator-not-found-in-cicd-pipelines\"><span class=\"ez-toc-section\" id=\"handling-detox-ios-simulator-not-found-in-cicd-pipelines\"><\/span><strong>Handling Detox iOS Simulator Not Found In CI\/CD Pipelines<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">CI runners make this error more likely because simulator and runtime availability is determined by whatever image the provider maintains, not by what a developer has locally. A config that works on every laptop on the team can still fail on a runner image that lags an Xcode release behind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ephemeral CI environments compound the problem because simulators are not pre-created between jobs unless the pipeline explicitly does so. Every job effectively starts from a colder state than a developer&#8217;s machine, which means device creation and runtime checks need to be part of the pipeline itself rather than assumed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adding a readiness check before the test step catches this class of failure early and produces a clearer error than Detox&#8217;s own allocator trace.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nREQUIRED_DEVICE=\"iPhone 15 Pro\"\nif ! xcrun simctl list devicetypes | grep -q \"$REQUIRED_DEVICE\"; then\n  echo \"Required simulator device type not found: $REQUIRED_DEVICE\"\n  exit 1\nfi\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Running this as a pre-flight step means a broken pipeline fails fast with an actionable message instead of burying the real cause inside a Detox stack trace several minutes into the job.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"conclusion\"><span class=\"ez-toc-section\" id=\"conclusion\"><\/span><strong>Conclusion<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n<p class=\"wp-block-paragraph\">Detox iOS Simulator Not Found is a device resolution failure, not a test logic bug, and it almost always traces back to a mismatch between your <code>.detoxrc.js<\/code> device configuration and what <code>simctl<\/code> can actually see on the host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The fastest path to a fix is checking <code>xcrun simctl list devicetypes<\/code> against your config string, confirming the required runtime is installed, and clearing Detox&#8217;s cache if the simulator state was touched outside of Detox itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For teams running this across many contributors and CI runners, the real goal is not fixing one broken config but making device configuration drift visible before it reaches a pipeline, since the same mismatch tends to resurface with every Xcode upgrade.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If Detox simulator resolution failures keep stalling your CI runs, <a href=\"https:\/\/www.getpanto.ai\/\"><strong>Panto&#8217;s AI-assisted mobile QA<\/strong><\/a> can help surface device configuration mismatches earlier in the development lifecycle.<\/p>\n\n\n\n<style data-wp-block-html=\"css\">\n\/* ==========================================\n   PANTO BLOG CTA BANNER\n   ========================================== *\/\n\n.panto-banner {\n  position: relative;\n  overflow: hidden;\n\n  padding: 72px 40px;\n  margin: 60px auto;\n\n  text-align: center;\n\n  background: #ffffff;\n  border: 1px solid #E2E8F0;\n  border-radius: 4px;\n\n  font-family: 'Montserrat', sans-serif;\n}\n\n\/* Top Accent Line *\/\n.panto-banner::after {\n  content: \"\";\n  position: absolute;\n\n  top: 0;\n  left: 50%;\n\n  transform: translateX(-50%);\n\n  width: 180px;\n  height: 2px;\n\n  background: linear-gradient(\n    90deg,\n    transparent,\n    #14B8A6,\n    transparent\n  );\n}\n\n\/* Grid Pattern *\/\n.panto-banner::before {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n\n  background-image:\n    linear-gradient(rgba(20,184,166,0.06) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(20,184,166,0.06) 1px, transparent 1px);\n\n  background-size: 40px 40px;\n\n  mask-image: radial-gradient(\n    circle at center,\n    black 45%,\n    transparent 100%\n  );\n\n  -webkit-mask-image: radial-gradient(\n    circle at center,\n    black 45%,\n    transparent 100%\n  );\n}\n\n\/* Glow *\/\n.panto-banner-glow {\n  position: absolute;\n\n  width: 850px;\n  height: 850px;\n\n  left: 50%;\n  top: 50%;\n\n  transform: translate(-50%, -50%);\n\n  pointer-events: none;\n\n  background: radial-gradient(\n    circle,\n    rgba(20,184,166,0.18) 0%,\n    rgba(45,212,191,0.10) 30%,\n    transparent 70%\n  );\n}\n\n\/* Content *\/\n.panto-banner-content {\n  position: relative;\n  z-index: 2;\n\n  max-width: 900px;\n  margin: 0 auto;\n}\n\n\/* Pill *\/\n.panto-pill {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n\n  padding: 10px 18px;\n  margin-bottom: 28px;\n\n  background: #F0FDFA;\n  border: 1px solid #CCFBF1;\n  border-radius: 4px;\n\n  color: #0F9D94;\n\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: .14em;\n}\n\n\/* Headline *\/\n.panto-banner h3 {\n  margin: 0 auto;\n\n  max-width: 900px;\n\n  color: #0F172A;\n\n  font-size: clamp(38px, 4vw, 58px);\n  line-height: 1.08;\n  font-weight: 800;\n\n  letter-spacing: -0.04em;\n}\n\n\/* Highlight *\/\n.panto-banner h3 span {\n  display: block;\n\n  margin-top: 6px;\n\n  background: linear-gradient(\n    90deg,\n    #0F9D94,\n    #14B8A6,\n    #2DD4BF\n  );\n\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  background-clip: text;\n}\n\n\/* Description *\/\n.panto-banner p {\n  max-width: 720px;\n\n  margin: 28px auto 42px;\n\n  color: #475569;\n\n  font-size: 21px;\n  line-height: 1.7;\n  font-weight: 500;\n}\n\n\/* CTA *\/\n.panto-btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n\n  padding: 18px 42px;\n\n  background: #0F9D94;\n  color: #ffffff;\n\n  border-radius: 4px;\n\n  text-decoration: none;\n\n  font-size: 17px;\n  font-weight: 700;\n\n  transition: all .25s ease;\n}\n\n.panto-btn:hover {\n  transform: translateY(-2px);\n\n  box-shadow: 0 12px 30px rgba(15,157,148,.25);\n}\n\n\/* Mobile *\/\n@media (max-width: 768px) {\n\n  .panto-banner {\n    padding: 56px 24px;\n  }\n\n  .panto-pill {\n    margin-bottom: 20px;\n  }\n\n  .panto-banner h3 {\n    font-size: 34px;\n    line-height: 1.12;\n  }\n\n  .panto-banner p {\n    font-size: 17px;\n    line-height: 1.7;\n    margin-bottom: 32px;\n  }\n\n  .panto-btn {\n    width: 100%;\n    max-width: 280px;\n    padding: 16px 28px;\n  }\n}\n<\/style>\n\n<section class=\"panto-banner\">\n\n  <div class=\"panto-banner-glow\"><\/div>\n\n  <div class=\"panto-banner-content\">\n\n    <div class=\"panto-pill\">\n      AUTONOMOUS QA\n    <\/div>\n\n    <h3><span class=\"ez-toc-section\" id=\"autonomous-qa-for-mobile-apps-across-150-real-devices\"><\/span>\n      Autonomous QA For Mobile Apps\n      <span>Across 150+ Real Devices<\/span>\n    <span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n    <p>\n      AI agents continuously test mobile user journeys across 150+ real Android and iOS devices, uncovering bugs and validating critical workflows before every release.\n    <\/p>\n\n    <a href=\"https:\/\/www.getpanto.ai\" class=\"panto-btn\">\n      Try Panto \u2192\n    <\/a>\n\n  <\/div>\n\n<\/section>\n\n\n<h3 class=\"wp-block-heading\" id=\"faqs\"><span class=\"ez-toc-section\" id=\"faqs\"><\/span><strong>FAQs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n<h4 class=\"wp-block-heading\" id=\"q-why-does-detox-ios-simulator-not-found-happen-in-ci-but-not-locally\"><strong>Q: Why does Detox iOS Simulator Not Found happen in CI but not locally?<\/strong><\/h4>\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> CI environments often use different Xcode versions and simulator runtimes than local machines. A simulator that exists on your Mac may not exist on the CI runner, causing Detox to fail before tests start. Pinning your CI image to a specific Xcode version and creating the required simulator during the build helps prevent this issue.<\/p>\n\n\n<h4 class=\"wp-block-heading\" id=\"q-how-is-this-different-from-a-simulator-boot-timeout\"><strong>Q: How is this different from a simulator boot timeout?<\/strong><\/h4>\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> They occur at different stages. <strong>Simulator Not Found<\/strong> means Detox cannot locate a simulator that matches your configuration. A <strong>boot timeout<\/strong> means the simulator was found but failed to boot within the allowed time, typically because of resource constraints, slow startup, or corrupted simulator data.<\/p>\n\n\n<h4 class=\"wp-block-heading\" id=\"q-do-i-need-to-update-my-detox-configuration-every-time-i-upgrade-xcode\"><strong>Q: Do I need to update my Detox configuration every time I upgrade Xcode?<\/strong><\/h4>\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Not always, but it&#8217;s worth checking after every major Xcode upgrade. Apple occasionally renames, adds, or removes simulator device types and runtimes, which can cause previously valid Detox configurations to stop working without any changes to your project.<\/p>\n\n\n<h4 class=\"wp-block-heading\" id=\"q-can-this-error-occur-even-if-the-ios-simulator-opens-manually\"><strong>Q: Can this error occur even if the iOS Simulator opens manually?<\/strong><\/h4>\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Yes. Opening the Simulator app manually uses Xcode&#8217;s device picker, which can tolerate partial matches. Detox relies on an exact match against the device names returned by <code>simctl<\/code>, so a simulator that launches manually may still fail if its configured name or runtime doesn&#8217;t match your Detox configuration exactly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Detox &#8220;iOS Simulator Not Found&#8221; is a device resolution failure that occurs before your test suite ever launches. If you are hitting this on macOS while running Detox against an iOS simulator, this guide covers that failure path specifically, not the Android emulator equivalent or Xcode&#8217;s own simulator boot errors. This error signals that Detox&#8217;s [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":5214,"comment_status":"open","ping_status":"closed","sticky":false,"template":"wp-custom-template-panto-blogs-v3","format":"standard","meta":{"footnotes":""},"categories":[110],"tags":[],"class_list":["post-5213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-qa-testing"],"_links":{"self":[{"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/posts\/5213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/comments?post=5213"}],"version-history":[{"count":1,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/posts\/5213\/revisions"}],"predecessor-version":[{"id":5215,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/posts\/5213\/revisions\/5215"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/media\/5214"}],"wp:attachment":[{"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/media?parent=5213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/categories?post=5213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.getpanto.ai\/blog\/wp-json\/wp\/v2\/tags?post=5213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}