A native mobile Modrinth dashboard for creators.
Manage projects, teams, versions, notifications, and analytics from your phone.
Ryntra is an unofficial app for Modrinth. It is not affiliated with, endorsed by, or maintained by Modrinth.
Join the Ryntra Discord server: https://discord.gg/H8YuSxE8UU
Android · Material 3 Expressive
Dashboard · Projects · Analytics · Teams
iOS · SwiftUI with Liquid Glass
Dashboard · Projects · Analytics · Teams
Click any screenshot to open the full-size capture.
- Sign in with Modrinth OAuth, with PAT login available as a fallback.
- View, search, and manage your Modrinth projects, and copy a link to any project in one tap.
- Browse the public Modrinth catalogue with search, category tabs, game version and loader filters, and open any project read-only.
- Edit project metadata, links, descriptions, status, icons, banners, and gallery images.
- Manage versions, loaders, game versions, dependencies, files, and release metadata.
- Declare Modrinth content disclosures, including AI-generated content, telemetry, paid features, and derivative work.
- Work with teams and organizations, including members, permissions, invites, ownership, and organization projects.
- Open related projects directly from notifications and accept organization or project invitations.
- View analytics for downloads, views, playtime, revenue, trends, and per-project performance.
- Track your wallet like on modrinth.com: the balance split by payout date, withdrawal totals, the full transaction history by month with CSV export, and affiliate link stats.
- Add home screen widgets on Android in three sizes, including a downloads chart for the last 7, 30, or 90 days.
- Edit your Modrinth profile, avatar, bio, and account details.
- Customize the app with Material 3 Expressive themes on Android and the native look on iOS and macOS, including Liquid Glass on iOS 26 and light and dark modes.
- Use the app in English, Russian, and other community-contributed languages.
- Receive local background notifications or optional instant notifications through the limited relay.
- Get native update notices from GitHub Releases with the correct APK or IPA download for your platform.
Android builds are published as APK files in GitHub Releases, next to the unsigned iOS IPA and the macOS DMG.
iOS builds are distributed as an unsigned IPA for sideloading. To install the iOS app, use Sideloadly on a computer, sign in to iCloud on Apple's official iCloud app or website, connect your iPhone or iPad with a cable, install the IPA, then trust the developer profile in device settings and enable Developer Mode if iOS asks.
The app checks GitHub Releases for newer versions and opens the matching APK or IPA asset when an update is available. The Appetize ZIP is an unsigned Simulator build and cannot be installed on a physical device.
Ryntra uses Modrinth OAuth for normal sign-in. PAT login is still available as a fallback for development or recovery.
Tokens are stored locally on your device using Android Keystore or the iOS Keychain.
- Android Studio with JBR 21 and Android SDK 36.
- Xcode 26 or newer for iOS and macOS builds. An app built against an older SDK keeps the pre-iOS 26 look instead of Liquid Glass.
- No Node.js, CocoaPods, or web runtime is required.
Run shared tests and build the Android app:
./gradlew.bat :shared:testAndroidHostTest :androidApp:assembleDebugThe debug APK is written to androidApp/build/outputs/apk/debug/.
For a release build:
./gradlew.bat :androidApp:assembleReleaseConfigure a signing key in Android Studio or Gradle before distributing a release APK.
Open iosApp/Ryntra.xcodeproj on macOS and run the Ryntra scheme. The Xcode build phase embeds the matching Kotlin Multiplatform framework automatically.
The app supports iOS 16.0 and newer on iPhone and iPad. Release builds use optimized whole-module Swift compilation.
For sideloading, build or download the unsigned IPA and install it with Sideloadly or another trusted sideloading tool.
The Ryntra scheme is multiplatform. Pick My Mac as the run destination to build a native Mac app on macOS 14.0 or newer, Apple Silicon only.
xcodebuild -project iosApp/Ryntra.xcodeproj -scheme Ryntra \
-destination 'platform=macOS,arch=arm64' buildmacOS links the shared Kotlin framework dynamically, unlike the static one used for iOS: a static build pulls in the platform.posix and platform.darwin cinterop caches, which reference symbols the macOS SDK no longer exposes for linking. A build phase embeds and signs that framework into the app bundle.
Intel Macs are not covered. Kotlin/Native deprecated macosX64 in 2.3.20, so the Mac build is pinned to arm64; adding macosX64() in shared/build.gradle.kts would restore it for as long as Kotlin keeps the target.
Kotlin/Native has no visionOS target, so there is no native visionOS build. Apple Vision Pro runs the iPad build in compatibility mode instead — select the Apple Vision Pro (Designed for iPad) destination:
xcodebuild -project iosApp/Ryntra.xcodeproj -scheme Ryntra \
-destination 'platform=visionOS Simulator,name=Apple Vision Pro' buildThe product lands in Debug-iphonesimulator, since the compatibility layer runs an iOS binary. Install it with xcrun simctl install.
Native qualityruns on every push tomain: localization checks, shared tests, the Android debug build, and the iOS and macOS builds on Xcode 26.Apple buildsis started by hand from the Actions tab. It producesRyntra-simulator.zipfor Appetize, the unsignedRyntra.<version>.ipa, andRyntra.<version>.dmgfor macOS, so Apple builds need no Mac.
The repository also includes four Codemagic workflows:
android-native, which runs shared tests and builds the Android debug APK.ios-native, which builds a Release iOS Simulator app and packagesRyntra-simulator.zipfor Appetize.macos-native, which builds the Apple Silicon Mac app and packages it as a DMG.ios-unsigned-ipa, which builds a Release ARM64 device app and packagesRyntra-unsigned.ipafor sideload signing.
The unsigned device workflow intentionally disables Codemagic signing. It is still a Release build; Sideloadly applies the provisioning profile later.
Notification privacy, Firebase/APNs setup, relay deployment, and troubleshooting are documented in Notification setup.
The normal Ryntra session token never goes to the notification relay. Instant notifications use a separate limited Modrinth authorization with only the permissions required to read notifications.
See Translating Ryntra for the Android and iOS translation workflow, validation command, language rules, and notification locale requirements.
Ryntra — неофициальное нативное мобильное приложение для авторов на Modrinth.
С ним можно управлять проектами, версиями, командами, организациями, уведомлениями и аналитикой прямо с телефона или планшета.
Актуальные экраны Android и iOS собраны в галерее выше. Нажми на любой скриншот, чтобы открыть его в полном размере.
- Вход через Modrinth OAuth и запасной вход по PAT.
- Просмотр, поиск и управление проектами Modrinth, копирование ссылки на любой проект в одно касание.
- Обзор публичного каталога Modrinth: поиск, категории, фильтры по версии игры и загрузчику, открытие любого проекта в режиме просмотра.
- Редактирование метаданных, ссылок, описаний, статуса, иконок, баннеров и галереи.
- Управление версиями, загрузчиками, версиями игры, зависимостями, файлами и метаданными релизов.
- Раскрытие содержимого Modrinth: контент с ИИ, телеметрия, платные функции и производный контент.
- Работа с командами и организациями: участники, права, приглашения, владелец и проекты организации.
- Переход в связанные проекты прямо из уведомлений и принятие приглашений.
- Аналитика по загрузкам, просмотрам, playtime, доходу, трендам и отдельным проектам.
- Кошелёк как на modrinth.com: баланс по датам выплат, суммы выводов, вся история операций по месяцам с экспортом в CSV и статистика партнёрских ссылок.
- Виджеты на главный экран Android трёх размеров, в том числе график загрузок за 7, 30 или 90 дней.
- Редактирование профиля, аватара, био и данных аккаунта.
- Material 3 Expressive на Android и нативный вид на iOS и macOS, включая Liquid Glass на iOS 26, светлый и тёмный режимы.
- Поддержка английского, русского и других языков, которые добавляет сообщество.
- Локальные фоновые уведомления и необязательная мгновенная доставка через relay-сервис.
- Нативное уведомление о новых версиях с правильной ссылкой на APK или IPA.
Android-версия публикуется APK-файлом в GitHub Releases, рядом лежат unsigned IPA для iOS и DMG для macOS.
iOS-версия доступна как unsigned IPA для sideloading. Чтобы установить приложение на iPhone или iPad, скачай IPA, подпиши его через Sideloadly или другой trusted sideloading-инструмент, установи приложение и доверь профиль разработчика в настройках устройства, если iOS попросит.
Приложение само проверяет GitHub Releases и показывает новую версию, когда она доступна. Кнопка скачивания открывает настоящий asset-файл нужной платформы. ZIP для Appetize предназначен только для iOS Simulator.
Основной вход работает через Modrinth OAuth. PAT-вход оставлен как запасной вариант для разработки или восстановления доступа.
Токены хранятся локально в Android Keystore или iOS Keychain.
- Android Studio с JBR 21 и Android SDK 36.
- Xcode 26 или новее для iOS и macOS. Со старым SDK приложение на iOS 26 остаётся в прежнем дизайне без Liquid Glass.
- Node.js, CocoaPods и web-runtime не требуются.
./gradlew.bat :shared:testAndroidHostTest :androidApp:assembleDebugDebug APK появится в androidApp/build/outputs/apk/debug/.
Для Release-сборки:
./gradlew.bat :androidApp:assembleReleaseПеред публикацией настрой signing key в Android Studio или Gradle.
Открой iosApp/Ryntra.xcodeproj на macOS и запусти схему Ryntra. Build phase Xcode автоматически подключает подходящий Kotlin Multiplatform framework.
Приложение поддерживает iOS 16.0 и новее на iPhone и iPad. Release-сборка использует оптимизированную whole-module компиляцию Swift.
Для sideloading можно скачать unsigned IPA и установить его через Sideloadly или другой trusted sideloading-инструмент.
Схема Ryntra мультиплатформенная. Выбери destination My Mac, чтобы собрать нативное приложение для macOS 14.0 и новее, только Apple Silicon.
xcodebuild -project iosApp/Ryntra.xcodeproj -scheme Ryntra \
-destination 'platform=macOS,arch=arm64' buildНа macOS общий Kotlin-фреймворк линкуется динамически, в отличие от статического на iOS: статическая сборка тянет cinterop-кэши platform.posix и platform.darwin, которые ссылаются на символы, отсутствующие в macOS SDK. Отдельная build phase встраивает и подписывает этот фреймворк внутри бандла.
Intel Mac не поддерживается. Kotlin/Native объявил macosX64 устаревшим в 2.3.20, поэтому Mac-сборка закреплена за arm64; добавление macosX64() в shared/build.gradle.kts вернёт поддержку, пока Kotlin сохраняет этот таргет.
У Kotlin/Native нет таргета visionOS, поэтому нативной visionOS-сборки не существует. Apple Vision Pro запускает iPad-сборку в режиме совместимости — выбери destination Apple Vision Pro (Designed for iPad):
xcodebuild -project iosApp/Ryntra.xcodeproj -scheme Ryntra \
-destination 'platform=visionOS Simulator,name=Apple Vision Pro' buildПродукт появится в Debug-iphonesimulator, потому что слой совместимости запускает iOS-бинарник. Установить его можно через xcrun simctl install.
Native qualityзапускается на каждый push вmain: проверка переводов, shared-тесты, Android debug-сборка, а также iOS и macOS на Xcode 26.Apple buildsзапускается вручную во вкладке Actions. Он собираетRyntra-simulator.zipдля Appetize, unsignedRyntra.<версия>.ipaиRyntra.<версия>.dmgдля macOS, так что Mac для Apple-сборок не нужен.
В codemagic.yaml есть четыре workflow:
android-nativeзапускает shared-тесты и собирает Android debug APK.ios-nativeсобирает Release-приложение для iOS Simulator и пакуетRyntra-simulator.zipдля Appetize.macos-nativeсобирает приложение для Mac на Apple Silicon и пакует его в DMG.ios-unsigned-ipaсобирает Release ARM64-приложение и пакуетRyntra-unsigned.ipaдля последующей подписи.
Unsigned workflow намеренно отключает подпись Codemagic. Это всё равно Release-сборка, а provisioning profile добавляется через Sideloadly.
Настройка уведомлений, Firebase/APNs, relay-сервера и диагностика описаны в docs/NOTIFICATIONS.md.
Обычный токен сессии Ryntra не отправляется в relay. Мгновенные уведомления используют отдельную ограниченную авторизацию Modrinth.
Смотри docs/TRANSLATING.md, чтобы добавить язык одновременно для Android, iOS и серверных уведомлений.
Discord-сервер Ryntra: https://discord.gg/H8YuSxE8UU







