8:39
16 new notes
preston preston@primal.net · 5m

Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀

1,000 Welcome to Nostr!
pablof7z f7z.io · 9m
100 LFG!
jack jack@primal.net · 8m

Big day today. One of many to come.

Lyn Alden lyn@primal.net · 12m

Unfortunately, the days of using cash for in-person purchases are numbered. It won't be long before non-trivial numbers of e-stores require KYC. Augmented privacy networks like Nostr and Lightning give people a way to transact and communicate behind a pseudonym to do business in a distant store.

ODELL odell@primal.net · 14m

A reminder: self-custody is non-negotiable. Not your keys, not your coins. Not your relay, not your speech.

500 amen
LØPP lopp@primal.net · 21m

Reminder: your seed phrase is a bearer instrument. Treat it like one.

gigi dergigi.com · 34m

The thing about Nostr is that it doesn't need to win. It just needs to exist. The fact that you can't stop it is the entire point.

2,100 this
NVK nvk@primal.net · 47m

Hardware wallets are not optional. If you have more sats than you can afford to lose on a phone, you need cold storage. End of conversation.

JeffG · 18 hours ago

The Technology Adoption Curve for Builders

7 min read 2 comments
HODL · 3 days ago

Nostr will be worth 90-days in US$1,000,000

5 min read 12 comments
LOPP · 6 days ago

How To Create A Nostr Quotes Bot

10 min read 8 comments
Gigi · 8 days ago

Purple Text Orange Highlights

6 min read 3 comments
Lyn Alden · 11 days ago

The Fiscal Endgame and Why Hard Money Wins

18 min read 47 comments
Calle · 13 days ago

Cashu in 2026: What Ecash Got Right About Privacy

9 min read 14 comments
pablof7z · 15 days ago

NDK Patterns: Building Nostr Clients That Don't Suck

12 min read 9 comments
ODELL · 17 days ago

Self-Custody is Not a Spectrum

4 min read 22 comments
Preston · 19 days ago

Why I Stopped Caring About Block Size

8 min read 31 comments
NVK · 22 days ago

A Field Guide to Hardware Wallet Threat Models

14 min read 18 comments
LIVE
RABBIT HOLE REC... is live 18m
Bitcoin All Time High, Where To Next? | RABBIT HOLE RECAP #145 Live Started 18m ago ▶ 112
preston replied to your note 33m

looking great, ship it

+45
Princ Filip liked your note 1h

Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers.

+10
ODELL bookmarked your note 2h

This is my post that is getting all the attention. Think of the zaps, likes, replies and re-posts.

+2
jack highlighted your article 3h

Social interactions benefit from the address book represented by the Nostr

Users

jack
ODELL
HODL
gigi
Paul Keati...
Lyn Alden
PabloF7z
NVK
Erik Casen
TK
preston
Calle

Follow Packs

Freedom Tech Signal ODELL
Bitcoin Builders JeffG
today
yesterday
Latest Latest notes by your follows
Latest with Replies Latest notes and replies by your follows
Latest Videos Primal search results
It's Funny Because It's True and It's N... Primal search results
Trending Images Primal search results
Trending 1h Global trending notes from the last hour
Trending 24h Global trending notes from the last 24 hours
Trending 7d Global trending notes from the past 7 days
Nostr Reads Latest reads from your network
All reads Latest global reads
Bitcoin Reads Bitcoin Topic Reads from Primal
Nostr Reads Nostr Topic Reads from Primal
Philosophy Reads Philosophy Topic Reads from Primal
All Notifications Based on your notification settings
Zaps Show incoming zaps
Replies Show replies in your threads
Mentions Show mentions of you or your content
Reposts Show reposts of your content
Explore Find people, feeds, media
Feed Gallery Browse feed gallery
Follow Packs Curated lists of users to follow
Zaps Top zaps on Nostr today
Media Top images and videos on Nostr today
Spark Wallet miljan@primal.net
172,650 sats
Spark Wallet preston@primal.net
540,000 sats
NWC: Alby Hub alby.miljan.dev
18,420 sats

Account

Options and settings

miljan

miljan@primal.net

135 Following 345 Followers

Thread
preston preston@primal.net

Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀

3,001 Welcome to Nostr! 1,500 Welcome to Nostr! 500
Monday, April 8, 2024 · 10:29 AM
152 Replies 52 Zaps 84 Likes 6 Reposts
24 2,444 8 1
LØPP lopp@lopp.net · 18m ago

Welcome aboard. This place rewards patience — the relays you pick now will shape what your feed feels like a year from now.

pablof7z f7z.io · 32m ago

Welcome! Don't be shy about pruning your follow list aggressively. The signal-to-noise ratio is whatever you make it.

500 truth
jack jack@primal.net · 41m ago

