Inspiration
Wha## Inspiration
Power users live in their clipboard. Email templates, standup replies, API snippets, that one link you paste five times a week — they end up scattered across Notes, Messages drafts, and random .txt files. I wanted the muscle memory of "copy → paste" without the archaeology of finding things. The constraint I set myself: saving must take under 5 seconds, retrieval under 2 taps. Everything else followed from that.
What it does
SnipStack is a single inbox for reusable snippets:
- Save anything reusable — text templates, links, images, files — with a title and loose tags. Four kinds, one place.
- Get it back instantly — live search across titles, content, and tags; pinned items and most-used snippets surface first.
- Two-tap retrieval — open a snippet, hit "Copy to clipboard", get haptic confirmation. A use-counter quietly shows which snippets earn their keep.
- Free vs Pro — the free plan holds 15 snippets (enough to feel the workflow). SnipStack Pro (monthly/yearly, powered by RevenueCat) removes the limit.
How I built it
- Expo + React Native (TypeScript) for a single iOS/Android codebase.
- Zustand + AsyncStorage for local-first, offline-by-default persistence — no account, no sync latency, nothing between you and your snippets.
- RevenueCat
react-native-purchasesdrives the entire paywall: aproentitlement, a default Offering with monthly + yearly packages, restore purchases, and real-time entitlement updates viaaddCustomerInfoUpdateListener. Gating happens exactly once — at the moment a free user tries to save snippet #16 — where the value is most tangible. - React Navigation (native stack + bottom tabs), expo-haptics for tactile copy confirmation, and a fully custom light/dark theme.
Challenges I ran into
- Where to put the paywall. Hard-gating on app open converts worse and feels hostile. Gating at the 15-snippet limit means users hit the wall only after the app has proven its value — a monetization lesson RevenueCat's own content preaches.
- Speed as a feature. Search had to feel instant, so filtering runs in-memory over a denormalized store instead of hitting storage. Every interaction was budgeted: save ≤ 5s, retrieve ≤ 2 taps.
- RevenueCat in Expo. The SDK needs a dev build (no Expo Go), so the repo includes a
DEMO_UNLOCKflag to iterate on paywall UI without a store connection.
Accomplishments I'm proud of
- The entire save flow really is under 5 seconds — I timed it.
- A clean, honest freemium line: the free tier is genuinely useful, and Pro is a clear upgrade rather than a ransom.
- Shipped as an open-source student project while juggling classes.
What I learned
- How RevenueCat abstracts StoreKit / Play Billing into one entitlement model, and how much faster that makes iterating on monetization.
- That "fast" is a design decision you enforce at every layer, not a performance pass at the end.
What's next for SnipStack
- iOS Share Sheet + Action Extension (save from any app without opening SnipStack)
- Home Screen / Lock Screen widgets with your top pinned snippets
- Global hotkey companion for iPad keyboard users
- Optional end-to-end-encrypted sync t it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for SnipStack
Built With
- expo.io
- react-native
- react-navigation
- revenuecat
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.