Skip to content

SwiftUI-native framework that simplifies StoreKit integration with a fluent, chainable API and feature-first approach

License

Notifications You must be signed in to change notification settings

tddworks/InAppKit

Repository files navigation

InAppKit

The simplest way to add premium features to your Swift app

Transform any SwiftUI view into a premium feature with just one line of code. InAppKit handles StoreKit complexity so you can focus on building great features.

ContentView()
    .withPurchases("com.yourapp.pro")

🎨 Visual Showcase

InAppKit Paywall
🚀 Ready-to-use Paywalls
Beautiful, localized paywalls that work out of the box
InAppKit Purchase Options
💳 Smart Purchase Options
Flexible pricing cards with marketing badges and savings indicators

✨ What You Get

  • 🚀 One-line setup - Add premium features instantly
  • 🎯 Type-safe features - Enum-based feature gating prevents errors
  • 💳 StoreKit integration - Handles purchases, receipts, and validation
  • 🎨 Customizable paywalls - Beautiful UI out of the box, fully customizable
  • 🌍 Localization support - Built-in internationalization with fallback safety
  • 📱 iOS 17+ support - Built with latest SwiftUI and StoreKit 2

🚧 Requirements

  • iOS 17.0+
  • Xcode 15.0+
  • Swift 5.9+

📦 Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/tddworks/InAppKit.git", from: "1.0.1")
]

🚀 Quick Start

1. Add InAppKit to any view

import InAppKit

ContentView()
    .withPurchases("com.yourapp.pro")

2. Gate premium features

Text("Premium Content")
    .requiresPurchase()  // Shows paywall if not purchased

3. That's it!

InAppKit automatically:

  • Creates and displays paywalls when needed
  • Handles StoreKit purchases
  • Validates receipts
  • Remembers purchase state

📚 Learn More

Learn core concepts: Products, Features, and Paywalls

Choose the right strategy: Freemium, Premium, or Subscription

Customize UI, add marketing info, and advanced configuration

Multi-language support with 30+ localization keys and fallback safety

Complete API documentation and advanced features

🎯 Real-World Example

enum AppFeature: String, AppFeature {
    case removeAds = "remove_ads"
    case cloudSync = "cloud_sync"
    case exportPDF = "export_pdf"
}

ContentView()
    .withPurchases(products: [
        Product("com.yourapp.pro", features: AppFeature.allCases)
    ])
    .withPaywall { context in
        PaywallView(products: context.availableProducts)
    }

🛠️ Support

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

📄 License

Apache-2.0 License. See LICENSE for details.


🙏 Acknowledgments

  • Built on Apple's StoreKit 2
  • Inspired by SwiftUI's declarative approach
  • Designed for modern iOS development

Ready to add premium features?Start with the Getting Started Guide

InAppKit - Because in-app purchases shouldn't be complicated. 🚀

Made with ❤️ by the TDDWorks team

About

SwiftUI-native framework that simplifies StoreKit integration with a fluent, chainable API and feature-first approach

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Languages