Glad to have you. The early days of any open protocol are the most interesting ones.

ODELL odell@primal.net · 1h ago

Big +1 for the team. Primal has been doing real work on the client side while everyone else is still arguing about NIPs.

gigi dergigi.com · 2h ago

Welcome. Pro tip: zap the people whose posts genuinely shifted something for you. It's the closest thing this protocol has to a thank-you note.

2,100 this
Lyn Alden lyn@primal.net · 3h ago

Glad you're here. The interesting conversation has been migrating off legacy platforms for a while — Nostr is where most of it has landed.

NVK nvk@coldcard.com · 4h ago

Welcome. Get a key backup strategy in place before you post anything you'd miss.

JeffG jeffg@primal.net

The Technology Adoption Curve for Builders

May 12, 2026 · 7 min read · 18 hours ago

Most builders read Rogers and walk away with the wrong lesson. The curve isn't a roadmap — it's a description of who you can credibly reach with the product you can credibly ship. This piece is about how to choose your wedge.

100,000 🎉🚀🔥

The canonical adoption curve was first described by Everett Rogers — a 1962 framing that we keep mistaking for a description and treating as prescription.

For builders, the curve is rarely the question. The question is which segment you can credibly reach with the surface you can credibly ship.

A lot of teams skip this step entirely. They build for "everyone" and then act surprised when the product feels like it was built for nobody. The curve doesn't flatten because adoption is hard. It flattens because each segment requires a different product, not a different marketing campaign.

Adoption is never about the technology itself.

Innovators (2.5%)

These are the people who try the thing before it works. They are also the people who tell you, with conviction, that it works.

Innovators are valuable not because they're representative — they aren't — but because they're willing to absorb the cost of a half-built product in exchange for the option value of being early. Treat them as collaborators, not customers. They'll write your changelog for you.

The trap is mistaking innovator enthusiasm for early-majority readiness. Innovators love the thing because it's broken. The early majority will reject the thing for exactly the same reason.

Early Adopters (13.5%)

Early adopters are pragmatists who've been burned. They want the thing to work, but they've seen enough vapor to be suspicious of anyone selling a vision before a product. They will pay for the version that ships, not the version on the roadmap.

The Chasm

Geoffrey Moore's 1991 addendum to Rogers — Crossing the Chasm — describes the gap between early adopters and the early majority as the single most under-priced risk in tech. Most products die in this gap. Not because they're bad, but because the thing that worked for early adopters doesn't work for the next cohort.

The way through is unromantic: you pick one beachhead segment, dominate it completely, and use that as a reference for the next. There is no "broad market launch." There is a series of beachheads, ordered correctly.

#adoption#builders#go-to-market#product strategy#rogers
2 540 18 1

Comments

ODELL odell@primal.net · 1h

Nailed it. The chasm is the only thing that matters.

pablof7z f7z.io · 2h

The "beachhead segment" framing is underrated. Most teams I see try to build a Swiss-army-knife product and end up with a thing that nobody loves.

Lyn Alden lyn@primal.net · 3h

The Bitcoin parallel is striking. The original adopters wanted a peer-to-peer cash system that mostly didn't work. The early majority wanted a store of value that mostly did. Two different products, same network.

5,000 this is the take
gigi dergigi.com · 5h

I'd add: the order of the beachheads matters more than the choice of any single beachhead. Get the sequencing wrong and you spend years rebuilding the product for a market that never showed up.

Messages All conversations
David King 5s

Just followed up on email. Sorry I missed yesterday. Hopefully we can still meet

PABLOF7z 2023-05-18
preston 5d

Loving the new Primal build 👍

ODELL 5d

kinda hilarious that uncle Jim has been a known term, I made it up drunk on rhr

Max 5d

These look great Miljan. Super fast!

TK 5d

Latest Android release is great! pull down to refresh and I can mostly

ROCKSTAR 5d

Ovo vidis po objavama, samo jurim

yegorpetrov 2023-05-12
preston preston@primal.net
hey man!
how close is NDK to prime time?
12 minutes ago
NDK is functional, not feature-complete by any means, but interests is starting to pick up; kieran is looking into integrating it into snort, verbiricha into habla.news
9 minutes ago
that's excellent news
5 minutes ago
Love to see everyone aligned like this
9 minutes ago

VERSION 3.5.9

Sessions disconnected.

PrimalWeb

Last Session: May 17, 2026 12:05 PM

Auto start session

PrimalWeb

Started on: May 17, 2026 12:05 PM

Read Public Key
Encrypt
Decrypt
User Metadata
Publish Note
Follows
Encrypted Direct M...
Event Deletion Req...
Repost
Reaction
Direct Message

PrimalWeb

Started on: May 17, 2026 12:05 PM

