iOS Installation

Build and install OpenMeal on your iPhone from source using Xcode.

⚠️ Warning: due to Apple's restrictions on sideloading, this app's installation must be periodically redone (7 days for free users/1 year for Developer Accounts). There is no fix for this. This installation (and reinstallation) can only be done with a computer running macOS.
Contents

Prerequisites

You'll need:

Signing options

Apps installed via Xcode must be signed with an Apple Developer certificate. You have two options:

Free Apple ID Apple Developer Program
Cost $0 $99/year
App validity 7 days 1 year
Reinstall frequency Weekly Yearly
Sideloaded app limit 3 apps Unlimited
Push notifications Not available Available

Both options work fine. If you don't want to pay, just be prepared to re-run the install process every week. Your data persists across reinstalls.

Downloading the source

Clone the repository:

git clone https://github.com/maximilianromer/OpenMeal.git
cd OpenMeal/App\ Source\ Code

Or download as a ZIP from the GitHub repository (click the green "Code" button).

Building the app

Install dependencies

npm install

Generate the iOS project

npx expo prebuild -p ios

This creates an ios/ folder containing the native Xcode project. CocoaPods dependencies will be installed automatically.

If CocoaPods fails, try running cd ios && pod install --repo-update manually.

Open in Xcode

open ios/OpenMeal.xcworkspace
Open the .xcworkspace file, not the .xcodeproj. The workspace includes CocoaPods dependencies.

Configure signing

  1. In Xcode, go to Xcode → Settings → Accounts
  2. Click + and sign in with your Apple ID
  3. Select your account, click Manage Certificates, click +, select Apple Development
  4. In the project navigator, click OpenMeal (the blue project icon)
  5. Select the OpenMeal target under TARGETS
  6. Go to Signing & Capabilities
  7. Check Automatically manage signing
  8. Select your Apple ID from the Team dropdown

If you see a bundle identifier error, change it to something unique like com.yourname.openmeal.

Remove Push Notifications (free accounts only)

Apple does not allow push notifications for apps installed with a free Apple ID. If you're using a free account, you must remove this capability or the build will fail. If you have a paid Apple Developer Program membership, skip this step.

  1. In the project navigator, click OpenMeal (the blue project icon)
  2. Select the OpenMeal target under TARGETS
  3. Go to the Signing & Capabilities tab
  4. Find the Push Notifications capability
  5. Hover over it and click the X button to remove it
Removing this capability means you won't receive meal reminder notifications. All other app features will work normally.

Installing on your device

Enable Developer Mode (iOS 16+)

On your iPhone:

  1. Connect to your Mac via USB
  2. Go to Settings → Privacy & Security → Developer Mode
  3. Enable it and restart when prompted
  4. After restart, confirm by tapping Turn On
⚠️ The Developer Mode option only appears after connecting to a Mac with Xcode at least once.

Build and run

  1. In Xcode's toolbar, select your iPhone from the device dropdown
  2. Click Run (▶) or press Cmd+R
  3. Wait for the build to complete and install

Trust the certificate

The first launch will fail with an "Untrusted Developer" error. To fix this:

  1. On your iPhone, go to Settings → General → VPN & Device Management
  2. Under "Developer App", tap your Apple ID
  3. Tap Trust and confirm

Now open the app from your home screen. You're done.

Troubleshooting

Signing errors

Make sure you've selected a Team in Signing & Capabilities and that "Automatically manage signing" is checked. Try changing the bundle identifier to something unique.

CocoaPods issues

sudo gem install cocoapods
cd ios && pod install --repo-update

Device not showing in Xcode

Make sure Developer Mode is enabled and that you trusted your Mac when the prompt appeared on your iPhone.

App stops working after 7 days

This is expected with a free Apple ID. Reconnect your iPhone, open the project in Xcode, and press Run again. Your data is preserved.