diff --git a/src/Tulsi/TulsiGeneratorConfigDocument.swift b/src/Tulsi/TulsiGeneratorConfigDocument.swift
index 2f4d290..490cd5a 100644
--- a/src/Tulsi/TulsiGeneratorConfigDocument.swift
+++ b/src/Tulsi/TulsiGeneratorConfigDocument.swift
@@ -469,7 +469,6 @@
         let compilationModeOption = optionSet[.ProjectGenerationCompilationMode]
         let platformConfigOption = optionSet[.ProjectGenerationPlatformConfiguration]
         let prioritizeSwiftOption = optionSet[.ProjectPrioritizesSwift]
-        let useArm64_32 = optionSet[.UseArm64_32]
         ruleEntryMap = try self.infoExtractor.ruleEntriesForLabels(selectedLabels,
                                                                    startupOptions: startupOptions,
                                                                    extraStartupOptions: extraStartupOptions,
@@ -477,7 +476,6 @@
                                                                    compilationModeOption: compilationModeOption,
                                                                    platformConfigOption: platformConfigOption,
                                                                    prioritizeSwiftOption: prioritizeSwiftOption,
-                                                                   useArm64_32Option: useArm64_32,
                                                                    features: self.enabledFeatures(options: optionSet))
       } catch TulsiProjectInfoExtractor.ExtractorError.ruleEntriesFailed(let info) {
         LogMessage.postError("Label resolution failed: \(info)")
@@ -808,7 +806,6 @@
                                                               compilationModeOption: options[.ProjectGenerationCompilationMode],
                                                               platformConfigOption: options[.ProjectGenerationPlatformConfiguration],
                                                               prioritizeSwiftOption: options[.ProjectPrioritizesSwift],
-                                                              useArm64_32Option: options[.UseArm64_32],
                                                               features: enabledFeatures(options: options))
     var unresolvedLabels = Set<BuildLabel>()
     var ruleInfos = [UIRuleInfo]()
diff --git a/src/TulsiGenerator/BazelAspectInfoExtractor.swift b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
index 39ce0c7..36138b9 100644
--- a/src/TulsiGenerator/BazelAspectInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelAspectInfoExtractor.swift
@@ -73,7 +73,6 @@
                                    compilationMode: String? = nil,
                                    platformConfig: String? = nil,
                                    prioritizeSwift: Bool? = nil,
-                                   useArm64_32: Bool? = nil,
                                    features: Set<BazelSettingFeature> = []) throws -> RuleEntryMap {
     guard !targets.isEmpty else {
       return RuleEntryMap()
@@ -85,7 +84,6 @@
                                           compilationMode: compilationMode,
                                           platformConfig: platformConfig,
                                           prioritizeSwift: prioritizeSwift,
-                                          useArm64_32: useArm64_32,
                                           features: features)
   }
 
@@ -97,7 +95,6 @@
                                           compilationMode: String?,
                                           platformConfig: String?,
                                           prioritizeSwift: Bool?,
-                                          useArm64_32: Bool?,
                                           features: Set<BazelSettingFeature>) throws -> RuleEntryMap {
     localizedMessageLogger.infoMessage("Build Events JSON file at \"\(buildEventsFilePath)\"")
 
@@ -119,7 +116,6 @@
                                                compilationMode: compilationMode,
                                                platformConfig: platformConfig,
                                                prioritizeSwift: prioritizeSwift,
-                                               useArm64_32: useArm64_32,
                                                features: features,
                                                progressNotifier: progressNotifier) {
                                                 (process: Process, debugInfo: String) -> Void in
@@ -179,7 +175,6 @@
                                             compilationMode: String?,
                                             platformConfig: String?,
                                             prioritizeSwift: Bool?,
-                                            useArm64_32: Bool?,
                                             features: Set<BazelSettingFeature>,
                                             progressNotifier: ProgressNotifier? = nil,
                                             terminationHandler: @escaping CompletionHandler) -> Process? {
@@ -205,10 +200,6 @@
       config = PlatformConfiguration.defaultConfiguration
     }
 
-    if let useArm64_32 = useArm64_32 {
-      PlatformConfiguration.useArm64_32 = useArm64_32
-    }
-
     let tulsiFlags = bazelSettingsProvider.tulsiFlags(hasSwift: hasSwift,
                                                       options: nil,
                                                       features: features).getFlags(forDebug: isDbg)
