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.
| Aspect | Upstream Remote | Fork-Based |
|---|---|---|
| Setup complexity | Simple - just add a remote | Requires org invitation + fork |
| Can contribute PRs | No | Yes |
| Repo ownership | Your own repo from scratch | Fork of Shipnative |
| Recommended for | Most users | Contributors |
Before Any Upgrade
- Commit all your current work - Ensure your working directory is clean
- Check the CHANGELOG - Review what changed and whether you need/want the updates
- Back up your branch - Create a backup branch before merging
Workflow 1: Upstream Remote (Recommended)
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:Pulling Updates
When you want to incorporate Shipnative updates:--no-commit flag lets you review changes before committing.
Resolve Conflicts
If there are conflicts:- Open the file and look for conflict markers (
<<<<<<<,=======,>>>>>>>) - Decide which changes to keep (yours, theirs, or a combination)
- Remove the conflict markers
- 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.Initial Setup (One-Time)
- Accept org invitation - Check GitHub notifications
- Fork the repo - Go to https://github.com/shipnativeapp/shipnative and click “Fork”
- 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):Manual Copy
For small updates or when git conflicts are overwhelming:- Check the CHANGELOG for what changed
- Browse the commit history to see file changes
- Manually copy the relevant code changes into your project
- Test thoroughly
Post-Upgrade Checklist
After any upgrade: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:- Review what the upstream change does
- Decide if you need it
- If yes, manually integrate the logic into your version
- If no, keep your version
Staying Informed
CHANGELOG
All releases documented with migration notes
Discord
Announcements and upgrade help from the community
FAQ
Which workflow should I use?
Which workflow should I use?
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.
How often should I upgrade?
How often should I upgrade?
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.
Can I skip versions?
Can I skip versions?
Yes. Each upgrade merges the latest changes regardless of how many versions you’ve skipped. However, larger gaps mean more potential conflicts.
What if I can't resolve a conflict?
What if I can't resolve a conflict?
Ask in Discord! Share the conflicted file and your use case, and we’ll help you work through it.
I disconnected the remote - can I still upgrade?
I disconnected the remote - can I still upgrade?
Yes! Just add the upstream remote again:
Why can't I fork the repo?
Why can't I fork the repo?
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.
