DEV Community

LeoJulieta
LeoJulieta

Posted on

Swipe‑Free Dating: BLE & UWB Wearables That Match You Instantly

Swipe‑Free Love: How BLE & UWB Wearables Turn Rings & Bracelets Into Real‑Time Matchmakers


Introduction

Imagine a ring that buzzes the moment a compatible stranger is within arm’s length—no swiping, no endless profile scrolling. That’s the promise of BLE/UWB‑driven proximity dating, a niche that exploded on Product Hunt in 2024 with devices like Destiny Ring, NearDate Bracelet, and HaptikMatch. In the next few minutes you’ll learn the exact wireless standards that make it work, see a ready‑to‑run React Native prototype, understand the privacy trade‑offs, and walk away with a business‑model canvas you can plug into your own startup.


How the Tech Works (In 30 Seconds)

Step What Happens Key Tech
1️⃣ Advertise – Your ring broadcasts a BLE advertising packet every 200 ms containing a rotating 128‑bit identifier. BLE 5.2 (Extended Advertising)
2️⃣ Detect – Nearby devices listen for those packets. When a packet is received, the RSSI (or UWB Time‑of‑Flight) is measured. RSSI ± 2 dB or UWB ± 10 cm
3️⃣ Handshake – Both devices exchange a short ECDH key pair, derive a shared secret, and encrypt the proximity hash. ECDH P‑256 + AES‑256‑GCM
4️⃣ Match Decision – If the calculated distance < 1.5 m and the user’s preferences align, the companion app fires a “match” notification. Local inference (no cloud)
5️⃣ Optional Share – The user can tap the notification to reveal a temporary QR code that links to a chat room. Dynamic QR (TOTP‑based)

Quick‑Start Prototype (React Native + Expo BLE)

Below is a minimal, copy‑and‑paste example that discovers nearby rings and shows a “Match!” toast when the RSSI exceeds ‑60 dBm (roughly 1 m).

// App.tsx – React Native + Expo BLE
import React, {useEffect, useState} from 'react';
import {View, Text, ToastAndroid, StyleSheet} from 'react-native';
import {BleManager} from 'react-native-ble-plx';

const manager = new BleManager();

export default function App() {
  const [scanning, setScanning] = useState(false);

  useEffect(() => {
    const subscription = manager.onStateChange(state => {
      if (state === 'PoweredOn' && !scanning) {
        setScanning(true);
        manager.startDeviceScan(null, {allowDuplicates: true}, (error, device) => {
          if (error) {
            console.warn(error);
            return;
          }
          // Look for our proprietary service UUID
          if (device?.serviceUUIDs?.includes('0000feed-0000-1000-8000-00805f9b34fb')) {
            if (device.rssi && device.rssi > -60) {
              ToastAndroid.show(`💘 Match with ${device.name || 'unknown'}!`, ToastAndroid.SHORT);
            }
          }
        });
      }
    }, true);

    return () => {
      manager.stopDeviceScan();
      subscription.remove();
    };
  }, [scanning]);

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Proximity Dating Demo</Text>
      <Text>{scanning ? 'Scanning…' : 'Waiting for BLE…'}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {flex: 1, justifyContent: 'center', alignItems: 'center'},
  title: {fontSize: 22, fontWeight: 'bold', marginBottom: 12},
});
Enter fullscreen mode Exit fullscreen mode

What you need to run it

# 1️⃣ Install Expo CLI (if you don’t have it)
npm i -g expo-cli

# 2️⃣ Create a new project
expo init proximity-dating-demo
cd proximity-dating-demo

# 3️⃣ Add BLE library
npm i react-native-ble-plx

# 4️⃣ Replace App.tsx with the snippet above
# 5️⃣ Run on a real device (BLE doesn’t work in simulators)
expo run:android   # or expo run:ios
Enter fullscreen mode Exit fullscreen mode

Tip: Swap the hard‑coded service UUID with the one supplied by your hardware vendor (Destiny Ring uses 0000dead-0000-1000-8000-00805f9b34fb).


Frequently Asked Questions (Practical Answers)

Question Practical Answer
How does my ring know I’m near someone else’s device? It advertises a rotating ID via BLE. When another ring hears it, both devices perform a fast ECDH handshake, then compare RSSI (BLE) or Time‑of‑Flight (UWB) to decide if they’re within the 0‑3 m range you set in the companion app.
Will my location be stored in the cloud? No. All proximity hashes are ephemeral (deleted after 24 h) and never contain GPS data. Only if you manually share a location (e.g., by tapping the “share map” button) does any coordinate leave the device, and that transmission is end‑to‑end encrypted.
Can I pair the ring with any dating platform? Not out‑of‑the‑box. You need the vendor’s SDK (usually a small npm package) to translate “proximity event” → platform‑specific webhook. Open‑source bridges like RingBridge already map these events to Tinder, Bumble, and Hinge APIs, so you can add a single line of code to your backend.
What’s the battery life? BLE advertising at 200 ms drains ~0.5 mA; a 30 mAh coin cell lasts ≈ 6 weeks. UWB bursts (10 µs) add < 0.1 mA, extending life to ≈ 2 months with a 50 mAh source.
Is the data secure? Yes. Each device generates a fresh ECDH key pair per session, encrypts the proximity hash with AES‑256‑GCM, and discards the keys after the handshake. MITM attacks are mitigated by rotating IDs and short‑lived session keys.

Real‑World Success Stories

Product Metric What They Did Differently
Destiny Ring (2024) 12 k active users in 3 months; 68 % reported “first‑date” within a week of a match. Integrated Qualcomm QCN6020 UWB for sub‑10 cm accuracy, enabling “hand‑shake” mode (vibration only when distance < 30 cm).
NearDate Bracelet (2023) 4.5‑star rating on Product Hunt; 15 % conversion to paid premium “see‑who‑liked‑you” feature. Leveraged BLE 5.2 extended advertising to broadcast four simultaneous identifiers (different personas) without extra power cost.
HaptikMatch (2024) $250 k seed round; partnership with Bumble for “Proximity Boost” pilot. Built an open‑source SDK (MIT license) that lets any developer hook into their proximity events, accelerating ecosystem adoption.

Privacy & Security Checklist (What You Must Implement)

  1. Rotate identifiers every 15 seconds – prevents tracking by third parties.
  2. Encrypt handshake payloads with AES‑256‑GCM and discard keys after use.
  3. Store proximity logs only locally; purge after 24 h.
  4. Ask for explicit consent before exposing any GPS or profile data.
  5. Provide an opt‑out toggle in the companion app that disables advertising entirely.

Business‑Model Canvas (Quick‑Start for Founders)

Block Key Points
Value Proposition Real‑time, consent‑driven chemistry detection; no swipe fatigue; privacy‑first.
Customer Segments Gen Z/young Millennials; tech‑savvy singles; event organizers (concerts, festivals).
Channels Direct‑to‑consumer e‑commerce; partnerships with existing dating apps; pop‑up booths at music festivals.
Revenue Streams Hardware sales (ring + bracelet bundles); subscription for premium analytics (match‑history, “boost” visibility); B2B licensing of SDK to dating platforms.
Key Resources UWB‑capable chip supplier (Qualcomm, NXP); firmware team; design/branding agency for wearables.
Key Activities Firmware updates, SDK maintenance, community‑driven open‑source bridge, compliance (GDPR, CCPA).
Key Partnerships

Herramienta mencionada: Groq Cloud

Top comments (0)