It has been over a month since we first attempted to update our app. The issue we wanted to resolve is a bug that prevents in-app purchases from functioning properly. Fixing this bug was crucial—not only for our users but also for us as a company.
However, what seemed like a simple fix has turned into an absolute nightmare. Despite our app successfully undergoing 20+ updates in the past, we now face a consistent rejection under guideline 4.3(a) - Design - Spam. Every single submission has been met with the same response.
We’ve made significant changes to the app, introduced numerous features, and thoroughly reviewed every aspect, yet the rejections persist. Desperate for clarity, we scheduled a call with an Apple representative. During the call, we were told that the issue was related to our app’s screenshots. We accepted their feedback, updated the screenshots, and resubmitted the app—only to be rejected again.
Since then, we’ve submitted the app three additional times, each with new sets of screenshots. Yet, the outcome has remained unchanged. Every review has been completed within about 20 minutes, with the same generic response:
"Hello,
The issues we previously identified still need your attention.
If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know."
We’ve now updated the screenshots three times, but nothing has changed. Is the issue truly related to the screenshots? Or is there something else at play? We’ve already spent over 30 days trying to resolve this. Should we continue uploading a 4th, 5th, or even 6th set of screenshots, only to receive the same rejection?
The lack of clarity is incredibly disheartening. I’ve pleaded with Apple to provide specific, actionable feedback so we can address the problem effectively, but the responses are always the same—copy-pasted and vague.
I’m feeling completely devastated and frustrated. At this point, I’m even considering giving up on my job entirely.
If anyone has advice or insights, please help. I don’t know what to do anymore.
Create elegant and intuitive apps that integrate seamlessly with Apple platforms.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Dear App Review team,
My app Goodie AI (Apple ID 6741483227) has been flagged as violating Guideline 4.3(a) - Design - Spam.
I thought I would reach out to the team to explain that Goodie AI is an entirely original concept, and would seek guidance on if we misunderstood what specifically the problem with the submission is.
DESCRIPTION
Please suggest next steps? We've already appealed, and have resubmitted the app. Thanks!
SCREENSHOTS ATTACHED
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Design
App Store
iOS
App Review
So…I am hitting a wall here and could use some guidance towards best practice.
I’ve developed an app in Xcode/SwiftUI that renders just fine on the iPhone - text, images, buttons, frames…everything is nicely centered on the screen or scrolls where and when I want.
The iPad though…not so much. I’m having issues with tops and bottoms being cut off in scrollviews. These are just straight up text screens too - the ones with other elements/controls…they’re rendering fine.
I’ve tried a mix of geometry, vstack, scrollview, padding, spacers…the lot of it. Nothing I seem to do works - the views do not want to fill and fit properly.
And, of course, the issue becomes worse the moment you flip the iPad into landscape view. Or use the 13” models.
I’d imagine others are battling these issues as well and found solutions, so I decided to hit up the brain trust.
I've been beating my head against the wall over a scrollview issue where the top and bottom are cut off in landscape mode. Portrait mode - everything runs swimmingly. The moment I flip the iPad on its side, though, I lose about a quarter of the view on the top and bottom. I thought this was something to do with framing or such; I ran through a myriad of frame, padding, spacer, geometry...I set it static, I set it to dynamically grow, I even created algorithms to try to figure out how to set things to the individual device.
Eventually, I separated the tablet and phone views as was suggested here and on the Apple dev forums. That's when I started playing around with the background image. Right now I have....
ZStack {
Image("background")
.resizable()
.scaledToFill()
.ignoresSafeArea()
ScrollView {
VStack(spacing: 24) {....
The problem is the "scaledToFill". In essence, whenever THAT is in the code, the vertical scrollview goes wonky in landscape mode. It, in essence, thinks that it has much more room at the top and the bottom because the background image has been extended at top and bottom to fill the wider screen of the iPad in landscape orientation.
Is there any way to get around this issue? The desired behavior is pretty straightforward - the background image fills the entire background, no white bars or such, and the view scrolls against it.
Hi everyone,
I’m currently trying to create a pure backdrop blur effect in my iOS app (SwiftUI / UIKit), similar to the backdrop-filter: blur(20px) effect in CSS. My goal is simple:
• Apply a Gaussian blur (radius ~20px) to the background content
• Overlay a semi-transparent black layer (opacity 0.3)
• Avoid any predefined color tint from UIBlurEffect or .ultraThinMaterial, etc.
However, every method I’ve tried so far (e.g., .ultraThinMaterial, UIBlurEffect(style:)) always introduces a built-in tint, which makes the result look gray or washed out. Even when layering a black color with opacity 0.3 over .ultraThinMaterial, it doesn’t give the clean, transparent-black + blur look I want.
What I’m looking for:
• A clean 20px blur effect (like CIGaussianBlur)
• No color shift/tint added by default
• A layer of black at 30% opacity on top of the blur
• Ideally works live (not a static snapshot blur)
Has anyone achieved something like this in UIKit or SwiftUI? Would really appreciate any insights, workarounds, or libraries that can help.
Thanks in advance!
Ben
How can I achieve the result of buttons glass effect like sample videos that was show at de WWDC25? I tried a lot of approaches and I still far a way from the video.
I would like something like the pictures attached. Could send a sample code the get the same result?
Thanks
Maybe it's just me but I can't find the attribute inspector anywhere. I have clicked, searched and tried everything I can think of. I love the new Xcode, but this has me dumbfounded.
I’m seeing that in the windowed-apps multitasking mode, the new window controls (the three “traffic-light” icons) can overlap the top-left corner of my app’s main view.
Detection: How can I programmatically determine whether these window controls will be displayed?
Geometry: If they are displayed, how can I find out their exact position and size?
I’d like to adjust my layout at runtime to ensure no content is hidden beneath those controls. For reference, my main view does not include a status bar or navigation bar at the top.
In SwiftUI sliders now have tick marks by default on iOS26, how do you turn them off or hide them? This WWDC talk had some sample code on how to set the tick marks but it doesn't compile for me: https://developer.apple.com/videos/play/wwdc2025/323/
I don't see any available methods or initializers to turn them off.
On iOS 26 not able to control size of UITabBar. Sharing code below.
Colour is applying correctly but somehow _UITabBarPlatterView which turns out as TabBar is not extending; leaving spaces on left, right & bottom sides.
class CustomTabBar: UITabBar {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .red
let firstItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house"), tag: 0)
let secondItem = UITabBarItem(title: "Search", image: UIImage(systemName: "magnifyingglass"), tag: 1)
let thirdItem = UITabBarItem(title: "Profile", image: UIImage(systemName: "person.circle"), tag: 2)
items = [firstItem, secondItem, thirdItem]
selectedItem = firstItem
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class ViewController: UIViewController {
let tabBar: CustomTabBar = {
let tb = CustomTabBar()
tb.translatesAutoresizingMaskIntoConstraints = false
return tb
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemBackground
view.addSubview(tabBar)
NSLayoutConstraint.activate([
tabBar.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 25),
tabBar.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -25),
tabBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
])
}
}
when specifying height in CustomTabBar explicitly...
func alignInternalSubViews() {
subviews.forEach { subView in
subView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
subView.topAnchor.constraint(equalTo: topAnchor),
subView.leadingAnchor.constraint(equalTo: leadingAnchor),
subView.trailingAnchor.constraint(equalTo: trailingAnchor),
subView.bottomAnchor.constraint(equalTo: bottomAnchor),
subView.heightAnchor.constraint(equalToConstant: 62)
])
}
}
What should I need to do in order to get this capsule _UITabBarPlatterView and its subviews resize accordingly?
Hi, it seems like using Table on iPadOS 26 results in the table header not applying a background. When comparing the same code on iPadOS 18, the table header applies a blur behind the header to ensure legibility when the user scrolls the content.
Is there a way to ensure Table applies a background effect to the header so that content remains legible during scrolling?
Here is a minimal example:
struct TablePreviewContent: Identifiable {
var id: Int { text.hashValue }
var text: String
}
#Preview {
let content = [TablePreviewContent(text: "Hello"), TablePreviewContent(text: "World")]
Table(content) {
TableColumn("Title", value: \.text)
}
}
I've attached screenshots of the behavior on iPadOS 26 compared to iPadOS 18 to illustrate the issue.
I have two views I've applied Liquid Glass to in Swift UI. I've noticed that depending on the height of the view the material changes and I'm not sure why. See the attached screenshot. Both views add the liquidGlass style in the same way but behave very differently on the same background.
Ideally I'd like them to look the same as the bottom one. Is that the same as the clear style?
I can compile this
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (strong) NSWindow *window;
@property (strong) NSSlider *slider;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
// Window size
NSRect frame = NSMakeRect(0, 0, 400, 300);
NSUInteger style = NSWindowStyleMaskTitled |
NSWindowStyleMaskClosable |
NSWindowStyleMaskResizable;
self.window = [[NSWindow alloc] initWithContentRect:frame
styleMask:style
backing:NSBackingStoreBuffered
defer:NO];
[self.window setTitle:@"Centered Slider Example"];
[self.window makeKeyAndOrderFront:nil];
// Slider size
CGFloat sliderWidth = 200;
CGFloat sliderHeight = 32;
CGFloat windowWidth = self.window.frame.size.width;
CGFloat windowHeight = self.window.frame.size.height;
CGFloat sliderX = (windowWidth - sliderWidth) / 2;
CGFloat sliderY = (windowHeight - sliderHeight) / 2;
self.slider = [[NSSlider alloc] initWithFrame:NSMakeRect(sliderX, sliderY, sliderWidth, sliderHeight)];
[self.slider setMinValue:0];
[self.slider setMaxValue:100];
[self.slider setDoubleValue:50];
[self.window.contentView addSubview:self.slider];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSApplication *app = [NSApplication sharedApplication];
AppDelegate *delegate = [[AppDelegate alloc] init];
[app setDelegate:delegate];
[app run];
}
return 0;
}
with
(base) johnzhou@Johns-MacBook-Pro liquidglasstest % clang -framework Foundation -framework AppKit testobjc.m
and get this neat liquid glass effect:
https://github.com/user-attachments/assets/4199493b-6011-4ad0-9c9f-25db8585e547
However if I use pyobjc to make an equivalent
import sys
from Cocoa import (
NSApplication, NSApp, NSWindow, NSSlider, NSMakeRect,
NSWindowStyleMaskTitled, NSWindowStyleMaskClosable,
NSWindowStyleMaskResizable, NSBackingStoreBuffered,
NSObject
)
class AppDelegate(NSObject):
def applicationDidFinishLaunching_(self, notification):
# Create the main window
window_size = NSMakeRect(0, 0, 400, 300)
style = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable
self.window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
window_size, style, NSBackingStoreBuffered, False
)
self.window.setTitle_("Centered Slider Example")
self.window.makeKeyAndOrderFront_(None)
# Slider size and positioning
slider_width = 200
slider_height = 32
window_width = self.window.frame().size.width
window_height = self.window.frame().size.height
slider_x = (window_width - slider_width) / 2
slider_y = (window_height - slider_height) / 2
self.slider = NSSlider.alloc().initWithFrame_(NSMakeRect(slider_x, slider_y, slider_width, slider_height))
self.slider.setMinValue_(0)
self.slider.setMaxValue_(100)
self.slider.setDoubleValue_(50)
self.window.contentView().addSubview_(self.slider)
if __name__ == "__main__":
app = NSApplication.sharedApplication()
delegate = AppDelegate.alloc().init()
app.setDelegate_(delegate)
app.run()
I get a result shown at
https://github.com/user-attachments/assets/7da022bc-122b-491d-9e08-030dcb9337c3
which does not have the new liquid glass effect.
Why is this? Is this perhaps related to the requirement that you must compile on latest Xcode as indicated in the docs? Why, is the compiler doing some magic?
When the app kills the process. Received APNs push message. Push messages carry voice related information. At the same time as receiving the push, obtain the voice playback of this voice message. How to achieve it?
I am currently struggling with resolving what appear to be competing design issues, and (while I may be just demonstrating my own ignorance) I would like to share my thoughts in the hope that you may have useful insights.
For purposes of discussion, consider a large and complex data entry screen with multiple sections for input. For all of the usual reasons (such as reuse, performance management, etc) each of these sections is implemented as its own, separately-compiled View. The screen is, then, composed of a sequence of reusable components.
However, each of these components has internal structure and may contain multiple focusable elements (and internal use of .onKeyPress(.tab) {...} to navigate internally). And the logic of each component is such that it has an internal @FocusState variable defined with its own unique type.
So, obviously what I want is
on the one hand, to provide a tab-based navigation scheme for the screen as a whole, where focus moves smoothly from one component's internals to the next component, and
on the other hand ,to build components that don't know anything about each other and have no cross-component dependencies, so that they can be freely reused in different situations.
And that's where I'm stuck. Since focus state variables for different components can have different types, a single over-arching FocusState passed (as a binding) to each component doesn't seem possible or workable. But I don't know how else to approach this issue.
(Note: in UIKit, I've done things like this by direct manipulation of the Responder Chain, but I don't see how to apply this type of thinking to SwiftUI.)
Thoughts?
I was looking at the new iOS 26 Mail app and it has these tab/filters of some sort and I was wondering if there is a default API/code in swiftui that I am supposed to be using.
Looked everywhere for this, thank you!!
Hello!
I'm currently working on Liquid Glass support for my app. I understand that starting with iOS 26, standard buttons like "Close" or "Done" have shifted from text buttons to using SF Symbols, as mentioned in the Human Interface Guidelines under "Icons".
However, on iOS 18 and earlier, the flat text button style remains the standard. I am unsure about the best approach for backward compatibility:
Branch by OS version: Keep text buttons for older OS versions and use SF Symbols for iOS 26+.
Concern: This increases the number of conditional branches, potentially reducing code readability and maintainability.
Adopt SF Symbols universally: Use SF Symbols for all versions.
Concern: I feel that SF Symbols do not fit well (look inconsistent or out of place) with the flat design language of iOS 18 and earlier.
What would be the recommended approach in this situation?
The clock on the lock screen is too big.
This is very noticeable on the serif font, the maximum size goes beyond the frame, and rests on the frame of the phone display. (Screenshot 1 & Screenshot 3)
This is especially evident if you use the enlarged interface (using the Large Text function), here the time goes completely out of the frame and conflicts with the frame of the phone screen. (Screenshot 2 & Screenshot 4)
how to save the state of my APP when I open another APP so that It can restore when I re-open it?
my app will use over 10mb memory so if I open another APP(my app will go background) it will closed at all.
when I re-open it it will restart.
but I do not want it I want if I open Page A and then it go background and when I re-open it it still is Page A and do not restart.
Hello,
My app was rejected because of App Review Guideline 4.3 – Design Spam.
I developed Dynasty of Sic Bo, an exciting game that combines elements of roulette and dice rolling. Players can bet on different dice combinations, testing their luck and strategy to win virtual riches. The game is designed to be simple and enjoyable for beginners while still engaging for experienced players.
I’ve tried multiple times to understand the exact reasons for this rejection, but all my efforts have been ignored by App Review. None of the changes I implemented resolved the issue, and I still don’t know what specifically needs to be addressed.
The app’s concept, gameplay, and design are entirely original, and I haven’t copied or reused content from other apps. While the game shares a general theme of dice-based gambling, I worked hard to create a unique experience with polished visuals, engaging mechanics, and a dynamic atmosphere.
I don’t understand how to proceed or demonstrate the originality of my app, as I can’t identify any apps that are identical to mine. I would really appreciate any advice or insights on how to resolve this issue.
Kind regards,
Nick
Bohdan Malashina