<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Amore Blog</title>
  <subtitle>Updates from Amore</subtitle>
  <link href="https://amore.computer/feed.xml" rel="self" />
  <link href="https://amore.computer/" />
  <updated>2026-08-05T00:00:00Z</updated>
  <id>https://amore.computer/</id>
  <author>
    <name>Amore</name>
  </author>
  <entry>
    <title>With Amore №1</title>
    <link href="https://amore.computer/blog/1/" />
    <updated>2025-12-29T00:00:00Z</updated>
    <id>https://amore.computer/blog/1/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the first issue of »With Amore«, which I plan to use to keep you in the loop about significant project milestones and product updates.&lt;/p&gt;
&lt;p&gt;Since my &lt;a href=&quot;https://lucas.love/blog/vision-macos-app-distribution&quot;&gt;blog post&lt;/a&gt; back in late November the project evolved into a fully-fledged Mac app that&#39;s able to take care of every step of distributing app updates to your users and already has a couple of developers using it.&lt;/p&gt;
&lt;p&gt;Last week I introduced a new &lt;a href=&quot;https://amore.computer/help/&quot;&gt;help page&lt;/a&gt; that hosts Amore&#39;s documentation and shows how to get started. It&#39;s a good way to get an overview of what Amore is currently capable of. I strive to make this one of the best documentations for a developer tool.&lt;/p&gt;
&lt;p&gt;Let&#39;s dive into some of the things Amore can do for you today.&lt;/p&gt;
&lt;h3 id=&quot;from-archiving-to-releasing&quot;&gt;From Archiving to Releasing&lt;/h3&gt;
&lt;p&gt;To streamline the release process, &lt;em&gt;Amore&lt;/em&gt;&#39;s &lt;a href=&quot;https://amore.computer/help/command-line/&quot;&gt;cli&lt;/a&gt; offers a command to be used with &lt;a href=&quot;https://amore.computer/help/xcode-post-archive-action/&quot;&gt;Xcode&#39; archive post-actions&lt;/a&gt;, which will automatically handle every part of the release process after you archived your project.&lt;/p&gt;
&lt;p&gt;This includes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Exporting the archive&lt;/li&gt;
&lt;li&gt;Code signing your executable&lt;/li&gt;
&lt;li&gt;Creating an installer DMG (optional)&lt;/li&gt;
&lt;li&gt;Notarizing your app&lt;/li&gt;
&lt;li&gt;Signing your app for the Sparkle updater&lt;/li&gt;
&lt;li&gt;Creating a new &lt;code&gt;appcast.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uploading your app binary&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;amore-for-new-apps&quot;&gt;Amore for New Apps&lt;/h3&gt;
&lt;p&gt;The help pages now include a &lt;a href=&quot;https://amore.computer/help/get-started/&quot;&gt;Get Started&lt;/a&gt; article that describes how to configure a new app for distribution via Amore. The process consists of 3 easy steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Register app with Amore via drag and drop&lt;/li&gt;
&lt;li&gt;Configure Sparkle in your project. (Amore can do parts of this automatically)&lt;/li&gt;
&lt;li&gt;Publish your first release&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I tested this with multiple developers now and the whole process takes around 10 minutes.&lt;/p&gt;
&lt;h3 id=&quot;amore-for-existing-apps&quot;&gt;Amore for Existing Apps&lt;/h3&gt;
&lt;p&gt;Over the last month I did dozens of developer onboarding sessions and learned that developers with existing apps face different problems and would like to keep their existing Sparkle setups.&lt;/p&gt;
&lt;p&gt;Most of these setups included distribution of updates via the developer&#39;s S3 bucket and some custom scripts to create notarized DMGs and upload the result to S3.&lt;/p&gt;
&lt;p&gt;I am happy to report that Amore now supports the same convenience for apps distributed via S3 buckets. You will be able to use your own S3 bucket from any cloud provider to distribute updates. Only minimal configuration will be required. You won&#39;t need to change the source code of your app to get started with Amore.&lt;/p&gt;
&lt;p&gt;Once setup, Amore can take care of the full release pipeline and you can even edit the &lt;code&gt;appcast.xml&lt;/code&gt; right from inside Amore. This means you can tweak release notes or change settings like beta channel or phased rollouts without ever leaving Amore.&lt;/p&gt;
&lt;h3 id=&quot;early-access-promo&quot;&gt;Early Access Promo&lt;/h3&gt;
&lt;p&gt;As a thank you for your early support, I offer you the sexy price of $69 per year instead of $99, which won&#39;t change, even when I raise subscription prices in the future. You can get it &lt;a href=&quot;https://amore.computer/early-access-promo&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;Currently I am working on the public beta release of Amore and looking for a few developers who are interested in personal onboarding sessions. If that is something that interests you, please reply to this email to get in touch.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>With Amore №2</title>
    <link href="https://amore.computer/blog/2/" />
    <updated>2026-01-29T00:00:00Z</updated>
    <id>https://amore.computer/blog/2/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the second issue of »With Amore«, which I plan to use to keep you in the loop about significant project milestones and product updates.&lt;/p&gt;
