RORK LABJP
ENGINE — Rork Max is powered by Claude Code and Claude Opus 4.6, generating native Swift apps directlyCORE ML — Rork Max reaches on-device Core ML inference alongside HealthKit, HomeKit, NFC, and App ClipsSEED — Rork raised a $15M seed led by Left Lane Capital in April 2026, joined by Peak XV and a16z SpeedrunM&A — Rork acquired the app builder Paperline and says it will stay acquisitive to bring in engineering talentMARKET — Gartner expects 75% of new applications to be built with low-code or no-code tools by the end of 2026GROWTH — The no-code AI platform market is projected to grow from $4.9B in 2024 to $24.8B by 2029ENGINE — Rork Max is powered by Claude Code and Claude Opus 4.6, generating native Swift apps directlyCORE ML — Rork Max reaches on-device Core ML inference alongside HealthKit, HomeKit, NFC, and App ClipsSEED — Rork raised a $15M seed led by Left Lane Capital in April 2026, joined by Peak XV and a16z SpeedrunM&A — Rork acquired the app builder Paperline and says it will stay acquisitive to bring in engineering talentMARKET — Gartner expects 75% of new applications to be built with low-code or no-code tools by the end of 2026GROWTH — The no-code AI platform market is projected to grow from $4.9B in 2024 to $24.8B by 2029
Articles/App Dev
App Dev/2026-06-16Advanced

Adding an Apple Wallet Stamp Card to a Rork Max App — Signing and Updates

You want a shop stamp card in Apple Wallet. When you issue a PassKit pass from a Swift app generated by Rork Max, the hard parts are not design — they are signing and remote updates. Here are the implementation essentials.

Rork Max219PassKitApple WalletSwift43Loyalty

Premium Article

A Stamp Card as an "Image" Is Useless

It began when someone asked me to replace a paper stamp card with one in Apple Wallet. Simply showing an image of the card face is easy. But that way, stamps added per visit are not reflected, and the user ends up opening the app to check anyway. The point of putting it in Wallet is that it appears on the lock screen and the balance or stamp count stays current automatically.

Issuing a PassKit pass from a native Swift app generated by Rork Max taught me that the hard parts are not design — they are "signing" and "remote updates." Clear those two, or a Wallet pass is no better than a still image. Even as an indie developer who has shipped plenty of apps, this was a fresh stumble for me. Here are the essentials I confirmed.

A pkpass Is a Signed ZIP

An Apple Wallet pass (.pkpass) is a ZIP archive of several files, signed together. Its contents fall into roughly three parts.

First is pass.json: the pass type (store card, coupon, boarding pass, etc.), the fields to display, colors, and the barcode. Second is the images (icon.png, logo.png, and so on). Third is manifest.json and signature — the heart of signing.

manifest.json is a list of SHA-1 hashes for each file. signature is a PKCS#7 binary signing that manifest with your Pass Type ID certificate. In other words, tamper with even one file and the hash no longer matches, so Wallet rejects the pass. That is why "just swap the image" does not work.

A minimal pass.json:

{
  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.example.stamp",
  "serialNumber": "user-00123",
  "teamIdentifier": "YOUR_TEAM_ID",
  "organizationName": "Sample Coffee",
  "description": "Stamp Card",
  "storeCard": {
    "primaryFields": [
      { "key": "stamps", "label": "Stamps", "value": "3 / 10" }
    ]
  },
  "barcode": {
    "format": "PKBarcodeFormatQR",
    "message": "user-00123",
    "messageEncoding": "iso-8859-1"
  },
  "webServiceURL": "https://example.com/passes/",
  "authenticationToken": "REPLACE_WITH_PER_USER_TOKEN"
}

webServiceURL and authenticationToken are the entry point for the remote updates described below. The signing itself happens on the server (or at build time). You must not bundle the private key in the app, so generating and signing the pass should be the backend's responsibility.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Understand the structure of a pkpass (pass.json, manifest, signature) and where signing actually matters
Learn the PKAddPassesViewController code to add a pass to Wallet from your app
Reproduce the push-update flow that bumps the stamp count on each visit, and the server-side web service requirements
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

App Dev2026-07-05
Rork Max (Swift) or the Standard Version (React Native): How to Decide as a Solo Developer
Stuck between Rork Max's native Swift and the standard React Native version? Here is a practical decision framework built from a solo developer's perspective, weighing cost, feature boundaries, and how easy each path is to migrate later.
App Dev2026-07-03
Making Your Rork Max App Resilient to Dropped and Restored Connections: Offline Detection and Retry with NWPathMonitor
Build networking that survives a lost signal in your Rork Max native Swift app with NWPathMonitor. Detect offline states, respect Low Data Mode and cellular, and auto-resend queued work on reconnect — all with working Swift code.
App Dev2026-07-03
Keeping Downloads Alive After Your Rork Max App Is Killed: Background URLSession Design and Relaunch Handling
How to design downloads in a Rork Max native Swift app so transfers continue in the OS daemon even after the app is suspended or terminated. Covers relaunch wiring, resumeData recovery, and measured isDiscretionary behavior with working code.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →