<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HearMe Editorial</title>
    <description>The latest articles on DEV Community by HearMe Editorial (@hearme).</description>
    <link>https://dev.to/hearme</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4137831%2F2d600dee-d219-44b3-9910-f9320fd31d5f.png</url>
      <title>DEV Community: HearMe Editorial</title>
      <link>https://dev.to/hearme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hearme"/>
    <language>en</language>
    <item>
      <title>A no-camera Omegle alternative: what surprised us building it</title>
      <dc:creator>HearMe Editorial</dc:creator>
      <pubDate>Sat, 17 Oct 2026 13:03:01 +0000</pubDate>
      <link>https://dev.to/hearme/a-no-camera-omegle-alternative-what-surprised-us-building-it-501m</link>
      <guid>https://dev.to/hearme/a-no-camera-omegle-alternative-what-surprised-us-building-it-501m</guid>
      <description>&lt;p&gt;When Omegle shut down in November 2023, a lot of people lost the one place they used to talk to strangers. Most of the replacements went the same way: video first, camera on.&lt;/p&gt;

&lt;p&gt;We wanted the opposite. So we built &lt;a href="https://hearme.chat" rel="noopener noreferrer"&gt;HearMe&lt;/a&gt;: anonymous 1:1 voice or text chat with strangers, no camera at all, adults only.&lt;/p&gt;

&lt;p&gt;This post is about the decisions that mattered most to us, in case you're building anything real-time or social.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Removing video changed who shows up
&lt;/h2&gt;

&lt;p&gt;No camera means people come to &lt;em&gt;talk&lt;/em&gt;: to vent, practise English, or kill boredom at 3 a.m. Voice keeps the human feel without the pressure of being seen. Text is still there for people who aren't ready to speak.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Matching speed is the product
&lt;/h2&gt;

&lt;p&gt;In a random-chat app, the waiting screen is where you lose people. Our own numbers showed that people who give up on a text search usually do it in under 20 seconds. So a lot of the work went into fast matching (the median text wait is now under a second at most hours) and into showing something useful while you wait, like a preview of the group room that's active right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Reconnects matter more than features
&lt;/h2&gt;

&lt;p&gt;Mobile networks drop and tabs get backgrounded. Early on, a dropped connection ended the chat for both people. Now there's a grace period: if one side drops, the other sees "Reconnecting…", their unsent message stays in the box, and when the person comes back they rejoin the same chat. Most rejoins turn out to be people simply switching back to the tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Safety has to be in the core, not added later
&lt;/h2&gt;

&lt;p&gt;Anonymous plus strangers is a hard combination. A few rules we treat as non-negotiable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adults only, with an age gate and a public child-safety page&lt;/li&gt;
&lt;li&gt;Separate, clearly labelled Report and Block in every chat&lt;/li&gt;
&lt;li&gt;Normal 1:1 chats are deleted after 24 hours, but reported conversations are kept for moderators&lt;/li&gt;
&lt;li&gt;No usernames, links or friend lists shown to a stranger in a 1:1 chat, so nobody gets pulled off-platform&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next.js for the web app&lt;/li&gt;
&lt;li&gt;A separate Node.js real-time server for matching and chat&lt;/li&gt;
&lt;li&gt;WebRTC for voice, with a TURN server for people on strict networks&lt;/li&gt;
&lt;li&gt;Postgres with Prisma&lt;/li&gt;
&lt;li&gt;An Expo app for Android (in testing on Google Play right now)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing exotic. The hard part is state: who is waiting, who is matched, who just dropped, who blocked whom. Before every deploy of the real-time server we run end-to-end scripts that open two sessions and check matching, reconnects, blocks and bans.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'd do differently
&lt;/h2&gt;

&lt;p&gt;We'd measure retention from day one. Getting someone to try a chat is easy. Getting them to come back tomorrow is the real problem, and it's what we're working on now.&lt;/p&gt;

&lt;p&gt;If you want to try it: &lt;a href="https://hearme.chat" rel="noopener noreferrer"&gt;hearme.chat&lt;/a&gt;. Feedback is welcome, especially from anyone who has built real-time matching.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webrtc</category>
      <category>nextjs</category>
      <category>showdev</category>
    </item>
    <item>
      <title>We built a stranger chat with no video. Here's what our first nine days actually looked like.</title>
      <dc:creator>HearMe Editorial</dc:creator>
      <pubDate>Tue, 22 Sep 2026 15:16:01 +0000</pubDate>
      <link>https://dev.to/hearme/we-built-a-stranger-chat-with-no-video-heres-what-our-first-nine-days-actually-looked-like-a12</link>
      <guid>https://dev.to/hearme/we-built-a-stranger-chat-with-no-video-heres-what-our-first-nine-days-actually-looked-like-a12</guid>
      <description>&lt;p&gt;Nine days ago we put HearMe live: an anonymous chat where you get matched with a stranger and talk by voice or by text. Not by video. There is no video mode, and there will never be one.&lt;/p&gt;

&lt;p&gt;This is the honest write-up of what happened next. The short version: almost nothing, and one bug that hid even that from us.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built, and why no video
&lt;/h2&gt;

&lt;p&gt;Random video chat is a solved product with an unsolved problem: the camera is where the abuse lives. Omegle shut down in 2023 under the weight of it, and in February 2026 Apple revised its guidelines to make clear that "random or anonymous chat" apps fall under the user-generated-content rules that let them be pulled without notice. Every "Omegle alternative" list we could find is still ten video sites in a row.&lt;/p&gt;

&lt;p&gt;So we took the camera out entirely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice or text only.&lt;/strong&gt; A call negotiates an audio track and nothing else. The site never asks for camera permission because there is no code path that would use it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No sign-up to start.&lt;/strong&gt; Pick up to five interests, tap voice or text, get matched. A free account only adds friends, DMs and block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;India first.&lt;/strong&gt; The interface ships in eight languages including Hindi, and the voice path uses a self-hosted TURN relay tuned for Indian mobile data, because that is where most of our future users are — on a phone with a flaky uplink.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest presence.&lt;/strong&gt; The home page says "Quiet now" when nobody is waiting. No seeded users, no bots, no made-up "12,483 online".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last decision is the one this post is really about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers, unrounded
&lt;/h2&gt;

&lt;p&gt;As of 21 September 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Days live:&lt;/strong&gt; 9 (13–21 September).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessions from outside our own devices and test runs that pressed Start:&lt;/strong&gt; 6. Six people. They made 13 attempts between them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stranger-to-stranger matches:&lt;/strong&gt; 0. Every completed conversation in nine days was either our own devices talking to each other, or our end-to-end tests talking to each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revenue:&lt;/strong&gt; $0. Premium subscribers: 0.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editorial links pointing at us:&lt;/strong&gt; 0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of those six people arrived, pressed Start, waited alone, and left. That is the cold-start problem in its purest form: a matching product with nobody to match.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug that hid the numbers
&lt;/h2&gt;

&lt;p&gt;For eight of those nine days our matching server was writing to the wrong database.&lt;/p&gt;

&lt;p&gt;HearMe shares a server with another project of ours. The socket server loaded its environment file with a path relative to the working directory, not to the file. The process manager started it one directory up from where we expected, so it read the other project's &lt;code&gt;.env&lt;/code&gt; — and its &lt;code&gt;DATABASE_URL&lt;/code&gt; — and every match record and guest row it created went into the other database. Nothing visibly broke, because the two schemas were identical at the time.&lt;/p&gt;

&lt;p&gt;It surfaced only when we added a column on our side. The next connect blew up on a ban check, matching died for two and a half hours across our first evening "voice hour", and the stack trace pointed at a database we had not touched in weeks.&lt;/p&gt;

&lt;p&gt;The fixes were small and boring: resolve the env path from &lt;code&gt;__dirname&lt;/code&gt;; pin the process manager's working directory; log the database name at boot and refuse to start on anything but the two names we allow. Then we reconciled: backed up both sides, moved the misplaced rows across with their original timestamps, and deleted ours from the other database.&lt;/p&gt;

&lt;p&gt;Reconciling was the humbling part. Our internal report had said "13 conversations in week one". The corrected count was 74 rows — and when we attributed each one by IP, the organic number went down, to zero. We had been about to publish a match rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we are doing about the empty room
&lt;/h2&gt;

&lt;p&gt;Not faking it. The temptation is obvious: seed a few "users", show a comforting online count, let people believe someone is about to answer. Several sites we tested show counts we couldn't verify. We think that is why people leave those sites feeling worse than when they arrived, and we are not going to build that.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Say the truth on the page.&lt;/strong&gt; "Quiet now" stays. If you are the only person waiting, the page tells you so and offers something else to do instead of a spinner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make waiting worth something.&lt;/strong&gt; You can leave a 15-second voice note for the next person who shows up, ask to be rung when someone real arrives, or send a friend a private link that drops them straight into a call with you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concentrate the few people we have.&lt;/strong&gt; We are pushing everything toward one evening window in Indian time, so that six people spread over nine days become six people in the same hour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write this up honestly&lt;/strong&gt; and see who finds it interesting enough to try. If you want to be one of the first stranger-to-stranger matches, &lt;a href="https://hearme.chat/text-chat" rel="noopener noreferrer"&gt;HearMe text chat&lt;/a&gt; needs nothing at all and &lt;a href="https://hearme.chat/voice-chat" rel="noopener noreferrer"&gt;HearMe voice chat&lt;/a&gt; asks for your microphone only when you tap Call.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will post the next set of numbers when there is something to count. If it is still zero, we will say zero.&lt;/p&gt;

&lt;p&gt;— HearMe Editorial · &lt;a href="https://hearme.chat" rel="noopener noreferrer"&gt;https://hearme.chat&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webrtc</category>
      <category>startup</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