&lt;p&gt;Since the first issue 4 weeks ago, I have been working closely with several developers to make Amore easier to use and to support more use cases. Almost every feature now has a dedicated help page on amore.computer which you can find right inside the app.&lt;/p&gt;
&lt;h3 id=&quot;whyfi&quot;&gt;WhyFi&lt;/h3&gt;
&lt;p&gt;Last weekend my friend &lt;a href=&quot;https://jamespotter.dev&quot;&gt;James Potter&lt;/a&gt; shared his weekend project &lt;a href=&quot;https://whyfi.network&quot;&gt;WhyFi&lt;/a&gt; in a &lt;a href=&quot;https://x.com/jamespotter/status/2014977962890936523&quot;&gt;tweet&lt;/a&gt;, which shortly after went viral. All the attention encouraged him to package it up for distribution and start selling it for $10.&lt;/p&gt;
&lt;p&gt;On the same day, he reached out to me asking if he could have early access. A few hours later he had hundreds of happy customers and confidently published WhyFi with Amore.&lt;/p&gt;
&lt;p&gt;Through Amore, he already shipped half a dozen of over-the-air updates to improve WhyFi.&lt;/p&gt;
&lt;p&gt;His success accomplishes my initial vision for this project, which was to help my friends and fellow developers to focus on what they are doing best: building great products instead of wrangling with tedious distribution flows.&lt;/p&gt;
&lt;h3 id=&quot;public-beta&quot;&gt;Public Beta&lt;/h3&gt;
&lt;p&gt;After onboarding new developers to the &lt;a href=&quot;https://amore.computer/help/s3-bucket/&quot;&gt;self-managed S3 bucket feature&lt;/a&gt; and having the first viral app distributed via Amore, it&#39;s time to leave the early access phase and open the project for everyone who&#39;s interested to self-publish their Mac apps.&lt;/p&gt;
&lt;p&gt;You can get started today by downloading Amore from &lt;a href=&quot;https://amore.computer/download&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I recommend you use the &lt;a href=&quot;https://amore.computer/help/get-started/&quot;&gt;Get Started with Amore&lt;/a&gt; guide, which includes a short &lt;a href=&quot;https://cdn.amore.computer/videos/get-started.mp4&quot;&gt;video (3:35)&lt;/a&gt; that walks you through the steps of self-publishing your first app with Amore.&lt;/p&gt;
&lt;p&gt;The option to get a personal onboarding still exists. Please reply to this email if you are interested or need help setting things up.&lt;/p&gt;
&lt;h3 id=&quot;amore&quot;&gt;Amore+&lt;/h3&gt;
&lt;p&gt;For the time being Amore will be free to use for everyone who wants to get started publishing their Mac apps. To keep this project sustainable, the latest version of the app includes Amore+, which currently is a monthly/yearly subscription of $9.99/99.&lt;/p&gt;
&lt;p&gt;The subscription currently unlocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unlimited app and releases&lt;/li&gt;
&lt;li&gt;Custom domains (when hosting on Amore)&lt;/li&gt;
&lt;li&gt;The option to remove the »Built with amore.computer« watermark in the DMG image&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;built-with-amore&quot;&gt;Built with Amore&lt;/h3&gt;
&lt;p&gt;I want to use this opportunity to thank the early supporters of this project that taught me so much and helped shape Amore into the tool it is today. Their apps are all built with Amore in more ways than one.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Massimo Biolcati&lt;/em&gt;: &lt;a href=&quot;https://www.irealpro.com/&quot;&gt;iReal Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Naveen Naidu&lt;/em&gt;: &lt;a href=&quot;https://www.monologue.to/&quot;&gt;Monologue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;James Potter&lt;/em&gt;: &lt;a href=&quot;https://whyfi.network/&quot;&gt;WhyFi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Alberto Gallego&lt;/em&gt;: &lt;a href=&quot;https://picmal.app/&quot;&gt;Picmal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Konstantin&lt;/em&gt;: &lt;a href=&quot;https://iamkonstantin.eu/blog/meet-browski-a-browser-companion-for-the-mac/&quot;&gt;Browski&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;A common theme with developers in onboarding calls has been confusion around some of Amore&#39;s features, like &lt;a href=&quot;https://amore.computer/help/dmg-creation/&quot;&gt;DMG creation&lt;/a&gt;, which felt a bit too magical. I am currently working on demystifying and better communicating what Amore is doing and exposing previously implicit behavior as explicit settings in the UI and documenting it.&lt;/p&gt;
&lt;p&gt;After this work has been done, I want to focus on developer feedback and look into 2 areas more deeply. The first area is payments and licensing for apps, so developers can use Amore to earn money. The second one is to build pretty download pages for apps hosted on Amore and possibly have an index of apps to help developers get more attention for their projects.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to Distribute a macOS App Outside the App Store</title>
    <link href="https://amore.computer/blog/distribute-macos-app-outside-app-store/" />
    <updated>2026-02-18T00:00:00Z</updated>
    <id>https://amore.computer/blog/distribute-macos-app-outside-app-store/</id>
    <content type="html">&lt;p&gt;If you&#39;re building a Mac app, distributing through the App Store isn&#39;t your only option. Many of the most popular Mac apps like ChatGPT, Firefox, Sketch, Sublime Text ship directly to users without ever going through App Review.&lt;/p&gt;
&lt;p&gt;Here&#39;s why you might want to do the same, and exactly how to do it.&lt;/p&gt;
&lt;h2 id=&quot;why-distribute-outside-the-app-store&quot;&gt;Why distribute outside the App Store?&lt;/h2&gt;
&lt;p&gt;The Mac App Store takes a 30% cut of every sale. That&#39;s significant, but it&#39;s not the only reason developers choose to self-publish:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No App Review delays.&lt;/strong&gt; Ship on your own schedule, not Apple&#39;s.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct customer relationship.&lt;/strong&gt; You own the relationship and the payment flow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full control.&lt;/strong&gt; Use private APIs, kernel extensions, or system-level features that the App Store doesn&#39;t allow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No sandboxing requirement.&lt;/strong&gt; The App Store requires App Sandbox. Outside it, you choose the security model that fits your app.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The trade-off is that you need to handle a few things yourself: code signing, notarization, updates, and packaging. Let&#39;s walk through each.&lt;/p&gt;
&lt;h2 id=&quot;what-you-need&quot;&gt;What you need&lt;/h2&gt;
&lt;p&gt;Before distributing outside the App Store, you&#39;ll need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;An Apple Developer account&lt;/strong&gt; ($99/year) — required for code signing certificates and notarization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Developer ID certificate&lt;/strong&gt; — this is different from the App Store distribution certificate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A way to notarize your app&lt;/strong&gt; — Apple requires this so macOS doesn&#39;t show scary warnings to your users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An update mechanism&lt;/strong&gt; — your users need a way to get new versions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A distribution format&lt;/strong&gt; — typically a DMG installer.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;code-signing-and-notarization&quot;&gt;Code signing and notarization&lt;/h2&gt;
&lt;p&gt;Every Mac app distributed outside the App Store must be signed with a Developer ID certificate and notarized by Apple. Without this, macOS Gatekeeper will block your app or show a warning dialog that scares users away.&lt;/p&gt;
&lt;p&gt;Notarization is Apple&#39;s automated check that your app is free of malware and has been properly signed. The process involves uploading your app to Apple&#39;s servers, waiting for approval (usually a few minutes), and then stapling the notarization ticket to your app.&lt;/p&gt;
&lt;p&gt;You can do this manually with &lt;code&gt;xcrun notarytool&lt;/code&gt;, or &lt;a href=&quot;https://amore.computer/help/codesigning/&quot;&gt;let Amore handle it automatically&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;over-the-air-updates-with-sparkle&quot;&gt;Over-the-air updates with Sparkle&lt;/h2&gt;
&lt;p&gt;Without the App Store, you need your own update mechanism so your users don’t have to download your app from your website again once you released a new version. &lt;a href=&quot;https://sparkle-project.org/&quot;&gt;Sparkle&lt;/a&gt; is the de facto standard for macOS app updates. It&#39;s been around for over a decade, is used by thousands of apps, and provides a familiar update experience for Mac users.&lt;/p&gt;
&lt;p&gt;Sparkle works by checking an RSS-like feed (called an &lt;code&gt;appcast.xml&lt;/code&gt;) for new versions. When an update is available, it downloads it, verifies the cryptographic signature, and installs it, all with a native macOS UI your users already recognize.&lt;/p&gt;
&lt;p&gt;Setting up Sparkle involves adding the framework to your project, configuring your &lt;code&gt;Info.plist&lt;/code&gt; with a feed URL and public key, and hosting the appcast somewhere. You can follow our &lt;a href=&quot;https://amore.computer/help/sparkle/&quot;&gt;step-by-step Sparkle setup guide&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;creating-a-dmg-installer&quot;&gt;Creating a DMG installer&lt;/h2&gt;
&lt;p&gt;A DMG (disk image) is the standard way to distribute Mac apps outside the App Store. Users download the DMG, open it, and drag your app to the Applications folder. It&#39;s simple and familiar.&lt;/p&gt;
&lt;p&gt;A good DMG includes a custom background with a visual arrow pointing from your app icon to the Applications folder. The DMG itself should be code-signed and notarized so users don&#39;t see any warnings.&lt;/p&gt;
&lt;p&gt;Creating DMGs manually with &lt;code&gt;hdiutil&lt;/code&gt; and setting up the background and layout is tedious. &lt;a href=&quot;https://amore.computer/help/dmg-creation/&quot;&gt;Amore creates DMG installers automatically&lt;/a&gt; as part of the release process.&lt;/p&gt;
&lt;h2 id=&quot;putting-it-all-together&quot;&gt;Putting it all together&lt;/h2&gt;
&lt;p&gt;Each piece — code signing, notarization, Sparkle updates, DMG creation — is well-documented individually. The challenge is wiring them all together into a reliable release workflow.&lt;/p&gt;
&lt;p&gt;That&#39;s exactly what &lt;a href=&quot;https://amore.computer/&quot;&gt;Amore&lt;/a&gt; does. It&#39;s a Mac app and CLI that handles the entire release pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Code-sign your app with your Developer ID&lt;/li&gt;
&lt;li&gt;Notarize with Apple&lt;/li&gt;
&lt;li&gt;Create a DMG installer&lt;/li&gt;
&lt;li&gt;Sign the update for Sparkle&lt;/li&gt;
&lt;li&gt;Generate the &lt;code&gt;appcast.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Upload everything for distribution&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can do this through the GUI by dragging your app in, or with a single CLI command:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;amore release &lt;span class=&quot;token parameter variable&quot;&gt;--scheme&lt;/span&gt; Acme&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://amore.computer/help/get-started/&quot;&gt;Get started with Amore in under 5 minutes&lt;/a&gt;.  It&#39;s free for open-source projects and has a free tier for everyone else.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>With Amore №3</title>
    <link href="https://amore.computer/blog/3/" />
    <updated>2026-03-01T00:00:00Z</updated>
    <id>https://amore.computer/blog/3/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the third issue of »With Amore«, which I use to keep you in the loop about significant project milestones and product updates.&lt;/p&gt;
&lt;p&gt;At the beginning of February, I focused on making the &lt;code&gt;amore&lt;/code&gt; CLI more powerful and easier to use for humans and their agents. I also made significant progress towards a powerful licensing and payments system.&lt;/p&gt;
&lt;h3 id=&quot;cli&quot;&gt;CLI&lt;/h3&gt;
&lt;p&gt;In short, the &lt;code&gt;amore&lt;/code&gt; CLI reached feature parity with the Mac app, which means that everything you can do using the Amore app can now be done in the command line. This is especially useful for automation using scripts or coding agents.&lt;/p&gt;
&lt;p&gt;One highlight is additions to the &lt;code&gt;amore release&lt;/code&gt; command, which now allows you to release a new version of your app right from the project folder without the need for manually archiving and notarizing. The currently fastest way to publish new releases with Amore.&lt;/p&gt;
&lt;p&gt;It&#39;s now also possible to let an agent complete the initial Sparkle and Amore setup for your app. The &lt;code&gt;amore setup&lt;/code&gt; command registers new apps, and with &lt;code&gt;amore config&lt;/code&gt; you or your agent can change the release settings of your app.&lt;/p&gt;
&lt;p&gt;Tell your agent about the &lt;code&gt;amore help&lt;/code&gt; command to get them started.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://amore.computer/help/command-line/&quot;&gt;&lt;strong&gt;Learn More&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;licensing-and-payments&quot;&gt;Licensing &amp;amp; Payments&lt;/h3&gt;
&lt;p&gt;Another big focus in February was the Amore licensing and payments system, which will be publicly available in March. If you are interested, please reply to this email. Early developers get lasting, better conditions before the public release.&lt;/p&gt;
&lt;p&gt;The licensing system consists of a secure Swift SDK called &lt;a href=&quot;https://docs.amore.computer&quot;&gt;AmoreLicensing&lt;/a&gt;, a licensing server, a self-serve customer portal for your users, and a powerful API for 3rd-party payment providers.&lt;/p&gt;
&lt;p&gt;Amore currently supports issuing new licenses via CLI, API, and Stripe webhooks. Other payment providers will be added in the future.&lt;/p&gt;
&lt;p&gt;The user journey for your customers currently looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Optional: The user opens the Amore checkout link for your product, which will redirect to a pre-configured Stripe Checkout session.&lt;/li&gt;
&lt;li&gt;The user purchases a Stripe product. Both one-time payments and subscriptions are supported.&lt;/li&gt;
&lt;li&gt;The user gets redirected to an Amore-hosted success page with information about their purchase and freshly issued license key.&lt;/li&gt;
&lt;li&gt;The user enters their license key in your app.&lt;/li&gt;
&lt;li&gt;The license gets validated and your app activated.&lt;/li&gt;
&lt;li&gt;Optional: The user can manage and revoke their license activations in the Amore customer portal by using their email address as an identifier.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can modify the user journey by pre-issuing license keys or using the licensing API to build your own licensing solution.&lt;/p&gt;
&lt;h3 id=&quot;stripe-as-merchant-of-record&quot;&gt;Stripe as Merchant of Record&lt;/h3&gt;
&lt;p&gt;I decided to use Stripe as the first 3rd-party payment provider because they now offer to use Link as a Merchant of Record via &lt;a href=&quot;https://docs.stripe.com/payments/managed-payments&quot;&gt;Stripe Managed Payments&lt;/a&gt;. It&#39;s easy to set up and fully compatible with Amore. If you prefer to sell licenses directly via Stripe, you can do that too.&lt;/p&gt;
&lt;p&gt;Amore itself is already using Stripe Managed Payments since November without any issues or complaints.&lt;/p&gt;
&lt;h3 id=&quot;built-with-amore&quot;&gt;Built with Amore&lt;/h3&gt;
&lt;p&gt;Like last month, I want to thank early supporters and adopters of this project that helped shape Amore into the tool it is today. Here are some of the highlights of the 20 new apps that started relying on Amore since last month.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stewartlynch.gumroad.com/l/SymbolBrowser&quot;&gt;&lt;em&gt;SymbolBrowser&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://prettytimezones.com/&quot;&gt;&lt;em&gt;PrettyTimezones&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://getjuicy.app/&quot;&gt;&lt;em&gt;Juicy&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;As the work on the licensing system is almost complete, I will focus on documentation and help articles to make it easier for new developers to get started.&lt;/p&gt;
&lt;p&gt;I would like to personally onboard the first developers to AmoreLicensing. If you consider Amore as your licensing system, reply to this email to get in touch. I would love to talk to you.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>With Amore №4</title>
    <link href="https://amore.computer/blog/4/" />
    <updated>2026-05-13T00:00:00Z</updated>
    <id>https://amore.computer/blog/4/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the fourth issue of »With Amore«, which I use to keep you in the loop about significant
