Back to home

Changelog

Track every improvement, fix, and new feature shipped on ShipKith.

v1.4.0

Clearer packages and a steadier sign-out

  • Packages past their date. When a package's "Needed by" date has passed (a flexible one a week after), it shows as closed and leaves search. One tap posts it again with a new date.
  • Containers that have left no longer show in search, and the owner can post one again in one tap.
  • Photos from your iPhone library now send in chat.
  • A steadier sign-out. Signing out is more reliable, with no stuck or blank screens, and your notifications stop on that phone.
  • Clearer words when a date has passed, and many small fixes.
v1.4.0

Have you landed?, and a steadier sign-in

  • "Have you landed?" Travellers confirm their landing with one tap, and Senders see when delivery opens. A trip leaving today now asks for its departure time.
  • A steadier sign-in. A busy or weak connection no longer signs you out: the app shows "Reconnecting..." and keeps what you typed.
  • Clearer package details. The date field reads "Needed by", and a package's value shows as "worth under $50".
  • A lighter app. Old screens we replaced are gone, and many small fixes.
v1.4.0

New package, trip and Booking screens

  • Posting is new. Sending a package, posting a trip or a container now goes step by step: places picked from a list, a summary as you go, and what you typed kept if you leave or lose your connection.
  • Right after posting, you see who matches. "Package published" shows travellers on your route (and "Trip published" shows packages), ready to ask.
  • New package, trip and container pages, clearer about what happens next and who does what.
  • Bookings, redone. One page follows each step from request to delivery: the pickup, the payment, photos at pickup and delivery, and the review.
  • Clearer payments. Right after paying by card you see that it is being confirmed, never a second "Pay now". When the pickup comes before the time to pay, the page says to pay before the pickup.
  • Many fixes, among them: going back never shows the same page twice, an action that takes too long stops after 30 seconds and says so, and a link opens the right page even when the app was closed.
v1.4.0

A fresher look across the app

  • A fresher look on the screens we have not redesigned yet. Bookings, package and trip pages, the forms, chat, Wallet and Settings take the new colours: a paper-white ground, black main buttons, fine-lined cards. Everything is where it was.
  • Buttons that cancel or reject are a soft red now, so the main action on each screen stands out.
  • More redesigned screens are on their way, starting with packages, trips and Bookings.
v1.4.0

Counter-offers, chat and sign-out fixes

  • Counter-offers work both ways. When someone answers your request with a different fee, you can now accept it yourself. The Booking shows whose turn it is.
  • The chat stays open on a weak connection. A moment without network no longer replaces your conversation with an error screen. Opening a chat while offline now says so, with "Try again".
  • Sign Out ends this phone only. Your other devices stay signed in. To sign out everywhere, go to Settings, Privacy and security, Active sessions.
  • Large text: on a Booking, the button bar no longer covers the page when your phone's text is set very large.
  • Clearer words when an offer changed while you were looking at it, and when a request has been accepted.
v1.4.0

Under the hood: groundwork for a fresher look

  • Nothing looks different yet. This update lays the groundwork for a fresher look on the screens we have not redesigned yet: softer colours, clearer buttons, the same places for everything. It switches on with the next update.
v1.4.0

New tabs, and fixes for Android

  • A new look for the main screens. Search, Activity, Messages, Notifications, Profile and Help have the calmer design of the new sign-in, with a floating bar at the bottom and a "+" to post.
  • "Needs you" in Activity. One short list of what is waiting for you, the most urgent first, with a count on the Activity tab.
  • Search shows every trip on your route, not only the newest ones in the app.
  • Android: typing no longer pushes the screen away. In chats and forms the top of the screen stays in place and the box you type in sits on the keyboard (Android 11 and later).
  • Android: the app refreshes again after you leave with the back button and come back.
  • Smaller fixes: the pay screen's back button is easy to reach again, photos open with readable status icons, and large text on Android keeps its line spacing.
v1.4.0

A fresh look for signing in

  • A fresh look when you open the app and sign in. The opening, the welcome tour, Sign in and Create an account have a calmer design that is easier to read, in English and French.
  • Google and Apple are full buttons now, on Sign in and on Create an account.
  • Clearer help when signing in does not work. The app says what went wrong in plain words and offers the next step. Sign In and Create Account can be tapped at any time and show what is still missing.
v1.4.0

Clearer help when something goes wrong

  • Clearer help if a parcel is lost. If ShipKith closes your Booking because a parcel was lost and refunds the Sender, your Booking now says so and tells you how to reach Support.
  • Clear message if an account is suspended. If your account is suspended, the app signs you out once and explains why, with the Support address, instead of showing repeated errors.
v1.4.0

Dates show the day you chose

  • Dates show the day you chose. Trip, package and container dates now show and save as the day you picked, wherever you are.
  • Posted from Africa or Europe? Please check your dates. A trip or a package posted from there may have been saved one day early. Open it and correct the date if needed.
  • Editing a package works again when you leave its date unchanged.
v1.4.0

Invites are for new members

  • Invites are for new members. If you already have a ShipKith account and open a friend's invite link, the app now tells you the invite is for new members instead of doing nothing.
v1.4.0

More under the hood

  • More under the hood. A little more behind-the-scenes work for what comes next. Nothing changes on your screen with this update.
v1.4.0

Small fixes for Android and signing out

  • On Android, the clock and battery icons are readable again after signing in. If they still look white, close the app fully once and open it again.
  • Sign Out now works if you were already signed out from another phone. The same goes for the two buttons under Active sessions.
v1.4.0

Under the hood

  • Under the hood. Behind-the-scenes work that prepares what comes next. Nothing changes on your screen with this update.
v1.4.0

See your referrals

  • See your referrals. In Referrals, tap Your referrals to open your referral history: who joined with your code, when they joined, and when you earned your CA$10.
  • Remind a friend. If a friend hasn't finished joining yet, send them a friendly reminder (up to 3 times, once a week).
  • Clearer rewards. Referral rewards now show as "Referral reward" in your Wallet, in CA$.
  • Invite codes for everyone. Some members who joined recently had no referral code to share. Everyone has one now.
  • Privacy update. Our Privacy Policy and Terms now say what the person who invited you can see: your first name and initial, when you joined, and when they earn their reward. Never your documents or ID details.
v1.4.0

Clearer help when a card is declined

  • If your card is declined, we now tell you why and what to do. Most declines come from your own bank blocking a first international payment: call the number on your card, approve the charge, and try again, or use another card with one tap.
  • More time to pay after a decline. If your bank blocks the payment, your Booking now waits an extra 24 hours instead of being cancelled, and the Carrier is told why.
  • Statements now say SHIPKITH. Charges appear as "SHIPKITH* BOOKING" on your card statement, so your bank recognises them.
v1.4.0

