Decision guide · 2026 · 07 · 16 · Architecture

When to use napkin — and when not to

Most "should I use X" pages are sales pages. This one isn't: napkin is young, its community is tiny, and its platform floor is high. Here is the honest decision tree, including the branches that end somewhere else.

Use napkin when…

  • You're starting a new app on Swift 6 and can target iOS 26 / macOS 26.
  • Your app is flow-shaped: login trees, tab hierarchies, multi-step features — structure that wants per-screen units with owned lifecycles, not one composed state graph.
  • You want the RIBs pattern without the RIBs stack: Router-Interactor-Builder and listener trees, but no RxSwift and no runtime leak detector — actors and compile-time isolation instead. (The full comparison.)
  • You want business logic structurally off the main actor. In napkin an interactor is a final actor; keeping heavy work off the UI thread is the design, not a discipline.
  • You want a near-zero dependency budget. napkin's only package dependency is the documentation plugin.

Don't use napkin when…

  • You must support anything below iOS 26. Hard stop, no back-port. RIBs-iOS runs on iOS 15+, TCA on iOS 16+.
  • You have a working RIBs or TCA codebase. Both are actively maintained (RIBs-iOS shipped 1.1.0 on July 12, 2026; TCA has cut seven releases in 2026). Migration for its own sake buys you nothing.
  • Your complexity is state, not flows. If the hard part of your app is composing, persisting, and exhaustively testing state transitions, TCA is built for exactly that.
  • You need a big ecosystem or a full tooling suite. napkin ships Xcode file templates and an install script, but not RIBs' broader IDE tooling — static analysis, runtime integrations — and TCA has ~14.8k GitHub stars and a deep library of learning material.
  • You're building a simple app. TCA's maintainers admit their framework doesn't really shine for simple "reader" apps, and the same goes for napkin: a mostly-display app doesn't need an architecture framework. Plain SwiftUI is a great answer, and you can adopt structure later when the pain is real.
  • Betting on a young project is unacceptable. napkin is at v2.1.5 with two GitHub stars (as of July 2026). The API is small and hasn't churned since 2.0, but nobody should call it battle-tested.

The short version

One-line routing. Facts as of July 16, 2026.
Your situationHonest answer
New Swift 6 app, flow-shaped, iOS 26+napkin
State-shaped complexity, exhaustive testsTCA
Existing RIBs or TCA codebase that worksStay put (why)
Needs iOS 15–25RIBs (15+) or TCA (16+)
Simple reader/display appPlain SwiftUI

Still unsure? The Getting Started guide plus the runnable example app take about an evening — the cheapest way to find out if the shape fits your head.

Related: napkin vs RIBs · napkin vs TCA · napkin vs VIPER · FAQ