project milestones and product updates.&lt;/p&gt;
&lt;p&gt;In March and April the focus was on the licensing &amp;amp; payments system, which got polished and is now publicly available. This is the biggest update since Amore was launched and marks the end of phase 2 outlined in the original essay about &lt;a href=&quot;https://lucas.love/blog/vision-macos-app-distribution&quot;&gt;My Vision for macOS App Distribution&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;licensing-and-payments&quot;&gt;Licensing &amp;amp; Payments&lt;/h3&gt;
&lt;p&gt;It was important to make the Amore licensing system approachable for indie hackers and hobbyists, which is why you can start to use the new Amore licensing system for free.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Only pay in months you earn over $1,000. Thereafter, it&#39;s 1.5% of your total monthly tracked revenue (MTR)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://amore.computer/licensing/&quot;&gt;&lt;strong&gt;Learn More&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Amore&#39;s licensing system includes unlimited access to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product checkout page&lt;/li&gt;
&lt;li&gt;License key generation&lt;/li&gt;
&lt;li&gt;Purchase/subscription success page with license key&lt;/li&gt;
&lt;li&gt;Email delivery of license key&lt;/li&gt;
&lt;li&gt;AmoreLicensing Swift SDK&lt;/li&gt;
&lt;li&gt;License activation and validation server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, all you need to do is integrate the &lt;a href=&quot;https://amore.computer/help/licensing-guide/#integrate-amoramore.computer&quot;&gt;AmoreLicensing SDK&lt;/a&gt; into your app and connect your Stripe account to Amore. If you prefer to learn from a working example, I put together &lt;a href=&quot;https://github.com/AmoreComputer/Pomodoro&quot;&gt;Pomodoro&lt;/a&gt;, a small SwiftUI app that shows the full Sparkle + licensing setup end-to-end.&lt;/p&gt;
&lt;h3 id=&quot;agent-skill&quot;&gt;Agent Skill&lt;/h3&gt;
&lt;p&gt;Everything you can do within the Amore app, you can do via the command line. This includes the new licensing system and product configuration.&lt;/p&gt;
&lt;p&gt;Because this is the only way some developers interact with Amore, we created a Claude Code plugin and agent skill you can use to interact with Amore with guidance from Amore&#39;s documentation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AmoreComputer/amore-skill&quot;&gt;&lt;strong&gt;Learn More&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;built-with-amore&quot;&gt;Built with Amore&lt;/h3&gt;
&lt;p&gt;Like last month, I want to thank early supporters and adopters of this project that helped shape Amore into the tool it is today. Here are some of the highlights of the ~50 new apps that started relying on Amore since March.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://slapmac.com&quot;&gt;&lt;em&gt;&lt;strong&gt;SlapMac&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This one has gone quite viral since the end of March. You may have already heard about it. Tonino, the developer, describes his app as »Slap your MacBook. It screams back. That&#39;s it. That&#39;s the app.«&lt;/p&gt;
&lt;p&gt;It&#39;s a fun little app that already got more than 90k downloads.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://markdownpreview.app&quot;&gt;&lt;em&gt;&lt;strong&gt;Markdown Preview&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of those apps you should install on every new Mac. It adds native support for Markdown previews to CMD + SPACE and includes a beautiful Markdown document reader. It&#39;s free and open-source. Go get it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://altumdream.com/doorry/&quot;&gt;&lt;em&gt;&lt;strong&gt;Doorry&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Your Mac has more open ports than you think, and most apps never close the ones they used. Doorry lives in the menu bar and shows what&#39;s actually listening, with a kill button that works.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pluk.sh&quot;&gt;&lt;em&gt;&lt;strong&gt;Pluk&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An AI-native macOS database client for Postgres, MySQL, SQLite, MongoDB &amp;amp; Convex. AI does the querying, you explore your data.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://coca.cammalleri.dev&quot;&gt;&lt;em&gt;&lt;strong&gt;Coca&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep your Mac from falling asleep with one click! Stay green in all your messengers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://mattspear.gumroad.com/l/peekapp&quot;&gt;&lt;em&gt;&lt;strong&gt;Peek&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a smaller project from my friend Matt. Peek lets you monitor your OpenAI API spending right in the menu bar, with a per-project breakdown in the dropdown. No browser tab, no dashboard – just the number you need.&lt;/p&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;As the work on the licensing system is complete, I will focus on documentation and help articles to make it easier for new developers to get started.&lt;/p&gt;
&lt;p&gt;Because Amore now hosts over 100 apps, I was wondering if it could be interesting to have an opt-in app store-like directory of apps.&lt;/p&gt;
&lt;p&gt;You choose some screenshots and a description and have a landing page you can share. It would include a download and optional payment link.&lt;/p&gt;
&lt;p&gt;Especially useful for small apps you would rather not build a website for.&lt;/p&gt;
&lt;p&gt;I would like to personally onboard the first developers to AmoreLicensing. If you consider Amore as your licensing system, reply to this email to get in touch. I would love to talk to you.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>With Amore №5</title>
    <link href="https://amore.computer/blog/5/" />
    <updated>2026-06-01T00:00:00Z</updated>
    <id>https://amore.computer/blog/5/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the fifth issue of »With Amore«, which I use to keep you in the loop about significant project milestones and updates.&lt;/p&gt;