Get paid, step by step

  • Get paid, step by step: your Wallet now shows exactly what Stripe still needs (for example your phone number or a quick ID check) and a Finish setup button that takes care of it in a few minutes.
  • Something's wrong with a delivery? After a Carrier marks your parcel delivered, you have 7 days to tell us. We pause confirmation and payment while ShipKith Support sorts it out, and we remind you before the Booking confirms on its own.
  • Cleaner payout screens, and Canadian Carriers now see amounts in CAD.
  • If payouts aren't available in your country yet, the app says so clearly and puts you in touch with Support.
  • Flight tickets are now private: only you and ShipKith Support can see them.
  • Cancelling a Shipment now closes its open requests automatically.
v1.4.0

More ways to get paid

  • Add a way to get paid: your Wallet now shows the payout options available in your country, and what each one needs.
  • Coming soon: payouts to a debit card, and Mobile Money payouts for Carriers in Cameroon. We'll let you know when they're on.
  • Small fixes to payout screens and messages.
v1.4.0

Clearer booking agreement

  • Agreeing a booking is clearer: if the other person still needs to confirm the direct handoff, you now see "Waiting for the Carrier" (or Sender) instead of an error, and they get a reminder.
  • Tapping a payout notification now opens your Wallet.
  • Clearer messages when a withdrawal can't go through or is delayed.
v1.4.0

Clearer handoff guidance

  • Clearer handoff guidance: at pickup and delivery the traveller takes a photo in the app and the sender confirms — no QR code to scan. If the sender doesn't confirm a delivery, it confirms automatically after 7 days.
v1.4.0

Instant booking updates

  • Booking updates now arrive almost instantly: when the other person accepts, pays or confirms a handoff, your screen updates within a second or so.
v1.4.0

Live updates and Get paid

  • Bookings, shipments and trips now refresh on their own: when the other person accepts or updates something, when you come back to the app, or when a notification arrives. No more closing and reopening the app.
  • New "Get paid" card in your Wallet shows whether payouts are set up, and lets you set them up any time, even before your first earnings.
  • "Payment methods" in your Wallet is now "Pay with", so it's clear these are the cards you pay with.
  • Carriers in the US can enter the last 4 digits of their SSN right in the app when Stripe asks for it.
  • You'll now get a notification when a payment is confirmed or a payout is on its way.
v1.4.0

Notification and pickup fixes

  • No more notifications for messages you sent yourself. Signing out now stops this phone from receiving the previous account's notifications.
  • Saving a card works again.
  • Accepting or declining a traveller's new flight date works again.
  • After the traveller photographs the pickup, you can confirm the handover or report a problem; you'll see when it confirms automatically.
v1.4.0

Platform fee update

  • The platform fee on new bookings now starts at 8%. Kith 15%, Familiar 12% and Regular 10% are unchanged; Elder is now 9% (was 7%) and Pillar 8% (was 4%).
  • When the Carrier is a verified business: Kith 10%, Familiar 9%, and Regular, Elder and Pillar 8%.
  • You always see the full price, fee included, before you pay. Bookings already agreed keep the fee they were agreed at.
  • Why: card payments cost more than the lowest fees covered. This keeps payment protection and support running for everyone.
v1.4.0

Your request on every post

  • When you've sent a request on someone's Shipment or Trip, that screen now shows Your request: where it stands, whose turn it is, the step you're at and the fee, with one tap into the Booking.
  • One open request at a time with the same person. If you already have one, you'll see Open request with … instead of a second request button.
  • If your request is declined and the post is still open, you can send a new one.
  • A cancelled or declined Booking now puts the Shipment straight back on the market.
  • Clearer status colours, and Booked replaces "Matched".
v1.4.0

Card entry readable in dark mode

  • Card numbers are now visible while you type them, also on phones in dark mode.
v1.4.0

Activity tab fix

  • Fixed: the Activity tab showed "Something went wrong" for carriers who had a trip with pending requests. Sorry about that one.
v1.4.0

Notifications crash on Android fixed

  • Fixed: on some Android phones the app closed when opening Notifications. Thanks to the person who reported it.
v1.4.0

Buttons above the navigation bar

  • Android: the "Add items" button in the shipment form (and the confirm button in multi-select lists) no longer hides behind the system navigation bar.
v1.4.0

Clearer messages when something can't be done

  • When something can't be done, ShipKith now tells you in plain words in its own style, for example "Simon G. hasn't confirmed direct hand-off yet", instead of a technical error box. Over a hundred messages across the app were rewritten.
v1.4.0

Crash reporting switched on

  • Under the hood: crash reporting is switched on, so if something breaks on your phone we hear about it right away and can fix it faster.
v1.4.0

Stability fixes

  • Stability: guards added on the Notifications screen, the review reminder banner, the Payouts screen and notification taps so an unexpected server response can no longer crash the screen.
v1.4.0

Payment and booking fixes

  • Mobile Money payments (Cameroon): the "internal error" on Request payment is fixed on the server, and if you already sent a request the app now tells you so instead of showing an error.
  • Finalising a booking: the Hub pickup option only appears where a hub actually exists, so agreements no longer fail with an unexplained error.
  • If a screen ever crashes, you now get a ShipKith screen with Try again and Go home, and the app sends us the details so we can fix it quickly.
v1.4.0

Notifications that feel at home

  • Notifications, rebuilt to feel at home on your phone: grouped by day, a clear icon per kind of event, unread items in bold, swipe right to mark read and left to delete, and "Mark all read" when you need it.
  • Fixed: tapping a verification notification did nothing. Every notification now opens the right place, including identity and business verification, payouts and payments.
  • German translations added for this screen.
v1.4.0

Names shown as first name and initial

  • Privacy: other members now appear as first name and last-name initial everywhere, for example "Simon G.", including search results and shipment pages that still showed full names. Your own name stays full on your profile. Business accounts keep their business name.
v1.4.0

Find your city

  • Find your city: your profile, your community and the "Where are you based?" step now let you pick your State or Province and search every town, not just a short list. United States, Canada and all the countries ShipKith serves.
  • Profiles now show where you live as "City, State" (or city and region elsewhere).
  • Trips and shipments keep using the main airport cities, so matching works exactly as before.
v1.4.0

More cities for trips and shipments

  • Posting a Trip or a Shipment: many more departure and arrival cities. United States now has 36 metros (Boston, Minneapolis, Seattle, Denver, Charlotte, Phoenix and more), Canada 11 (Edmonton, Winnipeg, Quebec City, Halifax…), plus extra cities in France, Germany, the UK and Poland.
  • Your town is not listed yet? Pick the nearest big city with an international airport: that is where carriers and senders meet.
v1.4.0

Post from your own town

  • Post a Trip or a Shipment from your own town. The route now reads Country → State / Province → City, and the city search covers every town, not just the big metros. ShipKith picks the nearest hand-over city for matching and shows it under the field.
  • Trip and shipment pages show the exact town on each end, for example "Departs from Fargo, ND (Minneapolis area)".
  • In your profile, typing a state name such as "North Dakota" now takes you straight to its towns.
v1.4.0

Where are you based, fixed

  • Fixed: the "Where are you based?" step appeared for a moment and then vanished, so there was no way to answer it. It now stays until you save your country.
v1.4.0

Google sign-in on Android too

  • Android now uses Google's own sign-in sheet too, the same as iPhone. No browser page, no technical address on screen.
v1.4.0

Google sign-in without the browser

  • Continue with Google now uses Google's own sign-in sheet on iOS instead of a browser page that named a technical domain. Same account, same result, one less confusing screen.
  • Needs app version 1.4.0 from TestFlight or Google Play (Internal testing). Older installs keep the previous sign-in and no longer receive in-app updates.
v1.3.0

Fresher profile, clearer errors

  • Under the hood: profile changes now show up everywhere in the app immediately, and error messages from the server come through more precisely.
v1.3.0

Where are you based

  • New: a one-time "Where are you based?" step. If we never had your country (Google or Apple sign-in, or an early account), the app asks once, pre-filled from your device. It sets your currency, payout options and the routes shown first.
  • Your device time zone is now kept up to date automatically.
v1.3.0

Business verification available again

  • Business accounts can upload their registration, tax and proof-of-address documents again and submit them for review, as before.
  • Owners and directors can be added on the same screen; they will be used once business verification moves to our verification partner.
v1.3.0

Help is the one place for support

  • Help is now the one place for support: release notes, contact form, feedback, WhatsApp, email, Instagram and the FAQ, all behind the help icon at the top left.
  • Settings keeps your account, preferences, updates and legal pages, with a single "Help & support" link.
v1.3.0

Identity verification with Persona

  • Identity verification now runs with our verification partner, Persona. Enter your legal name, date of birth and address, then verify your ID and take a selfie on a secure page inside the app. Most results arrive within a minute.
  • Your verification status updates by itself. If a check needs a closer look, you will see "Under review" until it is decided.
  • Business accounts can now add their owners and directors. Submitting the business for verification opens as soon as our partner enables it for your region.
v1.3.0

Resume an unfinished ID verification

  • Left identity verification half-way? The Government ID step now shows "In progress" and opens straight to "Resume verification" so you can pick up where you stopped.
v1.3.0

Resume picks up where you left off

  • "Resume verification" now reopens your identity check exactly where you left it, without asking for your details again.
v1.3.0

What's new in Help

  • Release notes are now one tap away: open Help (the icon at the top left) and pick "What's new". A green dot shows when there is something you have not read yet.
  • The same dot appears on Settings › Support › What's new.
v1.3.0

Calendar arrows visible on every Android

  • Calendar prev/next arrows now show clearly on Android phones that force dark mode per app.
  • The date of birth picker opens around a likely birth year instead of today, so your year is a tap or two away.
v1.3.0

Update prompts: Restart now and What's New

  • When an update has downloaded, the app now shows "Update ready · Restart now" so you can apply it right away.
  • After restarting, a short "You're up to date" note confirms the new version and links to What's New.
  • Settings › Support has a new "Check for updates" row showing your version and update date.
v1.2.0

Customize your referral code

  • feat(referral): customize your code (vanity codes)
v1.2.0

Invite & Earn — referral program

  • feat(referral): Invite & Earn — mobile UI
v1.2.0

Profile tab, referral shortcut, smoother launch

  • feat(nav+referral): profile tab, header referral button, auth cold-start fix
v1.2.0

Simpler sign-in

  • feat(auth): remove non-functional phone login tab
v1.2.0

Activity tab labels fit when translated

  • fix(activity): segmented tab labels fit when translated
v1.2.0

Hero options carousel on Search tab

  • feat(search): hero options carousel — Send/Carry/Cargo/Communities
v1.2.0

Full French translation and polish

  • Full French: the entire app now speaks French end-to-end, including the wallet and verification screens.
  • Your language choice on the welcome screen now sticks to your account after you sign in.
  • A few polish touches on the identity-verification flow.
v1.2.0

New onboarding experience

  • A brand-new welcome experience: redesigned onboarding with fresh illustrations introducing Send, Carry, and Trust.
  • Cleaner, smoother visuals across the intro screens.
v1.2.0

