Skip to main content
When we release updates to Shipnative, you may want to incorporate them into your project. Since you own your codebase and likely have custom modifications, updates require a manual merge process.
Your app is yours. Unlike a dependency you update via npm, Shipnative is a starting point you’ve customized. Updates are applied by merging our changes with yours, not by replacing your code.

Choose Your Workflow

There are two main workflows for staying updated. We recommend the Upstream Remote workflow for most users.

Upstream Remote (Recommended)

Best for most users. Keep your own repo structure, pull updates when needed. Simpler setup, works immediately.

Fork-Based

Best if you want to contribute back. Fork the repo, sync periodically. Requires accepting org invitation first.

Before Any Upgrade

  1. Commit all your current work - Ensure your working directory is clean
  2. Check the CHANGELOG - Review what changed and whether you need/want the updates
  3. Back up your branch - Create a backup branch before merging

This is the simplest approach. You keep your own repo and pull updates from Shipnative when needed.

Initial Setup (One-Time)

After cloning Shipnative, set up your remotes:
Already disconnected the remote? No problem - just add it back:

Pulling Updates

When you want to incorporate Shipnative updates:
The --no-commit flag lets you review changes before committing.

Resolve Conflicts

If there are conflicts:
For each conflicted file:
  1. Open the file and look for conflict markers (<<<<<<<, =======, >>>>>>>)
  2. Decide which changes to keep (yours, theirs, or a combination)
  3. Remove the conflict markers
  4. Stage the resolved file: git add <filename>

Complete the Upgrade


Workflow 2: Fork-Based

Use this if you want to contribute changes back to Shipnative via pull requests.
Prerequisite: You must accept the organization invitation first. Check your GitHub notifications or email for an invite to join shipnativeapp. Once accepted, you can fork the private repo.

Initial Setup (One-Time)

  1. Accept org invitation - Check GitHub notifications
  2. Fork the repo - Go to https://github.com/shipnativeapp/shipnative and click “Fork”
  3. Clone your fork:

Syncing Your Fork

When you want to incorporate Shipnative updates:

Contributing Back

If you fix a bug or add a feature others might benefit from:

Additional Methods

Cherry-Pick Specific Changes

When you only want specific commits (e.g., a bug fix or new feature):
If conflicts occur:

Manual Copy

For small updates or when git conflicts are overwhelming:
  1. Check the CHANGELOG for what changed
  2. Browse the commit history to see file changes
  3. Manually copy the relevant code changes into your project
  4. Test thoroughly
This method is error-prone for large updates. Prefer git merge when possible.

Post-Upgrade Checklist

After any upgrade:
1

Install Dependencies

New packages may have been added.
2

Check for New Environment Variables

Compare your .env with .env.example:
Add any new variables.
3

Run Database Migrations (if applicable)

For Supabase:
For Convex:
4

Rebuild Dev Client (if native changes)

If native code changed (new packages, config changes):
5

Test Core Flows

  • Sign up / Sign in
  • Profile updates
  • Payments (in sandbox)
  • Push notifications

Handling Common Conflicts

app.json Conflicts

Keep your app name, bundle ID, and scheme. Accept new Expo SDK versions or plugin configurations:

package.json Conflicts

Generally accept the upstream dependency versions unless you have a specific reason to stay on an older version:

Screen/Component Conflicts

If you’ve heavily modified a screen:
  1. Review what the upstream change does
  2. Decide if you need it
  3. If yes, manually integrate the logic into your version
  4. If no, keep your version

Staying Informed

CHANGELOG

All releases documented with migration notes

Discord

Announcements and upgrade help from the community

FAQ

Use Upstream Remote (recommended) unless you specifically want to contribute PRs back to Shipnative. It’s simpler to set up and works the same way for pulling updates.
There’s no fixed schedule. Check the CHANGELOG periodically (monthly is reasonable) and upgrade when you see changes relevant to your app - security fixes, features you want, or bug fixes you’ve encountered.
Yes. Each upgrade merges the latest changes regardless of how many versions you’ve skipped. However, larger gaps mean more potential conflicts.
Ask in Discord! Share the conflicted file and your use case, and we’ll help you work through it.
Yes! Just add the upstream remote again:
You need to accept your organization invitation first. Check your GitHub notifications or email for an invite to join shipnativeapp. Once you’re an org member, you can fork private repos.