diff --git a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
index 11e95d4..3693a22 100644
--- a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
+++ b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
@@ -33,7 +33,11 @@
     }
 
     if case .ios = platform {
-      flags.append("--\(PlatformType.watchos.bazelCPUPlatform)_cpus=\(cpu.watchCPU.rawValue)")
+      // Xcode doesn't provide a way to determine the architecture of a paired
+      // watch so target both watchOS cpus when building for iOS, otherwise we
+      // might unintentionally install a watch app with the wrong architecture.
+      let cpus = "\(CPU.armv7k.rawValue),\(CPU.arm64_32.rawValue)"
+      flags.append("--\(PlatformType.watchos.bazelCPUPlatform)_cpus=\(cpus)")
     }
 
     return flags
diff --git a/src/TulsiGenerator/BazelSettingsProvider.swift b/src/TulsiGenerator/BazelSettingsProvider.swift
index dfe61a5..6205db9 100644
--- a/src/TulsiGenerator/BazelSettingsProvider.swift
+++ b/src/TulsiGenerator/BazelSettingsProvider.swift
@@ -275,10 +275,6 @@
       defaultConfig = PlatformConfiguration.defaultConfiguration
     }
 
-    if let useArm64_32 = options[.UseArm64_32].commonValueAsBool {
-      PlatformConfiguration.useArm64_32 = useArm64_32
-    }
-
     return BazelBuildSettings(bazel: bazel,
                               bazelExecRoot: bazelExecRoot,
                               defaultPlatformConfigIdentifier: defaultConfig.identifier,
diff --git a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
index 8d643cb..ef6812c 100644
--- a/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
+++ b/src/TulsiGenerator/BazelWorkspaceInfoExtractor.swift
@@ -101,7 +101,6 @@
                             compilationModeOption: TulsiOption,
                             platformConfigOption: TulsiOption,
                             prioritizeSwiftOption: TulsiOption,
-                            useArm64_32Option: TulsiOption,
                             features: Set<BazelSettingFeature>) throws -> RuleEntryMap {
     func isLabelMissing(_ label: BuildLabel) -> Bool {
       return !ruleEntryCache.hasAnyRuleEntry(withBuildLabel: label)
@@ -120,7 +119,6 @@
     let compilationMode = compilationModeOption.commonValue
     let platformConfig = platformConfigOption.commonValue
     let prioritizeSwift = prioritizeSwiftOption.commonValueAsBool
-    let useArm64_32Option = useArm64_32Option.commonValueAsBool
 
     do {
       let ruleEntryMap =
@@ -130,7 +128,6 @@
                                                         compilationMode: compilationMode,
                                                         platformConfig: platformConfig,
                                                         prioritizeSwift: prioritizeSwift,
-                                                        useArm64_32: useArm64_32Option,
                                                         features: features)
       ruleEntryCache = RuleEntryMap(ruleEntryMap)
     } catch BazelAspectInfoExtractor.ExtractorError.buildFailed {
diff --git a/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift b/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
index d76f9f2..49d2f0a 100644
--- a/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
+++ b/src/TulsiGenerator/BazelWorkspaceInfoExtractorProtocol.swift
@@ -33,7 +33,6 @@
                             compilationModeOption: TulsiOption,
                             platformConfigOption: TulsiOption,
                             prioritizeSwiftOption: TulsiOption,
-                            useArm64_32Option: TulsiOption,
                             features: Set<BazelSettingFeature>) throws -> RuleEntryMap
 
   /// Extracts labels for the files referenced by the build infrastructure for the given set of
diff --git a/src/TulsiGenerator/DeploymentTarget.swift b/src/TulsiGenerator/DeploymentTarget.swift
index 68d91ba..c4eb0f2 100644
--- a/src/TulsiGenerator/DeploymentTarget.swift
+++ b/src/TulsiGenerator/DeploymentTarget.swift
@@ -39,8 +39,7 @@
   }
 
   var watchCPU: CPU {
-    let armCPU = PlatformConfiguration.useArm64_32 ? CPU.arm64_32 : .armv7k
-    return isARM ? armCPU : .i386
+    return isARM ? .armv7k : .i386
   }
 }
 
@@ -49,7 +48,6 @@
 
   public let platform: PlatformType
   public let cpu: CPU
-  public static var useArm64_32 = false
 
   /// Default to iOS 64-bit simulator.
   public static let defaultConfiguration = PlatformConfiguration(platform: .ios, cpu: .x86_64)
diff --git a/src/TulsiGenerator/TulsiOptionSet.swift b/src/TulsiGenerator/TulsiOptionSet.swift
index a7a7728..f931b9d 100644
--- a/src/TulsiGenerator/TulsiOptionSet.swift
+++ b/src/TulsiGenerator/TulsiOptionSet.swift
@@ -75,11 +75,7 @@
       PreBuildPhaseRunScript,
 
       // Custom build phase run script that runs after bazel build.
-      PostBuildPhaseRunScript,
-
-      // When building an iOS app with a companion watchOS app, the default architecture for the
-      // watchOS app will be armv7k. This option overrides the default and uses arm64_32 instead.
-      UseArm64_32
+      PostBuildPhaseRunScript
 
   // Options for build invocations.
   case BazelBuildOptionsDebug,
@@ -324,7 +320,6 @@
     addBoolOption(.ImprovedImportAutocompletionFix, .Generic, true)
     addBoolOption(.GenerateRunfiles, .Generic, false)
     addBoolOption(.ProjectPrioritizesSwift, .Generic, false)
-    addBoolOption(.UseArm64_32, .Generic, false)
     addBoolOption(.SwiftForcesdSYMs, .Generic, true)
     addBoolOption(.TreeArtifactOutputs, .Generic, true)
 
diff --git a/src/TulsiGenerator/TulsiProjectInfoExtractor.swift b/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
index 32d87e5..a5dc9f1 100644
--- a/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
+++ b/src/TulsiGenerator/TulsiProjectInfoExtractor.swift
@@ -59,7 +59,6 @@
                                   compilationModeOption: TulsiOption,
                                   platformConfigOption: TulsiOption,
                                   prioritizeSwiftOption: TulsiOption,
-                                  useArm64_32Option: TulsiOption,
                                   features: Set<BazelSettingFeature>) throws -> RuleEntryMap {
     return try ruleEntriesForLabels(infos.map({ $0.label }),
                                     startupOptions: startupOptions,
@@ -68,7 +67,6 @@
                                     compilationModeOption: compilationModeOption,
                                     platformConfigOption: platformConfigOption,
                                     prioritizeSwiftOption: prioritizeSwiftOption,
-                                    useArm64_32Option: useArm64_32Option,
                                     features: features)
   }
 
@@ -79,7 +77,6 @@
                                    compilationModeOption: TulsiOption,
                                    platformConfigOption: TulsiOption,
                                    prioritizeSwiftOption: TulsiOption,
