Cross-promotion for independent Apple-platform apps

Growth you don’t have to buy.

Put a small card in your app that recommends another indie app. In return, yours gets recommended inside theirs, in front of people who already install apps like it.

  • Swift, Flutter & React Native
  • No ad spend, ever
  • No cross-app tracking

iPhone, iPad, and Mac

Swift on iOS or macOS. Flutter and React Native on iOS.

Three first-class packages, one network. Configure once at launch, then drop it into the screens you already have. Placements are typed, so a mistyped one never ships.

// once, at launch
try CrossPromo.configure(appKey: "cp_live_…")

// once, on a screen that already exists
CrossPromoCard(placement: .postScan)

Swift Package Manager · Git dependency in pubspec.yaml · npm iOS 16+ · macOS 13+ for native Swift

Rather not do it by hand? Your dashboard hands you a ready-made prompt. Paste it into Claude Code, Codex, Cursor or Copilot and it wires the integration up for you.

How it works

From App Store link to live growth loop.

You choose where a recommendation belongs in your product. CrossPromo handles the matching, the verification and the counting.

  1. 01

    Register your app

    Paste your public App Store link. We check the listing and open your developer workspace. No contract, no card, no sales call.

  2. 02

    Place the card

    Two lines in Swift, Flutter or React Native. Most apps have a few natural homes for it: a result, a success state, settings, an empty state.

  3. 03

    Ship it, then earn

    Once your update is public on the App Store, every two verified recommendations you show earns one promotion of your own app.

Why it works

A small card. Rules that stay honest.

Paid acquisition asks for money you’d rather spend building. This asks for a corner of a screen, and gives you the same corner back in someone else’s app.

The exchange rate

2on yours1on theirs

Two on your screen, one on theirs.

One public rate for everyone, no auction and no bidding war. Earned promotions never expire. Stop showing cards tomorrow and what you’ve already earned is still waiting.

Only real releases count.

Impressions and clicks are verified server-side against your live App Store release. Simulators, debug builds and TestFlight can’t inflate anyone’s numbers, including your competitors’.

You pick the company you keep.

Category and app-level filters decide what’s allowed to appear next to your brand. The card is the only surface there is: no interstitials, no takeovers, no autoplay.

A dashboard that closes the loop.

Impressions received and served, clicks, CTR, the daily trend, and the exact list of apps sending users your way.

Privacy, deliberately boring

Your privacy labels
write themselves.

The SDK sends no identifier of any kind, so there’s nothing to join one event to the next. No cross-app profile, no device graph, no advertising ID. Nothing to leak, and nothing to explain to the people who trust your app.

Five small answers in App Store Connect and you’re done. No ATT prompt. No Device ID declaration. The dashboard walks you through each one.

What we keepCrossPromo SDK
  • Installation IDNot stored
  • Device IDNot stored
  • IP addressNot stored
  • User agent & localeNot stored
  • Cross-app trackingNot used

Every event we store names two apps, and nothing else.

Questions, answered

Before you put your app in the loop.

Version 1 is intentionally narrow, so the rules stay short enough to read in full.

Add your app
What is CrossPromo?

A reciprocal cross-promotion network for independent iPhone, iPad, and Mac apps. Participating apps show a compatible recommendation card for one another, creating a shared discovery channel that costs impressions instead of ad budget.

What does it cost?

Nothing. No fee, no ad spend, no card on file. You pay in attention: every two verified recommendations your app shows earns one promotion of your own app.

Does it work with Flutter and React Native?

Yes on iOS. Native Swift supports both iOS and macOS; Flutter gets a PromoCard widget on iOS, and React Native gets a <PromoCard /> component on iOS. All integrations use the same configuration and typed placements.

Which apps can join right now?

Public iPhone, iPad, and Mac apps on the Apple App Store. Native Swift apps target iOS 16 or macOS 13 or later; Flutter and React Native support is currently iOS-only.

Do TestFlight or debug builds count?

No. Simulators, debug builds, StoreKit testing, TestFlight and sandbox activity are there to help you test the integration. Only activity from a public App Store release is verified and counted. That’s exactly why the numbers you receive are worth something.

Does CrossPromo track my users?

No. Every event we store names two apps, and nothing else. CrossPromo does not store an installation ID, device ID, IP address, user agent or locale, and it never builds a profile that follows someone between apps.

What about Android?

Not yet. CrossPromo currently supports Apple App Store apps on iOS, iPadOS, and macOS, with the same signed App Store verification and privacy rules. Google Play support is planned.

Give a great app a way in.
Get one back.

Free to join. Two lines of code.