A wallet app does not need to become a bank account, a spending dashboard or another cloud profile. Holder takes the narrower route: it is a private place to keep card details you want close at hand, with on-device scanning, biometric protection and a native SwiftUI interface for iPhone, iPad and Mac.
The current App Store listing is the practical release to install. It shows version 2.3 and supports iPhone, iPad and Mac, while the public repository's main branch currently declares marketing version 2.5. That difference matters: the App Store build is the normal user path, while the repository is the path for inspection, development and source builds.
What It Does
Holder stores payment cards and other card-like records in one focused vault. The project models credit cards, debit cards and an Other type, then lets you label a record with a card network such as Visa, Mastercard, American Express, Discover, JCB or UnionPay. It is equally suited to a membership card, loyalty card, ID card or insurance card when keeping a small reference copy is more useful than carrying the physical card everywhere.
The useful daily actions are deliberately small: add a card, review its details, copy a number or security code when you need it, and archive records that are no longer active. The app can show card images as an optional visual reference, but the sensitive text fields remain the core data.
On iPhone and iPad, the add flow can scan a physical card with VisionKit on the device. The scanner reads the number, name and expiry as a starting point, then gives you a review step before saving. Manual entry remains available, and the Mac experience is manual because the desktop app does not use a Mac camera for card scanning.
How to Install It
Use the official Holder App Store listing. This is the recommended path because it provides the signed production app for iPhone, iPad and Mac without asking you to open Xcode. The listed requirements are iOS 17 or later, iPadOS 17 or later, and macOS 15.6 or later.
# Install the production app from the App Store:
open https://apps.apple.com/us/app/offline-card-vault-holder/id6475649492After the first launch, decide whether to enable optional iCloud Keychain sync and whether you want to keep card images in iCloud Documents. Neither choice is required for the local vault to be useful. Build from source only when you intend to inspect or modify Holder; it is not a better installation path for ordinary use.
Add Your First Card
On iPhone or iPad, tap the add action and choose Scan when you have a physical card available. Keep the card inside the camera frame, review every recognized value, and correct anything the scanner missed before saving. VisionKit recognition is a convenience, not a reason to skip checking the number, name, expiry or security code.
Choose Manual Entry when the card is not in front of you, when the camera cannot read it, or when you are creating a non-payment record. On Mac, manual entry is the expected flow. Give the record a useful display name, choose its type and network, and add a description if you need to distinguish it from another card.
# Normal user path:
# App Store → Install Holder → Add a Card
# On iPhone/iPad, choose Scan or Manual Entry.Holder treats the security code as a protected field. It stays masked until you have recently authenticated, and actions that share card data can omit the code or explicitly include it after authentication. That makes the app more suitable for quick reference than a plain text note, while still leaving the final decision about what to share with you.
# Build a development copy only when you need to modify Holder:
git clone https://github.com/swiftlysingh/Holder.git
cd Holder
open cards.xcodeprojHow to Use Holder
For a frequent card, the main value is reducing the number of steps between opening the app and copying the field you need. Choose the card, authenticate when a protected value is requested, then use the copy or share action. The app also includes widgets and a native Mac experience, so a card can be close without turning the home screen or menu bar into a full wallet interface.
Security and Privacy
Holder does not ask you to create a Holder server account and does not provide a remote card vault. Card records are persisted through Apple Keychain, with optional synchronizable Keychain storage for devices using the same Apple account. This is a local-first design, but it still depends on the security of your device, Apple account and Keychain settings.
The scanner runs on-device. The project's privacy documentation says that camera images and recognized card values are not sent to Holder's analytics, crash-reporting or purchase services for scanning. Limited diagnostic, scanner-performance and purchase-related metadata may still be sent to services such as PostHog, Sentry, RevenueCat or Apple, depending on the feature and your settings.
Under the Hood
The project is a Swift and SwiftUI application with separate iOS and macOS targets. A card record includes values such as number, name, expiry, security code, description, type, network and archived state. The model keeps the vault deliberately card-shaped instead of trying to become a general finance database.
Optional card images follow a different storage path from the text fields: the UI warns that images are stored in iCloud Documents rather than in Keychain. Widgets receive only a reduced summary such as display name, last four digits, card type and network through the app group; they do not receive the full number, security code or expiry.
Security Boundaries
Holder adds several small boundaries around sensitive actions. A privacy curtain covers the interface when the app moves into the background, and access to sensitive values expires after a short authentication window. Face ID or Touch ID protects the app's locked state, but it does not change the fact that a card number copied to another app is now under that app's control.
Copying uses the system clipboard, and the project does not automatically clear the clipboard for you. Treat a copied number or security code as temporary sensitive data: paste it where needed, then review whether the destination app, clipboard manager or Mac continuity feature retains it.
What to Verify
Before moving real card data into Holder, verify the App Store publisher, the device requirements and the exact sync choice you want. Start with one non-critical card, check that the number and expiry are correct after scanning, and confirm that the record appears only on the devices where you enabled the relevant Apple Keychain or iCloud behavior.
If you use widgets, inspect the visible summary on the lock screen or desktop. Holder's widget data is intentionally reduced, but the last four digits and card name can still be personal information. Keep screenshots and card images out of places that are backed up or shared more broadly than you expect.
Where It Falls Short
Holder is not a banking app, a payment app or an automatic wallet replacement. It does not link bank accounts, analyse spending, make payments or provide a hosted recovery account. If you need transaction history, fraud alerts, live balances or issuer-managed card provisioning, use the bank or payment service that actually provides those functions.
The local-first model also puts recovery responsibility on you. Optional Keychain sync can help across Apple devices, but it is not the same thing as an independent export or an account you can recover from any platform. Card images have their own iCloud Documents path, and the Mac target relies on manual entry rather than camera scanning.
Finally, the public repository should be read with its license in view. The project is available for inspection and development, but the included CC BY-NC 4.0 terms prohibit commercial use by default. Do not assume that a public GitHub repository grants the same reuse rights as an MIT or Apache-licensed project.
License
Holder is published under the Creative Commons Attribution-NonCommercial 4.0 International license. The license requires attribution and does not permit commercial use under its default terms. If you redistribute a modified copy or use the source in another project, read the full license and preserve the required notice.
The App Store listing and the source repository are two different distribution contexts. Installing the signed App Store build gives you the supported consumer path; cloning the repository gives you code to inspect or build under its license. Keep third-party Apple frameworks, analytics SDKs and any copied assets subject to their own terms as well.
Should You Install It
Install Holder if you want a small, private card reference tool rather than a full financial dashboard. The App Store build is the right starting point: scan or enter a few cards, review the protected fields, decide whether Keychain sync and card images fit your setup, and keep clipboard and widget exposure in mind. For ordinary use, the App Store is enough; the GitHub project is there when you want to inspect or modify the implementation.
Project facts
- License
- CC BY-NC 4.0
- Platform
- iOS 17+ / iPadOS 17+ / macOS 15.6+
- Written in
- Swift, SwiftUI
- Version reviewed
- App Store 2.3; source main marketing version 2.5 (2026-09-21)
- Repository
- github.com/swiftlysingh/Holder
Install
# Install the production app from the App Store:
open https://apps.apple.com/us/app/offline-card-vault-holder/id6475649492License summary
The repository is published under Creative Commons Attribution-NonCommercial 4.0 International. Attribution is required and commercial use is not permitted under the default license.



