iOS 27 beta 1: .scrollEdgeEffectStyle(.soft) renders fully transparent above safeAreaBar

Feedback ID: FB23086400

On iOS 27 beta 1, .scrollEdgeEffectStyle(.soft, for: .top) on a List underneath a custom .safeAreaBar(edge: .top) no longer renders the progressive fade-blur. The top edge is fully transparent — scrolled rows pass under the bar with no visual treatment at all, as if scrollEdgeEffectDisabled() had been applied.

What I've verified so far:

  • .hard renders correctly in the exact same hierarchy; only .soft is affected.
  • The same binary works correctly on iOS 26.x Xcode preview. I'm building with Xcode 26.3 (iOS 26 SDK).

Minimal reproduction:

import SwiftUI

struct EdgeEffectRepro: View {
    enum Style: String, CaseIterable, Identifiable {
        case automatic, soft, hard
        var id: Self { self }

        var value: ScrollEdgeEffectStyle {
            switch self {
            case .automatic: .automatic
            case .soft: .soft
            case .hard: .hard
            }
        }
    }

    @State private var style: Style = .soft
    @State private var useSystemBarOnly = false

    var body: some View {
        NavigationStack {
            List(0..<60, id: \.self) { i in
                Text("Row \(i)")
                    .frame(maxWidth: .infinity, alignment: .leading)
                    .listRowBackground(
                        i.isMultiple(of: 2)
                            ? Color.orange.opacity(0.45)
                            : Color.teal.opacity(0.45)
                    )
            }
            .scrollIndicators(.hidden)
            .scrollEdgeEffectStyle(style.value, for: .top)
            .safeAreaBar(edge: .top) {
                if !useSystemBarOnly {
                    VStack(spacing: 8) {
                        HStack {
                            Text("Custom Top Bar")
                                .font(.system(size: 28, weight: .bold))
                            Spacer()
                        }
                        HStack {
                            Text("Second row (e.g. date range picker)")
                                .font(.caption)
                                .foregroundStyle(.secondary)
                            Spacer()
                        }
                    }
                    .padding(.horizontal)
                }
            }
            .safeAreaInset(edge: .bottom) {
                VStack(spacing: 8) {
                    Picker("Edge effect style", selection: $style) {
                        ForEach(Style.allCases) { Text($0.rawValue).tag($0) }
                    }
                    .pickerStyle(.segmented)

                    Toggle("System bar only (control group)", isOn: $useSystemBarOnly)
                        .font(.caption)
                }
                .padding()
                .background(.regularMaterial)
            }
            .navigationTitle("EdgeEffect Repro")
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}

Steps: run on iOS 27 beta 1, set the picker to soft, scroll rows under the bar.

Expected: fade-blur as on iOS 26.

Actual: fully transparent. Switch to hard: renders fine.

Answered by DTS Engineer in 899782022

Hello all,

Thank you for reporting, and for this easy to demonstrate sample project @NSCruiser.

I have related all of these reports and made sure they were seen by the relevant engineering team.

Generally, updates will be provided to you through Feedback Assistant. There, you can track if the report is still being investigated, has a potential identified fix, or has been resolved in another way.

In the meantime, continue using this thread to discuss workarounds or share your updates as you test against versions that are released.

For more details on Feedback Status, please see “Understanding the Status of Your Feedback” linked here: https://developer.apple.com/bug-reporting/status

Thank you.

 Travis

Still reproducible on beta 2. Additionally, .safeAreaBar also renders without the soft blur background. When keyboard activates / hides, the blur briefly flickers by shows up and hides again as the safeAreaBar content move with the keyboard.

Still reproducible on Beta 3.

I am seeing the same issue. I duped your Feedback.

Still reproducible on Beta 4.

Still reproducible on Beta 4 and it also affects UIKit

Hello all,

Thank you for reporting, and for this easy to demonstrate sample project @NSCruiser.

I have related all of these reports and made sure they were seen by the relevant engineering team.

Generally, updates will be provided to you through Feedback Assistant. There, you can track if the report is still being investigated, has a potential identified fix, or has been resolved in another way.

In the meantime, continue using this thread to discuss workarounds or share your updates as you test against versions that are released.

For more details on Feedback Status, please see “Understanding the Status of Your Feedback” linked here: https://developer.apple.com/bug-reporting/status

Thank you.

 Travis

Still reproducible on Beta 5.

Is a fix planned before the public release of iOS 27? If not, we will need to think about design / technical changes to workaround this bug.

The issue is still reproducible. It would be good to know whether this will be fixed by the iOS 27.0 final release

Still reproducible... The bad thing is that this influences design decisions for me as well. I had to create a custom temporary solution for the iOS 27 Betas on my App and iOS 26 and 27 now have different designs. They want you to use the new progressive blur bars now like in the system apps but it looks much worse than iOS 26. iOS 27 made many steps backwards.

Thanks for the update everyone.

I'll make sure to link this thread in the Feedback reports so the relevant teams are aware of this timeline.

 Travis

iOS 27 beta 1: .scrollEdgeEffectStyle(.soft) renders fully transparent above safeAreaBar
 
 
Q