&lt;p&gt;In May the focus was on improving the licensing &amp;amp; payments system for the first couple of developers that implemented it into their apps.&lt;/p&gt;
&lt;h3 id=&quot;amore-licensing&quot;&gt;Amore Licensing&lt;/h3&gt;
&lt;p&gt;One of the most significant changes this month is that Amore&#39;s licensing system does not require an Amore+ subscription anymore, making it absolutely free to get started.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Only pay in months you earn over $1,000. Thereafter, it&#39;s 1.5% of your total monthly tracked revenue&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://amore.computer/licensing/&quot;&gt;Learn More&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;app-and-cli&quot;&gt;App &amp;amp; CLI&lt;/h3&gt;
&lt;p&gt;The biggest change in the app and CLI last month was the license manager, making it possible to view and manage issued licenses for your apps. This makes it possible to see who your customers are and to help them with possible support requests. You can see all license data and can revoke licenses and device activations. Additionally, you can now issue licenses right from inside the app. Perfect for testing and giveaways.&lt;/p&gt;
&lt;p&gt;DMGs are now created faster and more reliably and don&#39;t open a new Finder window during the creation process.&lt;/p&gt;
&lt;h3 id=&quot;amorekit&quot;&gt;AmoreKit&lt;/h3&gt;
&lt;p&gt;It was a good month for &lt;a href=&quot;https://github.com/AmoreComputer/AmoreKit/releases&quot;&gt;AmoreKit&lt;/a&gt;. It got implemented in a couple of apps that, since then, shipped. Not only that, but it received its first open-source contribution, making it more powerful and flexible.&lt;/p&gt;
&lt;p&gt;Thanks to a new protocol, it&#39;s now possible to bring your own token storage. Licenses now expose the product that they are valid for. Additionally, licenses include the current state of a connected subscription, making it possible to detect if a license is still valid but cancelled, for example.&lt;/p&gt;
&lt;p&gt;Finally, AmoreKit gained a new &lt;a href=&quot;https://docs.amore.computer/documentation/amorestore&quot;&gt;&lt;code&gt;AmoreStore&lt;/code&gt;&lt;/a&gt; library that can be used to fetch products, their prices, and checkout URLs. This makes it possible to build paywalls that use the SDK as a single source of truth.&lt;/p&gt;
&lt;h3 id=&quot;homebrew&quot;&gt;Homebrew&lt;/h3&gt;
&lt;p&gt;Amore is now on Homebrew and can be installed via &lt;code&gt;brew install amore&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;In June I plan to improve the help docs and onboarding experience to make it easier for new developers to get started.&lt;/p&gt;
&lt;p&gt;Additionally, I am keen to look into an app directory and app landing pages. This will require some thinking and working closely with other developers, which I am looking forward to.&lt;/p&gt;
&lt;p&gt;I would like to personally onboard more developers to AmoreLicensing. If you consider Amore as your licensing system, reply to this email to get in touch. I would love to talk to you.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>With Amore №6</title>
    <link href="https://amore.computer/blog/6/" />
    <updated>2026-07-29T00:00:00Z</updated>
    <id>https://amore.computer/blog/6/</id>
    <content type="html">&lt;p&gt;Hi friends,&lt;/p&gt;
&lt;p&gt;This is the sixth issue of »With Amore«, which I use to keep you in the loop about significant project milestones and updates.&lt;/p&gt;
&lt;p&gt;In June and July, the focus was on improving Amore for teams and CI pipelines. Additionally, Amore&#39;s Swift SDK, AmoreKit, got numerous updates, like in-app purchases and cross-platform support.&lt;/p&gt;
&lt;h3 id=&quot;amore-for-teams&quot;&gt;Amore for Teams&lt;/h3&gt;
&lt;p&gt;Amore is used by multiple teams, like &lt;a href=&quot;https://monologue.to&quot;&gt;Monologue&lt;/a&gt; by Every. In the past, the Monologue team would ship new code, and the product owner had to go through the Amore CLI or Amore Mac app to manually release a new version. That person quickly became the bottleneck of the team. As commonly known in software engineering, short feedback loops are essential for fast shipping teams.&lt;/p&gt;
&lt;p&gt;To fix this, the Amore CLI got reworked to be fully usable in CI/CD environments. It now has the option for multiple release channels and supports Amore API keys so the whole Amore pipeline can be automated in the cloud.&lt;/p&gt;
&lt;p&gt;In addition, there&#39;s now a &lt;a href=&quot;https://amore.computer/help/github-actions/&quot;&gt;GitHub release action&lt;/a&gt; to make it easy to automate the release of any macOS project that&#39;s hosted on GitHub.&lt;/p&gt;
&lt;p&gt;It&#39;s highly customizable and includes instructions to automatically publish new releases on an alpha or beta channel after pushing to &lt;code&gt;main&lt;/code&gt; and to the stable channel after adding a release tag.&lt;/p&gt;
&lt;p&gt;It&#39;s already been used by multiple teams and individuals to release continuously.&lt;/p&gt;
&lt;h3 id=&quot;amorecheckout&quot;&gt;AmoreCheckout&lt;/h3&gt;
&lt;p&gt;In May, Amore added a fully functional licensing system (&lt;code&gt;AmoreLicensing&lt;/code&gt;) that&#39;s already used by a dozen apps. One drawback compared to the Mac App Store was that it used the traditional Mac licensing approach. The app would link to a pricing or checkout page, causing the user to leave the app to open a browser. The customer would then input their credit card information and get a licensing key via email, which they manually have to copy and paste back into the app to activate their license, causing support requests and lowering the conversion rate.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.amore.computer/documentation/amorecheckout&quot;&gt;AmoreCheckout&lt;/a&gt; is the latest addition to &lt;a href=&quot;https://github.com/AmoreComputer/AmoreKit&quot;&gt;AmoreKit&lt;/a&gt; which provides in-app purchases to every Mac app using &lt;code&gt;AmoreLicensing&lt;/code&gt;. It&#39;s an optional addition that enables a smooth checkout experience that happens completely inside your app. It&#39;s highly customizable and automatically activates the license after a successful purchase. You can see the whole experience in Amore&#39;s open-source demo project, &lt;a href=&quot;https://github.com/AmoreComputer/Pomodoro&quot;&gt;Pomodoro&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;amorekit&quot;&gt;AmoreKit&lt;/h3&gt;
&lt;p&gt;In addition to &lt;code&gt;AmoreCheckout&lt;/code&gt;, various parts of the Swift SDK, &lt;code&gt;AmoreKit&lt;/code&gt; received little updates. It now exposes more information about the user&#39;s license, like their email address, and makes all licensing data available synchronously at launch. It also got lighter by dropping the heavy &lt;code&gt;JWTKit&lt;/code&gt; dependency.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AmoreLicensing&lt;/code&gt; is now platform-independent and can be used on any platform Swift compiles for, not just macOS.&lt;/p&gt;
&lt;h3 id=&quot;onboarding-and-docs&quot;&gt;Onboarding &amp;amp; Docs&lt;/h3&gt;
&lt;p&gt;Like announced in the last post, the Mac app&#39;s onboarding experience improved to make it easier for new users to get started. Additionally, the &lt;a href=&quot;https://github.com/AmoreComputer/amore-skill&quot;&gt;agent skill&lt;/a&gt; got updated, and I added better agent instructions on &lt;a href=&quot;https://amore.computer&quot;&gt;amore.computer&lt;/a&gt; to make adding an app to Amore even easier.&lt;/p&gt;
&lt;h3 id=&quot;built-with-amore&quot;&gt;Built with Amore&lt;/h3&gt;
&lt;p&gt;Like in previous months, I want to thank early supporters and adopters of this project that helped shape Amore into the tool it is today.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://usebilly.app&quot;&gt;Billy&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Billy is a delightful invoice manager crafted with love for all the freelancers and small businesses that want their bureaucracy to be a little more organized and beautiful. It&#39;s one of the best new Mac apps I have seen this year.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://notch.two.supply&quot;&gt;Notch&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Notch is a delightful little app that makes it easy to add inspiring artifacts from your Mac to your &lt;a href=&quot;https://are.na&quot;&gt;Are.na&lt;/a&gt; spaces.&lt;/p&gt;
&lt;h3 id=&quot;whats-next&quot;&gt;What&#39;s Next?&lt;/h3&gt;
&lt;p&gt;For the rest of the summer, I plan to improve the help docs and create more videos about various advanced Amore features to make it easier for developers to get started and get the most out of Amore.&lt;/p&gt;
&lt;p&gt;Additionally, I am still keen to look into an app directory and app landing pages. This will require some thinking and working closely with other developers, which I am looking forward to.&lt;/p&gt;
&lt;p&gt;I would like to personally onboard more developers to AmoreLicensing. If you consider Amore as your licensing system, reply to this email to get in touch. I would love to talk to you.&lt;/p&gt;
&lt;p&gt;xoxo&lt;br&gt;
Lucas&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>In-App Purchases Without the Mac App Store</title>
    <link href="https://amore.computer/blog/in-app-purchases-without-the-mac-app-store/" />
    <updated>2026-08-05T00:00:00Z</updated>
    <id>https://amore.computer/blog/in-app-purchases-without-the-mac-app-store/</id>
    <content type="html">&lt;p&gt;If you ship your Mac app outside the App Store, you give up StoreKit. There is no &lt;code&gt;Product.purchase()&lt;/code&gt; waiting for you, no App Store sheet, no receipt validation. Apple&#39;s in-app purchase framework only works for apps distributed through Apple&#39;s store, and there is no independent-developer edition of it.&lt;/p&gt;
