title: iOS 15 only view modifier causes crash on iOS 14 even with if #available(iOS 15.0, *)
body: <p>I'm using SwiftUI's drag &amp; drop modifiers. Since, iOS 15 gives an option to customise the <code>onDrag</code> modifier with a preview I'm using it as shown below.</p>
  <p><strong>Issue:</strong> I've a <code>if #available(iOS 15.0, *)</code> guard to choose the view for different iOS versions. But, somehow my app on iOS 14.x crashes due to an <code>EXC_BAD_ACCESS (code=1, address=0x0)</code> error since it tries to find the new API but it is not present in iOS 14.</p>
  <pre><code>@ViewBuilder
  private func getRoutineCard(routine: RoutineInfo) -&gt; some View {
      if #available(iOS 15.0, *) {
          newRoutineCard(routine: routine)
      } else {
          oldRoutineCard(routine: routine)
      }
  }
  
  @available(iOS 15.0, *)
  @ViewBuilder
  private func newRoutineCard(routine: RoutineInfo) -&gt; some View {
      RoutineCard(routine: routine)
      // This modifier is what crashes the app on iOS 14.x
      // onDrag with a drag preview view not available in iOS 14.x
          .onDrag({
              dragReorder(draggedRoutine: routine)
          }, preview: {
              RoutineCardDragPreview(routine: routine)
          })
          .onDrop(of: [.text], delegate: ReorderDropDelegate(isDragging: $isDragging, draggedItem: $draggedItem, item: routine, haptics: haptics, onMove: updateOrder(routine:order:)))
  }
  
  @ViewBuilder
  private func oldRoutineCard(routine: RoutineInfo) -&gt; some View {
      RoutineCard(routine: routine)
          .onDrag { dragReorder(draggedRoutine: routine) }
          .onDrop(of: [.text], delegate: ReorderDropDelegate(isDragging: $isDragging, draggedItem: $draggedItem, item: routine, haptics: haptics, onMove: updateOrder(routine:order:)))
  }
  </code></pre>
  <p><strong>What I'm looking for:</strong> A workaround to choose between the two views based on the iOS version without causing a crash.</p>