Application-specific Data

May 17, 2026 12:05:59 PM

Signed

ID:
8d58c44be957...ee111af9acf6
Pubkey:
c0f582a48863...d9b8ae6f8890
Event kind:
30078 - Application-specific Data
Created at:
1779012358
Tags:
"d", "Primal-Web App", "set_app_subs_..."
Content:
{"subkey":"user-nwc","settings":{"nwcList":[["Primal Remote Wallet","2pBsmGGASJVVn1ugZF9qSEDpuBDJ/mfG+lUyJk5uC1JqsJ/Nux5DjyiPag8hA3A61fjQuL2j1rc5KSM3daGIjtVizfjURLqIPkBIhoBG+WkrBa72Z5CTgZIz0NTs5zlAwFLFOhXCDUkkq3s1v+IoLpp/T5bnA56WpHqGin1skpN0ib20Bmm1Ub4jc91hj6JVPGgeOzXiZMryXHtNkaz/KKkh+wfh3vSnzPDgZQA3+cjZicwtj+zYjU0...
Send
Recent
Point at a QR to send
Lightning invoice, address, or Bitcoin address
Sending To
Recipient address@primal.net
0 sats
Add a message
Sending…

Sending 0 sats
to recipient

Success

Success! 0 sats sent to
recipient

Receive via Lightning
Your Lightning Address: miljan@primal.net
Copied to clipboard
Payment Received

Received 2,100 sats
from bob

Zap Received
420 sats
ODELL odell@primal.net

Great having you at Bitcoin Park last week. Looking forward to next time!

Note Met ODELL at Bitcoin Park
DateMay 17, 2026, 2:32 PM
StatusPaid
Transaction TypeNostr Zap
Current USD value$0.28
Original USD value$0.28
Transaction Fee0 sats
Invoice lncpq1m…p5dl3jh0dkj0
preston preston@primal.net · 5m

Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀

22 2,475 56 14
Wallet

Wallet Balance: 172,650 sats

This wallet has not been backed up. It is important to back up your wallet so you don't lose access to your funds.

LN address miljan@primal.net

You can change your Nostr Lightning Address (for receiving zaps) in your profile settings.

Open the wallet when Primal starts

You can choose to hide small transactions to avoid spam in your transaction list

Write down your wallet recovery phrase so you don't lose access to your funds

If you have an existing wallet that you wish to use with your Nostr account, you can restore it here using your 12-24 word recovery phrase.

Download your entire wallet transaction history in CSV format

Alternatively you can connect to an external lightning wallet via Nostr Wallet Connect

App Daily Budget Revoke
Olas 10,000 sats
Amethyst 100,000 sats

You can connect your Primal Wallet to other Nostr apps via Nostr Wallet Connect to enable zapping and payments.

To keep running reliably it's necessary to run wallet service in the background.

Download logs history for all connected apps in CSV format

Backup Wallet

We are going to display your wallet recovery phrase on the next screen.

IMPORTANT: Primal does not have access to the funds in your wallet. You have sole custody of your wallet via the recovery phrase. If you lose your recovery phrase, Primal will not be able to restore your funds.

embrace 1
open 2
universe 3
acquire 4
entire 5
section 6
direct 7
loud 8
acoustic 9
erupt 10
brave 11
champion 12

This is your wallet recovery phrase. To backup your wallet, simply write these words down in the correct order.

The words are not case sensitive and they are separated by spaces. We will ask you to verify on the next screen.

Your wallet has been backed up. You now hold the keys to your bitcoin! Please confirm the three points below.

I understand that:

  • My funds are not held by Primal
  • If my device gets lost or stolen, the only way to recover my funds is via the wallet recovery phrase
  • It is my sole responsibility to keep my recovery phrase safe
Restore Existing Wallet

We support recovery of any existing bitcoin wallet on the Spark network. Recovery phrases are 12 to 24 words long.

Restoring your wallet...

Wallet Upgrade
  • It will take less than a minute
  • We'll transfer your wallet balance
  • We'll copy your transaction history
  • You'll keep your lightning address

Please keep Primal open
until the upgrade process is done.

Questions? Check out our FAQs.

Upgrading...

Creating your new Spark wallet...

Please keep Primal open
until the upgrade process is done.

Success

Wallet upgraded!

Primal Android

Nostr social client and Bitcoin wallet on Android. The cross-platform libraries now shared with the iOS app. Three years, active.

3 years, activeAndroid · iOSBitcoin · Nostr
Play one of

Tap the phone any time to pause and explore.

“The option to highlight text in nostr-native long-form articles existed in Primal for quite a while. It’s one of the few clients who implemented the spec. Boris does the same & implements the same standard. The superpower of nostr is its interoperability, which is why you can switch between clients as you wish.”
Gigi · 2025-11-02
“Primal currently offers the best out of the box social media platform on nostr, and by that I mean it integrates most of what you need from the nostr protocol into one sleek package that is easy to just install and use with little to no additional configuration needed.”
corndalorian · 2025-04-13
“The new Primal interface is so smooth and addictive. I forgot i’m on NOSTR while scrolling, which wasn’t the case beforehand.”
SatoshiSan · 2026-03-19
“Loving the new Primal experience across mobile and desktop. I can see this onboarding a lot more normies - this is the way.”
Bfgreen · 2026-03-17

Challenge

Primal needed a Nostr social client for Android that could stand next to mainstream social apps on speed and polish, not read as a protocol demo. Nostr itself was young, so the app had to be built greenfield and keep pace as the protocol moved under it. We came in at kickoff, and have kept it production-grade through every release since. The engagement runs three years and counting.


What we built

What began as the Android client has grown, over three years, into the core of Primal’s mobile stack: the social app, a long-form reading experience, live streaming and media playback, two generations of Bitcoin wallet, a remote signer, and the cross-platform libraries underneath them.

Social client. The social experience covers a real-time feed, search, media, direct messages, profiles, and threaded conversations. The feed is not one fixed format. Several feed types are on offer, and a feed heavy with images and video renders in a more visual layout built around the media rather than a plain text timeline. Posts can also be polls, and a vote can be cast as a plain tap or as a zap, sending real sats to the option a person backs.

Reads. Reads is the long-form half of Primal: a dedicated reading experience with its own article-focused feeds, separate from the social timeline. It renders Markdown cleanly and supports in-text highlighting that few other Nostr clients implement. Comments on an article are themselves Nostr notes, so the discussion under a piece is native to the protocol rather than a bolted-on system.

Live and media. The app handles more than images and video in the feed. Live streams are watchable in-app, and an audio link posted to Nostr gets a real player rather than a dead link. Playback integrates with the operating system: picture-in-picture for video, plus background video and audio, so a stream or a track keeps running while the user moves elsewhere in the app or leaves it.

Bitcoin wallet. Primal has shipped two wallets under this engagement. The first was custodial and ran in production for more than two years. We then replaced it with a non-custodial, Spark-based Bitcoin and Lightning wallet, and moved the existing userbase onto it in a single tap.

Signer. The signer lets a user sign Nostr events without handing their private key to every app they touch. It covers NIP-46 remote signing, where a Nostr web app delegates signing to the phone, and NIP-55 local signing on-device, both behind a single session model. It ships on iOS and Android.

Cross-platform libraries. Beneath the wallet and the signer sit cross-platform libraries: the shared code each was extracted into. They are deliverables in their own right, with their own consumers. Primal’s iOS app is built directly on these libraries, and we work daily with the developers integrating them.


Technical decisions

Several decisions shaped the codebase more than the rest.

Local-first data. Early on we proposed a local database on every device as the single source of truth, even though Primal already ran a caching server that would have done the job. The team weighed the trade-off and agreed. Three years on, the app feels the same on fiber and on weak connections.

Multi-platform extraction. The split goes deeper than a shared module or two. Primal’s entire business logic and data layer live in shared multiplatform code, outside the Android project, leaving Android with just the UI and its screen logic. Two parts of that shared code, the wallet and the signer, are packaged as standalone libraries and run in production on iOS. The rest could run there too, but consuming it on iOS needs refactoring we have chosen not to take on yet.

Multi-account and multi-wallet by design. A person can hold several Nostr accounts in the app, and several wallets, and move between them instantly. That is an architectural choice made at the data layer: an account and a wallet are each treated as a first-class, swappable context, not a single default with extra ones bolted on later. Switching between them is a state change measured in milliseconds.

Standards-first. Everything is built on the open Nostr protocol. Across the whole app, it follows the published standards rather than proprietary variants. That keeps Primal interoperable: a user’s identity, content, and connections are not locked to one client but move with them across the Nostr ecosystem.


Outcome

The engagement produced two outcomes: a production app, and the cross-platform libraries underneath it.

The app. Primal is among the most widely used Nostr clients, live in production across Android and iOS. Primal 3.5 shipped weeks ahead of the other platforms, with no client-reported issues in its first weeks. When the non-custodial wallet launched, roughly 14,000 users migrated within two weeks, moving hundreds of millions of sats with zero technical defects in production.

The libraries. The wallet and the signer each became a standalone cross-platform library, now running in production on iOS as well, and reusable well beyond this app. Each has its own case study:


← All work

Have an app that needs building?

30-minute call with the founder. No sales script. Just a real conversation.
Imagine you and us. So happy, together. 🎵

Book a Discovery Call