&lt;p&gt;That does not mean you have to send people to a browser to buy your app. It just means you have to assemble the flow yourself, and most people assemble a worse one than they need to.&lt;/p&gt;
&lt;h2 id=&quot;why-sell-outside-the-store-at-all&quot;&gt;Why sell outside the store at all&lt;/h2&gt;
&lt;p&gt;The Mac App Store takes 30% of every sale, or 15% if you qualify for the Small Business Program. That&#39;s the number everyone quotes, but the developers I talk to rarely leave over the money alone. They leave because App Review gates every bug fix, because sandboxing rules out what their app actually does, or because they want to know who their customers are.&lt;/p&gt;
&lt;p&gt;If you&#39;re weighing that trade-off, I wrote a longer piece on &lt;a href=&quot;https://amore.computer/blog/distribute-macos-app-outside-app-store/&quot;&gt;distributing a Mac app outside the App Store&lt;/a&gt;. This post is about the part that comes after you&#39;ve decided: getting paid.&lt;/p&gt;
&lt;h2 id=&quot;what-you-actually-have-to-build&quot;&gt;What you actually have to build&lt;/h2&gt;
&lt;p&gt;Selling a license yourself means owning four things that StoreKit handled for you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Payments.&lt;/strong&gt; Taking a card, handling subscriptions, refunds, and failed renewals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tax.&lt;/strong&gt; VAT and sales tax in every jurisdiction you sell into.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;License keys.&lt;/strong&gt; Issuing them, delivering them, and revoking them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activation and validation.&lt;/strong&gt; Deciding, on a Mac that might be offline, whether this copy is paid for.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Miss any one and you feel it. Skip tax and you eventually get a letter. Skip validation and your app shows up on a warez site with a keygen next to it.&lt;/p&gt;
&lt;h2 id=&quot;the-options-honestly&quot;&gt;The options, honestly&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;A merchant of record&lt;/strong&gt; like Paddle or Lemon Squeezy takes payments and tax off your plate entirely, in exchange for a percentage that typically lands in the mid single digits plus a fixed fee per transaction. Cheaper than the App Store, more expensive than Stripe, and you get a reseller sitting between you and your customer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gumroad and similar&lt;/strong&gt; are the fastest thing to set up and the most expensive to keep. Fine for a first hundred sales, painful at a thousand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stripe directly&lt;/strong&gt; is the cheapest per transaction by a wide margin, and it leaves you holding items 3 and 4 on that list, plus tax unless you switch on Stripe&#39;s managed payments, which makes Stripe itself the merchant of record.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rolling everything yourself&lt;/strong&gt; is a weekend to prototype and a permanent part-time job to run. Key servers get DDoSed, signing keys leak, grace periods turn out to matter the first time your server has an outage while a customer is on a plane.&lt;/p&gt;
&lt;p&gt;There&#39;s no universally right answer here. But notice that all four leave the same hole.&lt;/p&gt;
&lt;h2 id=&quot;the-hole-the-browser-handoff&quot;&gt;The hole: the browser handoff&lt;/h2&gt;
&lt;p&gt;Whatever you pick, the default integration looks like this. Your app shows a paywall with a Buy button. The button opens a browser. Your customer pays. A key arrives by email, eventually. They find the email, copy the key, switch back to your app, and paste it into a text field.&lt;/p&gt;
&lt;p&gt;Count the exits. Any tab they already have open, any notification, any point where the email is slow or lands in spam. Every one of those steps loses a fraction of the people who had already decided to pay you. The ones who make it through are also the ones who write to you when the email doesn&#39;t arrive, so the flow costs you support time on top of conversions.&lt;/p&gt;
&lt;p&gt;The App Store version of this is one sheet and a Touch ID prompt. That gap is the real cost of leaving the store, and it&#39;s much bigger than 30%.&lt;/p&gt;
&lt;h2 id=&quot;what-a-good-flow-looks-like-instead&quot;&gt;What a good flow looks like instead&lt;/h2&gt;
&lt;p&gt;You can close that gap without StoreKit. The pieces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Checkout inside the app.&lt;/strong&gt; An embedded web view presenting the payment page, so the purchase happens in a sheet rather than in Safari. Sandboxed apps need the outgoing-connections entitlement for this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic activation.&lt;/strong&gt; When payment clears, the app fetches the key and activates it itself. The customer never sees a license key unless they go looking for one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reactive unlocking.&lt;/strong&gt; Your gate is an observable license status, so the UI unlocks the moment activation succeeds instead of asking anyone to restart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interrupted purchase recovery.&lt;/strong&gt; This is the one people forget. If the app quits after the card is charged but before the license is stored, you need to resolve that session at next launch, and you need starting a new purchase to join the existing session rather than charging again. Get this wrong and you will double-charge someone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline validation.&lt;/strong&gt; A signed token checked locally, with a grace period, so an outage on your side doesn&#39;t lock out paying customers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A browser escape hatch.&lt;/strong&gt; Apple Pay requires the external browser, and some customers just prefer it. The app should activate the license either way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of that is exotic. It&#39;s just several days of work that has nothing to do with the app you actually wanted to build, and the failure modes only show up in production with real money attached.&lt;/p&gt;
&lt;h2 id=&quot;doing-it-with-amore&quot;&gt;Doing it with Amore&lt;/h2&gt;
&lt;p&gt;This is the flow &lt;a href=&quot;https://amore.computer/&quot;&gt;Amore&lt;/a&gt; ships. Licensing gives you keys, activation, offline validation, and a customer portal on top of your own Stripe account. &lt;a href=&quot;https://amore.computer/help/in-app-purchases/&quot;&gt;AmoreCheckout&lt;/a&gt; is the part that keeps the purchase inside your app.&lt;/p&gt;
&lt;p&gt;The integration is one modifier:&lt;/p&gt;
&lt;pre class=&quot;language-swift&quot;&gt;&lt;code class=&quot;language-swift&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AmoreCheckout&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; checkout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AmoreCheckout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;licensing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; licensing&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;language-swift&quot;&gt;&lt;code class=&quot;language-swift&quot;&gt;&lt;span class=&quot;token attribute atrule&quot;&gt;@State&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; buying&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Product&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;Button&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Buy Pro&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; buying &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; product &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;amoreCheckout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $buying&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; checkout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; checkout&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When payment completes, the key is fetched and activated on that Mac, and &lt;code&gt;licensing.status&lt;/code&gt; flips to &lt;code&gt;.valid&lt;/code&gt;, so anything you gate on it unlocks by itself. Recovery for an interrupted purchase is one call at launch:&lt;/p&gt;
&lt;pre class=&quot;language-swift&quot;&gt;&lt;code class=&quot;language-swift&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; checkout&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;recoverPendingPurchase&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Starting checkout guards the same pending session, so a customer who buys again before recovery runs joins the existing purchase instead of paying twice.&lt;/p&gt;
&lt;p&gt;The sheet is a thin layer over an observable object, so if you&#39;d rather build your own paywall, your own success screen, or run checkout in the external browser, you drive the same object and get the same activation. The &lt;a href=&quot;https://amore.computer/help/in-app-purchases/&quot;&gt;in-app purchases guide&lt;/a&gt; covers each of those, and &lt;a href=&quot;https://github.com/AmoreComputer/Pomodoro&quot;&gt;Pomodoro&lt;/a&gt; is an open-source Mac app with the whole thing wired up, updates included.&lt;/p&gt;
&lt;p&gt;On cost: payments run through your own Stripe account at Stripe&#39;s rates, and Amore&#39;s licensing adds 1.5% of monthly tracked revenue once you&#39;re over $1,000 in a month, nothing below that. If you want to be out of the tax business, Stripe Managed Payments makes Stripe the merchant of record and the integration doesn&#39;t change. The catch worth naming: this is Stripe-only, so if you&#39;re committed to a different reseller, it isn&#39;t for you.&lt;/p&gt;
&lt;h2 id=&quot;the-short-version&quot;&gt;The short version&lt;/h2&gt;
&lt;p&gt;StoreKit is off the table outside the App Store, but the thing StoreKit is actually good at, buying without leaving the app, is reproducible. Embedded checkout, automatic activation, and honest handling of interrupted purchases get you most of the way to a first-party feel while keeping your margin, your release schedule, and your customer list.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://amore.computer/help/in-app-purchases/&quot;&gt;Get started with in-app purchases&lt;/a&gt; or read the &lt;a href=&quot;https://amore.computer/help/licensing-guide/&quot;&gt;licensing guide&lt;/a&gt; first if you haven&#39;t set up products yet.&lt;/p&gt;
</content>
  </entry>
</feed>