Unofficial Grindr client. Crossplatform, free, libre, ad-free, tracker-free, privacy-centered and community-driven.
  • TypeScript 55.5%
  • Svelte 26.8%
  • Rust 11.3%
  • Kotlin 3%
  • CSS 1.2%
  • Other 2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-12 14:34:41 +01:00
.forgejo Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
.vscode Add Linux, Windows builds docs, move reproducibility into its own doc 2026-08-27 15:39:36 +02:00
ci Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
contrib Badge the icon DEV on debug builds 2026-09-03 17:17:14 +01:00
docs Merge remote-tracking branch 'origin/main' 2026-09-11 13:18:42 +01:00
e2e show scroll-to-top only while scrolling up 2026-09-12 14:34:41 +01:00
fastlane/metadata/android/en-US Set the release version to 0.1.0-beta.13 2026-09-07 23:54:02 +01:00
nix Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
patches Patch svelte-sonner per-position toast stacking 2026-08-21 19:14:24 +02:00
scripts Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
src show scroll-to-top only while scrolling up 2026-09-12 14:34:41 +01:00
src-tauri Export and import favorites 2026-09-11 15:42:27 +01:00
.dockerignore Update BUILDING.md 2026-06-23 22:44:48 +02:00
.editorconfig Move lint and format config into @opengrind/config, switch to lefthook 2026-08-06 23:45:05 +02:00
.envrc Take the Apple team ID out of the committed config 2026-08-07 22:41:25 +01:00
.git-blame-ignore-revs Ignore the tab-width reformat in blame 2026-08-07 00:25:18 +02:00
.gitignore Merge remote-tracking branch 'origin/main' 2026-08-25 16:24:54 +01:00
.gitmodules Migrate submodule url to HTTPS (#320) 2026-09-01 01:50:06 +02:00
.prettierignore Add licenses & credits page (closes #363) 2026-09-08 22:52:54 +02:00
BUILDING.md Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
bun.lock Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
bunfig.toml Finish moving lint and format config into @opengrind/config 2026-08-07 00:24:41 +02:00
CODE_OF_CONDUCT.md Reformat at tab width 4 2026-08-07 00:25:04 +02:00
components.json Collapse object literals that fit on one line 2026-08-05 19:58:26 +02:00
CONTRIBUTING.md Merge remote-tracking branch 'origin/main' 2026-09-02 10:17:34 +01:00
deny.toml Add licenses & credits page (closes #363) 2026-09-08 22:52:54 +02:00
docker-compose.yml Rename the app's identifiers to regrind 2026-09-01 11:21:22 +01:00
Dockerfile Pin nixos/nix Docker image with hash 2026-07-30 23:46:40 +02:00
eslint.config.js Merge remote-tracking branch 'origin/main' 2026-08-23 17:16:21 +01:00
flake.lock Add build verification scripts 2026-05-15 15:35:34 +02:00
flake.nix Rename the app to ReGrind 2026-08-31 20:53:46 +01:00
FUNDING.md Format file 2026-07-27 22:17:37 +02:00
GOVERNANCE.md Update GOVERNANCE.md 2026-08-27 15:48:35 +02:00
KEYS.md Turn the updater on for this fork's own releases 2026-09-05 14:47:42 +01:00
KEYS.md.asc Re-sign KEYS.md 2026-07-27 23:24:50 +02:00
lefthook.yml Move lint and format config into @opengrind/config, switch to lefthook 2026-08-06 23:45:05 +02:00
LICENSE Update email to admin@opengrind.org 2026-06-17 17:31:17 +02:00
package.json Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
playwright.config.ts Add blur level setting (closes #349) 2026-09-09 14:37:57 +02:00
prettier.config.js Move lint and format config into @opengrind/config, switch to lefthook 2026-08-06 23:45:05 +02:00
README.md Update README.md 2026-09-08 11:31:56 +02:00
REPRODUCIBILITY.md Merge remote-tracking branch 'origin/main' 2026-09-10 19:29:42 +01:00
rust-toolchain.toml Make scripts platform neutral and remove android as default 2026-08-23 00:41:28 +02:00
rustfmt.toml Finish moving lint and format config into @opengrind/config 2026-08-07 00:24:41 +02:00
SECURITY.md Point documentation links at the renamed headings 2026-08-28 00:52:20 +02:00
svelte.config.js Call the version string ReGrind 2026-09-03 16:46:02 +01:00
tsconfig.json Draw maps with MapLibre GL instead of Leaflet 2026-09-01 11:20:41 +01:00
tsconfig.tools.json Consolidate repo tooling under the root package 2026-08-21 19:10:55 +02:00
vite.config.mjs Merge remote-tracking branch 'origin/main' 2026-09-11 15:58:03 +01:00

ReGrind

A fork of Open Grind, an unofficial, free and ad-free Grindr client.

This fork started because I wanted to try the app on my iPhone. The original builds for Android and desktop, so I got it running on iOS, then kept going and filled in the things I missed while using it every day.

I build this for myself and sideload it onto my own phone. If you want to try it, see Install on iOS or Install on Android.

Browse grid Right Now Inbox

Every screenshot here is from demo mode (PUBLIC_ENABLE_DEMO=1), so it's all mock data.

Install on iOS

  • Install SideStore — follow its setup guide.

  • Add this source in SideStore, under Sources → +:

    https://git.opengrind.org/codexrunner/regrind/raw/branch/main/ci/altstore/source.json
    
  • Install ReGrind from the source.

Needs iOS 15 or later. Apps installed this way stop working after 7 days — turn on LocalDevVPN, then open SideStore and hit refresh.

Install on Android

  • Download the APK from the latest releaseregrind-v<version>-android.apk.
  • Open it on your phone and allow installing from your browser or file manager when Android asks.

Needs Android 9 or later. The package is org.regrind, so it installs alongside the original Open Grind rather than over it. It is signed with this fork's own key. The app checks this fork's releases for updates and can download and install them itself — Settings → App turns the automatic check off.

What's different

Some of this is mine, some comes from pull requests that haven't landed in the original project yet.

Interface

  • General redesign with a minimalist look
  • Redesigned settings
  • Appearance of the app: pick your own theme, colors, etc
  • Set your current location, or pick one on the map
  • Save the places you teleport to and jump straight back to them
  • Swipe between tabs
  • Swipe between profiles
  • Haptics feedback
  • A small bubble that shows up when someone views your profile
  • Tap 7 times on app version to enter / leave Demo mode
Profile with recent tap and chat Settings Appearance

Albums

  • View albums shared with you
  • Create and edit your own albums
  • Add photos from your library to an album, or to your profile
  • Share or unshare an album from the chat composer
Albums inbox Edit album Share with expiry

Chat

  • Voice messages: record and send them, play the ones you get
  • Support for video messages and locations
  • Support for video calls
  • Reply to messages, photos, videos, locations
  • Share your location or pick a location
  • Download media (photos / videos), or hold the download button to save a whole set at once
  • Received photos gallery. All the photos from a conversation in one place, reachable from the chat top bar.
Chat Chat with custom colors Media viewer

Accounts

  • Sign several accounts in and switch between them from the account card at the top of Settings
  • Each account keeps its own device identity, session, location, filters and online setting
  • Only the account you're using is online. The others hold their sign-in but stay disconnected, so nobody sees them online until you switch back — which also means only the account in use notifies you.
Account switcher Favorites with notes

Building

Same as the original project, see BUILDING.md and CONTRIBUTING.md. For iOS you'll also need Xcode and your own signing identity.

Credit

All the real work belongs to the original project. Thanks to everyone who builds and maintains it.

License

MIT, same as the original project.