Skip to content
Back to Docs

App Store Review Guide

Guideline 4.2: Minimum Functionality

Apple rejects apps that are "simply a web page bundled as an app." This guide shows you exactly which native features to enable to pass review and get your app approved.

TL;DR: The Approval Checklist

  • Enable Push Notifications — Proves native platform integration
  • Add Biometric Login — Face ID shows device-level integration
  • Implement Offline Mode — Even a simple "No connection" page helps
  • Use Native Share Sheet — Call Code2Native.share() instead of web share
  • Write a Strong App Description — Explain your native features clearly

Understanding Guideline 4.2

"Your app should include features, content, and UI that elevate it beyond a repackaged website."

— Apple App Store Review Guidelines, Section 4.2

Apple wants apps that leverage the iOS platform. A simple WebView showing your website will be rejected. The key is to integrate native device features that websites cannot access.

Native Features That Pass Review

Push Notifications

HIGH IMPACT

Real-time alerts keep users engaged and demonstrate native platform integration.

Setup: Enable OneSignal in the wizard and add your App ID.

Biometric Authentication

HIGH IMPACT

Face ID and Touch ID prove your app uses native device capabilities.

Setup: Call Code2Native.authenticateBiometric() from your login page.

Offline Support

MEDIUM IMPACT

Apps should work without internet. Use Service Workers or cache strategies.

Setup: Implement offline mode in your website, or use native Secure Storage.

Camera / QR Scanner

MEDIUM IMPACT

Hardware access shows genuine native functionality.

Setup: Use Code2Native.takePhoto() or Code2Native.scanQRCode() for business features.

Location Services

MEDIUM IMPACT

GPS access for delivery, check-in, or location-based features.

Setup: Call Code2Native.getCurrentLocation() where relevant.

Common Rejection Reasons

Rejection ReasonSolution
App is just a repackaged websiteAdd at least 2 native features (Push + Biometrics recommended)
Limited functionality compared to websiteEnsure feature parity. Consider adding app-exclusive features.
No offline experienceImplement basic offline UI or cached content display.
Poor user experience (slow, broken layouts)Optimize mobile CSS. Test on real iOS devices before submission.
App doesn't respond to status barUse safe area insets. Test notch/Dynamic Island compatibility.

Quick Win: Add Biometric Login

This is the easiest way to demonstrate native functionality. Add this to your login page:

// Check if running in Code2Native app
if (typeof Code2Native !== 'undefined' && Code2Native.isNative()) {
  
  // Show biometric login button if available
  if (Code2Native.canUseBiometric() === 'available') {
    document.getElementById('biometricBtn').style.display = 'block';
  }
}

// Handle biometric authentication
async function loginWithBiometric() {
  try {
    await Code2Native.authenticateBiometric({
      title: 'Sign In',
      subtitle: 'Use Face ID to access your account'
    });
    
    // Success! Get saved credentials and auto-login
    const token = Code2Native.getStorageItem('authToken');
    if (token) {
      await loginWithToken(token);
    }
  } catch (e) {
    console.log('Biometric auth cancelled or failed');
  }
}

App Store Connect Tips

1. Description Matters

Explicitly list your native features in the app description. Mention "Face ID login", "Push notifications", "Offline mode" etc. Reviewers read this.

2. Screenshots Should Show Native Features

Include at least one screenshot showing a native UI element (Face ID prompt, push notification, native share sheet).

3. Review Notes

In "Notes for Reviewer", explain: "This app uses native Face ID authentication, push notifications via APNs, and secure keychain storage."

Ready to Build?

Our Native Bridge includes all the features you need to pass App Store review.