Guideline 4.2 is the rejection for an app that looks like a website in a frame. Ruby Native apps are built to clear it, with a native tab bar, push notifications, and real app assets, and when one is rejected anyway the fix is to make those native parts visible to the reviewer and say so in the reply.
From the App Store Review Guidelines:
Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or "app-like," it doesn't belong on the App Store.
In substance: the experience the app provides is not sufficiently different from browsing the website, and Apple asks you to add native features so the app offers more than the site. Sometimes it also says the app's usefulness is limited by how little content or functionality it includes. The reviewer saw web pages and nothing that told them this was an app.
The native layer is real, not drawn in HTML. The tab bar is the system's own, push notifications go through Apple's service with a real device token, and the icon and launch screen are proper app assets. Advanced Mode adds native push and pop transitions, a native navigation bar, and swipe to go back. Navigation bar buttons and menus, menus on any element, a floating action button, haptics, and badges are all native controls the reviewer can see and feel.
A rejection under 4.2 usually means the build the reviewer opened did not show them. The most common causes: a config with fewer than two tabs, so no tab bar appears; the web header and footer left visible, so the first screen is a website header with a hamburger menu; and nothing in the review notes pointing at the native features.
tabs: in config/ruby_native.yml, each a real destination a signed-in user returns to. Fewer than two and the bar does not draw. Tabs.native-hidden class to the web header, footer, and any web menu so native users see the app's native chrome instead. Setup.native_push_tag where it makes sense and send at least one notification to the demo account so the reviewer can see it. Push notifications.ruby_native demo_account set or on the Submit screen.Reviewers judge the first few screens. If the native features are there and the app was still rejected, reply with the list and the screenshots and ask for a second look:
Thank you for the review. The app includes native functionality beyond the website: a native tab bar (four tabs), push notifications delivered through APNs (send one from Settings > Notifications with the demo account), native navigation with push and pop transitions and swipe to go back, and a native barcode scanner on the Scan tab. Screenshots attached. We'd appreciate a second look under guideline 4.2.
Keep it to the facts. A second reviewer usually reads the reply before the app.
From Joe: TODO one line on what actually got an app through 4.2.
With the launch review, send the rejection to Joe from your dashboard. He has answered this one more than any other and replies within two business days with exactly what to change, or the reply to send.
See the launch review