-                                   useArm64_32Option: TulsiOption,
                                    features: Set<BazelSettingFeature>) throws -> RuleEntryMap {
     do {
       return try workspaceInfoExtractor.ruleEntriesForLabels(labels,
@@ -89,7 +86,6 @@
                                                              compilationModeOption: compilationModeOption,
                                                              platformConfigOption: platformConfigOption,
                                                              prioritizeSwiftOption: prioritizeSwiftOption,
-                                                             useArm64_32Option: useArm64_32Option,
                                                              features: features)
     } catch BazelWorkspaceInfoExtractorError.aspectExtractorFailed(let info) {
       throw ExtractorError.ruleEntriesFailed(info)
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index 0de351f..66554ac 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -613,7 +613,6 @@
                                                              compilationModeOption: config.options[.ProjectGenerationCompilationMode],
                                                              platformConfigOption: config.options[.ProjectGenerationPlatformConfiguration],
                                                              prioritizeSwiftOption: config.options[.ProjectPrioritizesSwift],
-                                                             useArm64_32Option: config.options[.UseArm64_32],
                                                              features: features)
     } catch BazelWorkspaceInfoExtractorError.aspectExtractorFailed(let info) {
       throw ProjectGeneratorError.labelAspectFailure(info)
diff --git a/src/TulsiGenerator/en.lproj/Options.strings b/src/TulsiGenerator/en.lproj/Options.strings
index 992919b..5dc8af7 100644
--- a/src/TulsiGenerator/en.lproj/Options.strings
+++ b/src/TulsiGenerator/en.lproj/Options.strings
@@ -33,8 +33,6 @@
 
 "GenerateRunfiles" = "Generate the runfiles directory used as TEST_SRCDIR";
 
-"UseArm64_32" = "Building for Apple Watch Series 4";
-"UseArm64_32_DESC" = "Enable this option only if you are building to a Series 4 device in Xcode 10 or greater. The default when building for a iOS device with a watch app is the 32bit armv7k architecture.";
 "ProjectPrioritizesSwift" = "Prioritize for Swift development instead of (Obj-)C(++)";
 "ProjectPrioritizesSwift_DESC" = "Tulsi uses this to try to improve Bazel caching; set this if you anticipate that most of your builds inside of the generated xcodeproj depend on Swift in some way. Setting this incorrectly won't break your builds but it will potentially make them slower.";
 "CLANG_CXX_LANGUAGE_STANDARD" = "C++ language standard";
diff --git a/src/TulsiGeneratorTests/BazelSettingsProviderTests.swift b/src/TulsiGeneratorTests/BazelSettingsProviderTests.swift
index 8f1df22..7ba542f 100644
--- a/src/TulsiGeneratorTests/BazelSettingsProviderTests.swift
+++ b/src/TulsiGeneratorTests/BazelSettingsProviderTests.swift
@@ -23,7 +23,7 @@
   let bazelSettingsProvider = BazelSettingsProvider(universalFlags: BazelFlags())
 
 
-  func testBazelBuildSettingsProviderWithoutArm64_32Flag() {
+  func testBazelBuildSettingsProviderForWatchOS() {
     let options = TulsiOptionSet()
     let settings = bazelSettingsProvider.buildSettings(bazel:bazel,
                                                        bazelExecRoot: bazelExecRoot,
@@ -31,40 +31,16 @@
                                                        features: features,
                                                        buildRuleEntries: buildRuleEntries)
 
-    let arm64_32Flag = "--watchos_cpus=arm64_32"
-    // Check that the arm64_32 flag is not set anywhere it shouldn't be by default.
+    let expectedFlag = "--watchos_cpus=armv7k,arm64_32"
+    let expectedIdentifiers = Set(["watchos_armv7k", "watchos_arm64_32"])
+    // Check that both watchos flags are set for both architectures.
     for (identifier, flags) in settings.platformConfigurationFlags {
-      if identifier != "watchos_arm64_32" {
-        XCTAssert(!flags.contains(arm64_32Flag),
-                  "arm64_32 flag was unexpectedly set for \(identifier) by default. \(flags)")
-      }
-    }
-  }
-
-  func testBazelBuildSettingsProviderWithArm64_32Flag() {
-    let options = TulsiOptionSet()
-    // Manually enable the Tulsi option to force use arm64_32.
-    options.options[.UseArm64_32]?.projectValue = "YES"
-
-    let settings = bazelSettingsProvider.buildSettings(bazel:bazel,
-                                                        bazelExecRoot: bazelExecRoot,
-                                                        options: options,
-                                                        features: Set<BazelSettingFeature>(),
-                                                        buildRuleEntries: Set<RuleEntry>())
-
-    let arm64_32Flag = "--watchos_cpus=arm64_32"
-    // The flags corresponding to these identifiers will contain '--watchos_cpus=armv7k' which
-    // must be overidden.
-    let identifiersToOverride = Set(["ios_armv7", "ios_arm64", "ios_arm64e", "watchos_armv7k"])
-
-    // Test that the arm64_32 flag is set in the proper locations.
-    for (identifier, flags) in settings.platformConfigurationFlags {
-      if identifier == "watchos_arm64_32" || identifiersToOverride.contains(identifier) {
-        XCTAssert(flags.contains(arm64_32Flag),
-                  "arm64_32 flag was not set for \(identifier) by the UseArm64_32 option. \(flags)")
+      if (expectedIdentifiers.contains(identifier)) {
+        XCTAssert(flags.contains(expectedFlag),
+                  "\(expectedFlag) flag was not set for \(identifier).")
       } else {
-        XCTAssert(!flags.contains(arm64_32Flag),
-                  "arm64_32 flag was unexpectedly set for \(identifier) by the UseArm64_32 option. \(flags)")
+        XCTAssert(!flags.contains(expectedFlag),
+                  "\(expectedFlag) flag was unexpectedly set for \(identifier).")
       }
     }
   }
diff --git a/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift b/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
index e6024f3..1d80cfc 100644
--- a/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
+++ b/src/TulsiGeneratorTests/MockWorkspaceInfoExtractor.swift
@@ -73,7 +73,6 @@
                             compilationModeOption: TulsiOption,
                             platformConfigOption: TulsiOption,
                             prioritizeSwiftOption: TulsiOption,
-                            useArm64_32Option: TulsiOption,
                             features: Set<BazelSettingFeature>) throws -> RuleEntryMap {
     invalidLabels.removeAll(keepingCapacity: true)
     let ret = RuleEntryMap()