Quick language switch and account deletion

  • Quick language switch: tap EN/FR right in the top bar on any tab — no more digging into Settings.
  • You can now delete your account from Settings → Danger Zone, with a clear confirmation step.
  • Sign out is now visually calmer (it's no longer styled like a destructive action).
v1.2.0

Refined header sizing

  • Refined, slightly smaller screen headers throughout the app for a cleaner look.
v1.2.0

Smoother launch and resilient sign-in

  • Smoother launch: fixed a rare startup race that could briefly flash an error right after opening the app.
  • More resilient sign-in: the app now refreshes your session automatically instead of getting stuck on a stale login.
v1.2.0

Lower payout minimum to /bin/zsh.50 for testing

v1.2.0

Phone field on profile + CA transit/institution split

v1.2.0

user-svc KYC fields exposed + phone field re-ship

v1.2.0

Stripe Connect Custom infra: bank-entry, KYC gate, i18n, error states

v1.2.0

Manual MoMo (Cameroon) — admin-mediated collection flow

v1.2.0

Signup country picker, sender KYC drop, KYC address+tax-id, mini-Phase 4 payout routing

v1.2.0

Withdraw — clean manual flow + city required on country change

v1.2.0

Withdraw — no minimum on manual payout path

v1.2.0

Floating tab bar — centered pill + smaller labels

v1.2.0

Floating tab bar + help in header

v1.2.0

Tab bar Uber-style — no shadow, centered, sentence case

v1.2.0

Tab pill — amber halo visible cross-platform + opaque white bg

v1.2.0

Tab pill amber highlight + frosted bg + filled active icons

v1.2.0

Tab pill — centered via Dimensions, no Android shadow, amber halo restored

v1.2.0

Tab pill — marginHorizontal centering + bottom scrim

v1.2.0

Tab pill polish — softer shadow, active pill, FAB above

v1.2.0

Tab pill — radial glow + true center + 1px black border

v1.2.0

Tab pill — scrim under bar via custom tabBar wrapper; Android flush

v1.2.0

Tab pill — taller darker bottom scrim around menu

v1.2.0

Background sweep: drop shell illustration + brand row from all tabs

v1.2.0

Bg consistency: settings + nested stacks

v1.2.0

Brand row: hardcode tagline + shrink-safe layout; drop from Profile

v1.2.0

Edit profile: stop clobbering edits + drop stale city on country switch

v1.2.0

Hero panel shadow + search bg

v1.2.0

How it works: restore steps visibility (min-height fix)

v1.2.0

How it works sheet: smooth scroll + Android nav-safe Got it

v1.2.0

How it works sheet: taller (85-92%) so all 4 steps fit

v1.2.0

Lighter parchment bg v2

v1.2.0

Lighter parchment bg v3

v1.2.0

Lighter parchment bg

v1.2.0

Match: switch to 'View your review' once submitted

v1.2.0

Opaque hero panels (fix Android shadow bleed)

v1.2.0

Profile: add My Reviews (received + given)

v1.2.0

Profile: trips count now reflects completed carrier runs

v1.2.0

Revert: flat parchment bg

v1.2.0

Reviews: label fix + row before Settings + hide root header

v1.2.0

Trip + Drop detail: show real bookings (requests, awaiting, confirmed)

v1.2.0

Wallet activity: human-readable labels + subtitles, reserve_hold context

v1.2.0

Warm-gold bg theme: drop shell illustration, swap to bg.base palette

v1.2.0

Activity: 'Booked' status + show traveller name (was 'No traveller assigned' even after match)

v1.2.0

Activity: pills now tappable ('in transit' → Packages/Active, 'drafts' → Packages/Drafts)

v1.2.0

Activity pills: route 'drafts'/'in transit' tap to the chip that actually contains the items

v1.2.0

Activity pull-to-refresh + on-focus refetch + broader match cache invalidation (status changes propagate everywhere now). Trip card variants: DELIVERING (emerald + bar) + ALL DELIVERED (strong emerald) + AWAITING SENDER hint.

v1.2.0

Activity tab: error boundary around chip panels (shows stack instead of crashing app)

v1.2.0

Activity: trip card shows IN TRANSIT/BOOKED/ARRIVED derived from match + flight date (stop showing POSTED on booked or in-flight trip)

v1.2.0

Fix Activity Packages crash on Android (agreed/picked_up/arrived used undefined color palettes)

v1.2.0

Fix double-tap on cards. Activity + Search ScrollViews: keyboardShouldPersistTaps=handled. Search panresponder stricter (24px + 2.2x ratio). Trip card outer tap navigates; chevron toggles expand. delayPressIn=0 on touch rows.

v1.2.0

Hotfix 2: scroll restored inside consent sheet + bottom-sheet backdrop now top-only flex region

v1.2.0

Hotfix: formatDisplayName accepts string + null/undefined (fixes Cargo/Activity crash on Android)

v1.2.0

Match: Confirm Delivery CTA + arrival-date gate (server + client) + Waiting on arrival badge

v1.2.0

Match detail: 'Waiting on [name]' badge when next action is on the other party

v1.2.0

Match: hide 'Waiting on' badge when current user has the action (was wrongly shown on sender during pickup confirm)

v1.2.0

Packages list: booked cards now visually distinct (green tint + left bar + airplane icon vs amber 'still looking')

v1.2.0

Pickup: hide Confirm Pickup CTA once traveller confirmed + show 'Waiting on sender' badge

v1.2.0

Review screen: resolve reviewee name (was Unknown)

v1.2.0

Sender CTA on BookedTravellerCard — Confirm Receipt button when status=delivered, I handed over the package when paid, Receipt confirmed when completed. Stops sender from staring at advice copy with no button.

v1.2.0

Sender Packages list: action-required visual when carrier marked delivered — amber card border + 'ACTION REQUIRED · TAP TO CONFIRM RECEIPT' top banner + 'CONFIRM RECEIPT →' pill replaces green DELIVERED. Sender can't miss the pending action anymore.

v1.2.0

Shipment details: new BookedTravellerCard with stage-aware copy (replaces stale 'Sent X ago' on locked-in bookings)

v1.2.0

Shipment details: 'Your traveller' section + green theme after booked (was 'Requests sent' alarm for everything)

v1.2.0

Status pill: single source of truth — picked_up renders as IN TRANSIT everywhere (DropDetailsSheet + ActivityPanel + match screen all use shared getStatusDisplay util)

v1.2.0

Tap-once on cards + sticky CTA on booking details

v1.2.0

Trip card: ARRIVED state distinct visual — amber tint + left bar + location icon + 'Flight landed, confirm delivery' hint (was indistinguishable from POSTED)

v1.2.0

Trip card: booked-load bar emerald (was blue, clashed with amber AVAILABLE chip). Drop duplicate 'available' from progress legend — header chip is the single source. Legend shows rate + any pending earnings.

v1.2.0

Trip card: drop duplicate $ totals — header EARNINGS chip is the single source. Section headers (CONFIRMED / AWAITING PAYMENT) no longer repeat the same number. Progress legend handles pending overflow.

v1.2.0

Trip complete: gate on departure_date < now (no closing before flight) + booked_kg == 0

v1.2.0

Trip-expanded item: single full-width primary CTA showing next required action (Confirm Pickup -> Confirm Delivery -> Awaiting Sender). Message button removed. Flight-arrival gate mirrored client-side.

v1.2.0

Trip expanded view: drop redundant CAPACITY/AVAILABLE/EARNINGS stats bar. Single 'Trip space' progress bar with inline 'Xkg available @ rate' + earnings. Hide capacity stats once flight has landed or trip is delivering/done.

v1.2.0

Trips list sorted by departure_date — past/in-flight first (most-recent on top), upcoming below sorted by nearest flight first

v1.2.0

Trips: 'Mark trip complete' CTA for carriers + auto-complete trigger when all matches settle

v1.2.0

Bottom sheets: tap backdrop to dismiss + Android nav inset for footer buttons

v1.2.0

Fix Android nav bar safe-area: wire SafeAreaProvider + all screens respect bottom edge

  • feat(payments): live mode + carrier payout chooser + Africa card hint
  • chore(eas): auto-publish Internal Testing releases with versionName + versionCode label
  • fix(eas): drop unsupported releaseName field (Play auto-names from bundle version)
v1.2.0

Fix Android swipe gestures: wrap app root in GestureHandlerRootView

  • fix: scope safe-area paddingBottom fixes to Android only (iOS unchanged)
  • feat(android): install react-native-edge-to-edge for proper Android 15+ insets globally
v1.2.0

Fix Android tab bar safe-area: dynamic paddingBottom from useSafeAreaInsets

  • fix(safe-area): wire SafeAreaProvider at root + bottom edge on all screens
  • fix(splash): wire expo-splash-screen config plugin to kill Android 12+ default flash
  • fix(android): disable edge-to-edge so nav bar gets its own space (not overlay content)
  • fix(android): install react-native-edge-to-edge for proper Android 15+ inset handling
  • fix(android): lower targetSdk to 35 so edgeToEdgeEnabled=false is honored
  • fix(android): explicit useSafeAreaInsets in login + revert edgeToEdge/sdk35 experiments
v1.2.0

Hotfix: bottom sheets stay open on content tap (was dismissing on whitespace tap)

v1.2.0

iOS Modal stacking: dismiss agree modal before opening consent sheet

v1.2.0

Match agree: show consent sheet for all standings + surface real error messages

  • fix(android): wrap app root in GestureHandlerRootView so Swipeable works
v1.2.0

Scope safe-area paddingBottom fixes to Android only (iOS unchanged)

  • fix(tabs): dynamic tab bar paddingBottom from useSafeAreaInsets
v1.2.0

Phase 1.5: carrier payout chooser + Africa card hint + MoMo deposit gate

v1.1.0

Help tab: Send feedback tile now visible (was on wrong screen)

  • fix(help): Send feedback action on the actual Help tab (not just settings/help)
v1.1.0

Activity: '1 match' pill routes to drop detail (was empty matches screen) + clearer 'suggested carrier' copy

  • fix(activity): suggestion pill routes to drop detail, not matches screen
v1.1.0

Activity: actionable pills replace passive stats on All chip

  • feat(activity): passive stats -> actionable pills (only when count > 0)
v1.1.0

Activity All chip: by-type stat tiles + Most Active highlights

  • feat(activity): All chip dashboard — by-type stats + highlights
v1.1.0

Activity: ALL chip is action dashboard only (no item lists — browse via specific chips)

  • feat(activity): All chip is dashboard-only (action pills + attention banner)
v1.1.0

Activity: attention banner items scoped to current chip (no more trip notifications on Packages tab)

  • fix(activity): attention banner scoped to chip role
v1.1.0

Activity: compact stats + dedupe attention banner

  • fix(activity): compact stats + dedupe attention banner on All chip
v1.1.0

Activity: 'Needs your attention' card lists exact items triggering tab badge

  • feat(activity): action-needed banner shows WHICH items trigger tab badge
v1.1.0

Activity: stats row on All chip (active posts / lifetime earned / delivered)

  • feat(activity): stats row on All chip — active posts + lifetime earned + delivered
v1.1.0

Container detail: accepted items chips now light green (match profile verified style)

  • style(container): accepted items chips -> light green (match profile verified chips)
v1.1.0

Container detail: operator card now tappable -> opens user profile

  • feat(container): tappable operator card -> /profile/:id (matches drop/trip detail)
v1.1.0

Container detail: pro redesign — bigger ship + hero banner + bottom illustration

  • feat(container): pro detail screen — TravelBackground + hero banner + big ship illustration
v1.1.0

Container: popup-gate flow matches trip/drop ID-gate pattern

  • feat(container): popup-gate flow matches trip/drop ID-gate pattern
v1.1.0

Containers: share + edit (owner) — parity with trip/drop

  • feat(profile): 3-dot menu opens Report user action
  • feat(container): share + edit options (parity with trip/drop)
v1.1.0

Feedback: in-app form (rating + category + message) -> backend, Help tab entry

  • feat(feedback): in-app feedback screen + Help tab entry
v1.1.0

PostSheet: locked container row now routes to business verification

  • feat(post-sheet): container row tappable when unverified -> KYB flow
v1.1.0

Profile: 3-dot menu now opens Report user action -> mailto report@shipkith.com

  • feat(profile): 3-dot menu opens Report user action
v1.1.0

Reports: in-app abuse reporting now hits backend (was mailto)

  • feat(reports): submit Report user via API instead of mailto
v1.1.0

Share button now visible to everyone on trip + drop (not just owner) — parity with containers

  • feat(share): Share button now visible to everyone on trip + drop detail
v1.1.0

Ship icons: bigger size + theme blue (was emerald/amber) across search, cargo tab, container detail

  • feat(brand): ship icons -> theme blue + bigger size across app
v1.1.0

Container create: autofill email + phone from profile

  • feat(container): autofill email + phone + whatsapp from profile
v1.1.0

Container create: How it works pill + translucent hero sheet

  • feat(container): How it works pill + translucent hero sheet on container create
v1.1.0

Container create: keyboard dismisses on drag and avoids hiding inputs

  • fix(container): KeyboardAvoidingView + dismiss-on-drag on form
v1.1.0

Container create screen now follows ShipKith design system

  • feat(container): align /container/create with shared design system
v1.1.0

Container delete: confirmation toast + lands on Activity Containers chip

  • feat(container): post-delete flow drops operator on Activity → Containers chip with confirmation toast
v1.1.0

Container posted: celebratory success screen with route + emojis

  • feat(container): celebratory posted screen after publish
v1.1.0

Container: publish CTA for orphan drafts + chip-aware empty state

  • feat(container): publish CTA on draft detail + chip-aware empty state on search
v1.1.0

Container shipments: real backend posting + operator agreement step + Cargo→Containers rename

  • feat(container): real backend posting + agreement step + Cargo→Containers rename
v1.1.0

Hotfix: container API unwrap envelope so Post succeeds

  • fix(container): unwrap {success,data} envelope from trip-svc responses
v1.1.0

Hotfix: container PostSheet eligibility + Kith standing ladder copy

  • fix(post,trust): unlock container row for verified business + fix topOfLadder for kith
v1.1.0

Hotfix: suppress expo-router default header on container screens

  • fix(container): add _layout.tsx so default expo-router header is suppressed
v1.1.0

Drafts tab in My Activities

  • feat(activity): DRAFTS tab between ACTIVE and HISTORY
v1.1.0

Flight times on airport codes + lock last-active mode chip

  • feat(mobile): flight times on ETH/DLA airport codes + lock last-active mode chip
v1.1.0

Gate trip create continue on resolved handoff

  • fix(trip): gate Continue on resolved pickup + delivery handoff
v1.1.0

Green ID-verified checkmark on cards + auth flicker hotfix

  • feat(mobile): green ID-verified checkmark on cards + auth flicker hotfix
v1.1.0

KYC back-of-ID step for ID cards and licenses

  • feat(kyc): back-of-ID step for national_id + drivers_license
v1.1.0

KYC identity step collecting legal name + DOB

  • feat(kyc): identity step capturing legal name + date of birth
v1.1.0

Louder labels neutral icons on trip create offer rows

  • fix(trip): louder labels + neutral icons on YOUR OFFER
v1.1.0

Per-publish agreement step on trip + drop with audit trail

  • feat(create): per-publish agreement step for trip + drop with audit trail
v1.1.0

Personal name on cards, business name only as detail-screen info

  • feat(business): keep personal name on cards, show legal name as info hint
v1.1.0

Shell illustration backdrop on ID gate modal

  • fix(gate): shell illustration backdrop under dark slate veil
v1.1.0

Tap requester on drop detail + emerald ID-verified check on detail screens

  • feat(mobile): tap requester on drop detail → profile + emerald id-verified check on detail screens
v1.1.0

Trip detail: depart/arrive dates split left+right with times

  • feat(trip): split date strip into DEPART/ARRIVE columns + show times
v1.1.0

BUSINESS pill on verified-business trip cards

  • feat(search): show BUSINESS pill on verified-business carrier cards
v1.1.0

Business verification UX: step indicator + post-save scroll

  • feat(kyb): step indicator + post-save scroll on business verification
v1.1.0

ID-verified gate on trip + drop create

  • feat(gate): block trip + drop creation until ID is verified
v1.1.0

Inline helper text on trip create offer rows

  • feat(trip): inline helper text on rate + min kg rows in CREATE TRIP
v1.1.0

Loud finish-setup state for incomplete business profile

  • feat(trust): loud action-needed state for incomplete business profile
v1.1.0

Loud pending state on business trust card

  • feat(trust): make pending/rejected business state visually loud
v1.1.0

Pinned search brand row + unified category emojis with package details

  • feat(mobile): pin search brand row + unify category icons with package details
v1.1.0

Polished read-only review state for business verification

  • feat(trust): polished read-only review state for locked business profiles
v1.1.0

Role label inline on non-business cards

  • feat(business): Verified Business badge across cards + details + profile
  • fix(gate): zoom shell illustration into card so airplanes/globe show
  • fix(search): role label back inline (right-centered) for non-business cards
v1.1.0

Search brand row horizontal padding fix

  • fix(search): add horizontal padding to pinned brand row
v1.1.0

Shell background on ID verification gate modal

  • fix(gate): use shell-background illustration on ID verification modal
v1.1.0

Step 1 collapses to summary on business verification

  • feat(trust): collapse step-1 form once saved on business verification
v1.1.0

Tappable match cards on Trip/Drop published screen

  • fix(posted): make match suggestion cards tappable
v1.1.0

Verified Business badge across cards, details, profile

  • feat(business): Verified Business badge across cards + details + profile
v1.1.0

Verified Business badge replaces ambiguous BUSINESS pill

  • fix(search): use canonical Verified Business badge on trip cards
v1.1.0

Wider rate pill + blue info hint on trip create

  • fix(trip): widen rate pill + style helper text as info hint
v1.1.0

Activity: suggested carriers chip on package cards + amber route

  • feat(activity): suggested carriers chip on package cards + amber route
v1.1.0

Carriers tab + brushed-metal route block + centered tabs

  • refactor(search-results): metal route block + centered tabs + carriers label
v1.1.0

Drop detail: requester card visible to non-owners

  • feat(drop-detail): show requester card to non-owners
v1.1.0

Drop help from profile + black/white mode chips + content-sized tabs for translations

  • fix(mobile): drop help from profile, B&W mode chips, content-sized tabs
v1.1.0

Help brand colors (WhatsApp green, Instagram pink) + Requests tab no longer shows mode chips

  • feat(mobile): brand-colored help tiles + drop mode chips on requests
v1.1.0

Help tab + role labels in search results + grouped All view

  • feat(mobile): help tab + role labels + grouped search results
v1.1.0

Package icon centered in route + bolder traveller meta (date/kg)

  • style(search-results): package icon centers route, bolder traveller meta
v1.1.0

Restore golden package tile (centered between route endpoints)

  • fix(search-results): restore golden package tile in middle of route
v1.1.0

Segmented sub-filters across tabs + My Activities title + main chip color swap

  • refactor(mobile): segmented sub-filters + main chip color swap + activity title
v1.1.0

Segmented tabs: white text and icons across all states

  • style(theme): segmented control tabs use white text/icons across states
v1.1.0

Tighter vertical padding on route blocks (carriers and packages)

  • style(search-results): tighten vertical padding on route blocks
v1.1.0

Trip share + messages cold-load fix (Universal Links infra ready, native rebuild pending)

  • feat(mobile): default landing on Search + activity route matches search-results
  • feat(mobile): trip share + universal-links config + messages loading fix
v1.1.0

Unified tab chrome (brand row + 2xl padding) + slate icon tiles + help moved to tab

  • refactor(mobile): unify tab chrome, slate icon tiles, drop help from settings
v1.1.0

Cargo goes live — verified businesses post containers, senders contact off-app

  • feat(cargo): live browse + post for container shipments — Verified Business only, off-app contact via WhatsApp/phone/email
v1.1.0

Default text readability bump + professional chip layout for accepted/restricted items

  • feat(theme): bump default text readability + Trip Details accepted/restricted as pill chips
v1.1.0

Home TripCard: tighter route padding + larger plane icon

  • fix(home-tripcard): tighter route padding + larger plane icon (18→26)
v1.1.0

New Cargo tab — join the waitlist for full-container shipments

  • feat(cargo): add Cargo tab as join-the-waitlist placeholder for container shipments
v1.1.0

New Search tab with dedicated results screen + transport mode filter chips

  • feat(search): new Search tab + dedicated /search/results screen with All/Travellers/Requests tabs and Plane/Cargo/Vehicle mode chips
v1.1.0

Open Requests filtered by your most-approaching trip

  • fix(carry): Open Requests filtered by most-approaching trip
v1.1.0

Open Requests: half-centered separator between rows

  • fix(carry): half-centered separator between Open Requests rows
v1.1.0

Open Requests rows: bigger route + reward, plus category icon badge

  • feat(carry): bigger route + reward, plus category badge on Open Requests rows
v1.1.0

Open Requests separator centered again

  • fix(carry): Open Requests separator centered again
v1.1.0

Open Requests separator left-aligned, longer + darker

  • fix(carry): Open Requests separator left-aligned, longer + darker
v1.1.0

Payments now live inside Wallet + new Help row with WhatsApp support

  • feat(profile): merge Payments into Wallet; add Help row with WhatsApp support deep-link
v1.1.0

Readable text everywhere (xs floor lifted) + Trip Details vertical item rows

  • feat(ui): app-wide tiny-text floor (xs→14, no fontSize<12); Trip Details vertical item rows; readable disclaimer + pickup chips
v1.1.0

Search results: package + traveller cards now share the same route endpoint layout; cleaner meta row

  • refactor(search-results): unify route endpoints across cards; bigger 3-slot meta; clean dead styles
v1.1.0

Search results polish: distinct request card, verified+business badges, content-sized tabs

  • fix(search-results): distinct request card with brown package icon; verified dot + BUSINESS pill; rating defaults to 5; content-sized tabs
v1.1.0

Search results polish: shipping-label request card, goldish border, centered+bolder tabs, default avatar

  • fix(search-results): shipping-label request card; goldish border; centered/bolder tabs; default avatar; inline verified tick
v1.1.0

Search results: shadowed route blocks, real avatars, category icons, swipeable tabs

  • feat(search-results): redesigned cards — shadowed route block, real avatars, category icons, uppercase swipeable tabs, abbreviated header
v1.1.0

Three-tab IA: Search · Activity · Messages — Send/Carry/Cargo collapsed into Activity

  • feat(ia): collapse Send/Carry/Cargo into Activity tab — 3 visible tabs (Search/Activity/Messages); 4-chip filter; results screen header fixed; Search tab no longer shows inline carrier list
v1.1.0

Faster traveller profile + readable Trip Details texts

  • ux+perf(mobile): faster traveller profile open + Trip Details readability pass
v1.1.0

My Trips card shows route once with flags inline

  • ux(mobile): TripBridgeCard route shown once, with flags inline on the title
v1.1.0

Pin View Requests + Edit Trip; accepted items no longer wrap

  • fix(trip-detail): pin View Requests + Edit Trip; stop wrapping accepted item labels
v1.1.0

Theme card-text tokens + visible airplane icon between route cities

  • ux(mobile): theme-level card text tokens + airplane icon visibility fix
v1.1.0

Trip card route endpoints + capacity label; My Packages says 'package'

  • ux(mobile): TripCard route endpoints + capacity label cleanup; package card copy
v1.1.0

Trip card: route name never truncates; bar matches My Trips

  • ux(mobile): TripCard route never truncates; bar matches My Trips look
v1.1.0

Trip Details readability + bolder accepted/restricted item icons

  • feat(trip-detail): Uber-style readability — bigger text, bolder icons, rose-themed restricted items
v1.1.0

TripCard route matches DropCard; capacity is just 'Xkg available'

  • ux(mobile): TripCard route layout matches DropCard; capacity reads as plain "Xkg available"
v1.1.0

Awaiting vs Confirmed split + plain-language stepper

  • ux(match,carry): split awaiting vs confirmed; clearer stepper + title threshold
v1.1.0

Bigger, more readable typography on Home + Carry list cards

  • ux(mobile): bump list-card typography for readability — Uber-grade hierarchy
v1.1.0

Bigger, more readable typography on My Packages active card

  • ux(mobile): bump ActiveDropCard typography to match the wider readability pass
v1.1.0

Money values render in money-green

  • ux(match): money values render in emerald (brand-consistent)
v1.1.0

Native-feel notifications + cancel-pre-payment title fix

  • ux(match,notifications): cancel-pre-payment title fix + native-feel notifications
v1.1.0

Personalized post sheet, sender peek sheet, login locale sync, info on cancelled matches

  • feat(haptics): add expo-haptics for native feedback on notifications
v1.1.0

Plain-language How-it-works + carrier→traveller copy sweep

  • ux+i18n: sub-repo catchup — personalized post sheet, sender peek, login locale sync, cancelled-match info, plain-language How-it-works, carrier→traveller
v1.1.0

State-based stepper + dropper-only trip details

  • ux(match): state-based stepper labels + dropper-only trip details section
v1.1.0

Carry tab: requests nest inside trips; cancel reason on matches list

  • ux(carry): nest sent requests inside their trip + plain-language cancel reason on matches list
v1.1.0

Fix request title + back-nav + expired-trip self-heal

  • feat(ux): Send/Carry polish — translucent hero, HowItWorks sheet, activity panel
  • chore(release): warn when OTA ships with a dirty working tree
  • fix(match): "Request Details" title for dropper-side pending/accepted; preserve drop sheet on back-nav
v1.1.0

Mobile UX — carrier refuse-pickup button (misdeclared / contraband)

v1.1.0

Mobile UX — drop-edit locked once committed (post-agreed)

v1.1.0

Mobile UX — dropper-no-show button + plain-language cancel reasons

v1.1.0

Polished Send / Carry redesign + reschedule lifecycle

v1.1.0

Reschedule + receiver-unreachable lifecycle

  • feat(match): reschedule banner, receiver-unreachable, refuse-pickup, plain-language cancel copy
v1.1.0

Trip card: SENT badge for outgoing requests

  • ux(carry): SENT badge on collapsed trip card
v1.1.0

Booking details — fix wording on trip details fallback

v1.1.0

Booking details — friendly fallback when trip details are private

v1.1.0

Booking details — surface trip departure date prominently

v1.1.0

Drop sheet — alarming amber requests section at top with heartbeat pulse

v1.1.0

Drop sheet — request card focuses on carrier + trip date + status

v1.1.0

Drop sheet — request card uses plain language status sentences

v1.1.0

My Packages — request badge on item card, requests inside drop sheet

v1.1.0

Tabs — black track, white active card, gray inactive

v1.1.0

Tabs — bolder labels, larger filled icons

v1.1.0

Tabs — edge-to-edge capsule, fixed label sizing

v1.1.0

Tabs — pressed-in active pill, rounded edges, brighter inactive

v1.1.0

Tabs redesign — icon-stacked with accent bar

  • fix(eas): switch Android submit to releaseStatus=draft
  • fix(payments): show Add Mobile Money by default, hide only for card-only corridors
  • ui(payments): brand chips on Add Mobile Money + distinct CTA colors
  • fix(auth): clear all cached queries on sign-in/out, not just user keys
  • fix(activity): move expired trips to History tab
  • ui(activity): dim expired trips so they read as past, not active
  • ui(activity): restore full opacity on expired trips when expanded
  • fix(i18n): add missing trip.detail.title + loading keys
  • feat(ux): Phase A naming sweep — Drop→Shipment, Match→Booking, Bridge→Activity
  • feat(ux): Phase B IA — split Search into Send + Carry tabs
  • feat(ux): Phase C empty-state + copy rewrite
  • feat(ux): Phase D — restrict illustrated background to Profile only
  • feat(ux): Phase D — Send hero + drop the redundant Send/Travel toggle
  • feat(ux): Phase E — first-run tour rewritten as Send / Carry / Trust
  • ux: question-form hero copy + drop Activity subtitle
  • ux: separate carrier activity into the Carry tab
v1.1.0

Tabs redesign — soft segmented capsule

v1.1.0

Tabs — soft track, white pill, emerald active accent

v1.1.0

Tabs — stack icon over label, full bold text

v1.1.0

Tabs — swipe between Send/Carry tab views

v1.1.0

Mobile Money as a saved payment method

A fresh TestFlight + Play Internal build — install the new version to pick this up.

  • Add Mobile Money to Payment Methods. Droppers in supported African countries can now save a Mobile Money number ahead of time. It shows up at checkout as a one-tap option, just like a saved card.
  • Country-aware Payments screen. The "Add Mobile Money" entry only appears for users whose country supports Pawapay corridors (CM, CI, GH, KE, NG, SN and others); everyone else still sees the familiar "Add card" flow.
  • Smarter empty state. First-time visitors in MoMo countries see copy that mentions both options instead of card-only language.

Behind the scenes, a new POST /v1/payment-methods/momo endpoint registers the number idempotently (safe to call repeatedly). Saved numbers are unverified until the first successful Pawapay deposit, after which they auto-flip to verified.

This release also bumps the app to Expo SDK 55 and ships a fresh native build, which is why eas update was the right tool for previous releases but not this one — mixed SDK 54/55 native modules had blocked the OTA channel.

v1.0.0

Phase 10 — Pawapay MoMo deposit for African droppers via USSD push

  • feat(pay): Phase 10 — Pawapay MoMo deposit for African droppers (USSD push to phone)
v1.0.0

Phase 11 — saved MoMo as first-class payment method

  • feat(payments): Phase 11 — saved MoMo as first-class payment method (polymorphic user_payment_methods, auto-save on deposit, one-tap chips on pay screen)
v1.0.0

Phase 8 — saved Stripe cards on pay screen, auto-saved on first use

  • feat(pay): surface saved Stripe cards in PaymentSheet via Customer + EphemeralKey; new cards auto-save for next time
v1.0.0

Wallet ledger Phase 1: read-only Wallet screen with balance, pending hold, history

  • chore(release): always quote changelog titles to survive YAML colons
  • feat(wallet): add read-only Wallet screen — available + pending balance, lifetime earnings, recent ledger entries
v1.0.0

Wallet Phase 2 — Stripe Connect Express onboarding and standard withdraw

  • feat(wallet): Phase 2 — Stripe Connect Express onboarding + standard withdraw flow + payout history
v1.0.0

Wallet Phase 3 — instant payouts, auto-payout toggle, Apple/Google Pay

  • feat(wallet): Phase 3 — instant payouts with fee preview, auto-payout toggle, Apple/Google Pay enabled in PaymentSheet
v1.0.0

Wallet Phase 4 — DAC7 tax info, German locale, EU rollout readiness

  • feat(wallet): Phase 4 — DAC7 tax info collection, German locale, EU readiness
v1.0.0

Wallet Phase 5 — Paystack MoMo automation for Cameroon, Ghana, Nigeria, Kenya, Cote d'Ivoire

  • feat(wallet): Phase 5 — Paystack MoMo onboarding for African carriers
v1.0.0

Wallet Phase 6 — chargeback reserve, reconciliation cron, dispute auto-evidence skeleton

  • feat(wallet): Phase 6 — surface 60-day chargeback reserve balance
v1.0.0

Wallet — replace Paystack with Pawapay; Cameroon + 19 other African countries now covered

  • feat(wallet): swap Paystack for Pawapay; Cameroon now covered along with 19 other African countries via one integration
v1.0.0

Auto-confirm self via user-svc; signup auto-login works regardless of Supabase confirm-email toggle

  • fix(auth): call user-svc auto-confirm-self after signup so auto-login works even with email confirmation enabled
v1.0.0

Auto-login after signup; clearer email-confirmation message

  • fix(auth): auto-login after signup; clear message when email confirmation required
v1.0.0

Email confirmation flow: banner, resend, verify-email web page with deep-link

  • fix(auth): always start unverified after signup; auto-fire ShipKith verification email
v1.0.0

Fix signup trigger (trust_level dropped); surface OAuth error description

  • fix(auth): surface real OAuth error_description instead of generic missing-code message
v1.0.0

Treat email-confirmation-required signup as success, route to login with email prefilled

  • fix(register): treat email-confirmation-required as success; route to login with email prefilled
v1.0.0

Business upgrade: FR translations + bigger animation

  • feat(trust-business): add fr translations + bigger animated halo + sparkle wiggle
v1.0.0

Carrier-facing drop details redesign

  • feat(drop-detail): redesign carrier-facing items breakdown
v1.0.0

Drop creation: bottom-sheet item picker

  • feat(drop): bottom-sheet item picker, total weight/value labels
v1.0.0

Fix realtime postgres_changes-after-subscribe crash

  • fix(realtime): tear down stale channel before re-subscribing
v1.0.0

Handoff UI polish: caption + stacked consent buttons

  • fix(handoff): cleaner segmented control + stacked consent buttons
v1.0.0

Trip create: hub-first handoff with consent gate

  • feat(trip): hub-first handoff section with consent gate for direct
v1.0.0

Trip create: ShipKith hub chips

  • feat(trip-create): toggleable ShipKith hub chips for pickup + delivery areas
v1.0.0

Verified chips emerald, profile header fix, confirm-pickup keyboard, expired trip status

  • fix(profile): verified chips emerald + tick, fix PROFILE.PROFILE header, confirm-pickup keyboard layout, expired trip status
v1.0.0

Communities list fix

  • feat(trust): bigger ladder labels + pulse, stagger fade-in, animated progress fill
  • fix(theme): expose navIconTile.iconSize=26 and use it across nav-tile screens
  • feat(release): add What's New screen + release.sh helper
  • fix(whats-new): use screenRootStyle so global TravelBackground shows
  • fix(shell): wrap whats-new + business verification in ScreenShell
  • fix(whats-new): register screen with headerShown: false to hide native bar
  • fix(register): match login header layout — language pill inline with ShipKith brand
  • fix(register): increase top padding above 'Already have an account' footer
  • fix(release): hide .env during eas update so dev URLs don't leak to OTA
  • fix(settings): remove duplicate Change Password row from Account section
v1.0.0

Drop creation: items + categories unified into one picker

  • feat(drop): unify items + categories into a single per-item picker
v1.0.0

Edit trips from My Bridges + communities list fix

  • fix(communities): correct double-unwrap of API data in list/detail screens
  • feat(activity): manage trip button in expanded bridge card
v1.0.0+25

Over-the-air updates fixed — TestFlight build 25

Internal infrastructure release — no UI changes, but a critical fix for our update pipeline.

  • iOS build 25 ships with the expo-updates runtime baked in for the first time, so future improvements can reach testers without a full TestFlight redeploy.
  • The EAS update channel is now correctly bound to the production branch — previously, published updates weren't reaching installed builds.
  • Going forward, JS-only changes (UI tweaks, copy edits, bug fixes) appear on tester devices on the next cold start; only changes that touch native modules require a fresh TestFlight build.
v1.0.0

Post-publish success screen with live match radar

  • feat(posted): celebratory success screen with live match radar after publish
v1.0.0

Refreshed Manage trip action row

  • feat(bridges): refresh manage-trip CTA — emerald action row instead of black slab
v1.0.0

Standout business upgrade callout

  • feat(trust): outstanding business upgrade callout, hide for business accounts
v1.0.0+25

Trust card polish — visible rating star, animations, bigger ladder labels

Visual refinements to the Trust & Verification screen so your standing progress reads at a glance, plus the first What's New screen.

  • The "Rating ≥ 4.0" requirement now shows the star inside an amber pill — visible at every contrast level.
  • Ladder labels (Kith / Familiar / Regular / Elder / Pillar) are larger, with stronger weight and more breathing room.
  • Animated progress: the trips bar fills smoothly from 0 to your current count on open, and the dot for your current standing pulses gently to draw the eye.
  • Profile, settings, and trust nav tiles use a shared near-black tile token for consistent contrast across the app.
  • New What's New entry under Settings → Support, fetching this changelog directly so future updates are visible without leaving the app.
  • Business Verification and What's New screens now show the global travel illustration consistent with the rest of the app.
v1.0.0+23

Venue picker + direct-handoff consent

Updated October 2026 to match how ShipKith works today: handoffs are direct, in person, and confirmed in the app with a tap and a photo. There is no QR code to scan. ShipKith Hubs are not open yet.

  • New venue picker at the moment of acceptance: choose where the handoff happens. Today every Booking uses Direct (meet in person); the Hub option appears only once a ShipKith Hub opens in your area.
  • Direct-handoff consent: before confirming a direct meeting, both sides read and acknowledge a short safety note.
  • Behind the scenes: groundwork for future ShipKith Hubs, where staff will check parcels in and out.
v1.0.0+22

New Standing vocabulary — Kith, Familiar, Regular, Elder, Pillar

We're retiring the old "Basic / Verified / Pro / Gold" tiers. They felt generic and didn't reflect what trust actually means in our community.

Standing now uses culturally-grounded vocabulary:

  • Kith — you're family from day one.
  • Familiar — known faces who've travelled before.
  • Regular — a steady, reliable presence.
  • Elder — long-standing community member.
  • Pillar — the carriers others build their plans around.

Existing accounts have been mapped to the equivalent new tier — no progress is lost. The shipping caps and fee discounts attached to each level are unchanged.

Verification (email, phone, government ID, business) is now an independent axis: it's binary per item, displayed as ticks on your profile. You can be a Pillar with no government ID, or a Kith with full KYC — they answer different questions.