Zum Hauptinhalt springen

Zurück zum Devlog

Freitag, 06. März 2026

Feature

7 Commits

6 min Lesezeit

Manalink: Matrix Mobile Client

Manalink als Expo React Native Mobile Client für Matrix Chat mit Reactions, Read Receipts, Message Forwarding und EAS Build für TestFlight.

T

Till Schneider

Autor

Fokussierter Tag mit 7 Commits für den neuen Matrix Mobile Client:

  • Manalink - Expo React Native App für Matrix Chat
  • Reactions - Emoji-Reaktionen auf Nachrichten
  • Read Receipts - Lesebestätigungen
  • Message Forwarding - Nachrichten weiterleiten
  • EAS Build - TestFlight-Konfiguration

Neue Expo React Native App als nativer Mobile Client für das selbstgehostete Matrix-Setup.

Architektur

┌─────────────────────────────────────────────────┐
│  Manalink (Expo React Native)                    │
├─────────────────────────────────────────────────┤
│                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │  Rooms   │  │  Chat    │  │ Settings │      │
│  │  List    │  │  View    │  │          │      │
│  └──────────┘  └──────────┘  └──────────┘      │
│                                                  │
│  ┌──────────────────────────────────────┐       │
│  │  matrix-js-sdk                       │       │
│  │  matrix-sdk-crypto-wasm (E2EE)      │       │
│  └──────────────────────────────────────┘       │
│                                                  │
└──────────────────────────┬──────────────────────┘


              ┌─────────────────────┐
              │  Matrix Synapse     │
              │  (matrix.mana.how)  │
              └─────────────────────┘

Features

FeatureStatusBeschreibung
Room ListAlle Räume mit Unread Count
Chat ViewNachrichten-Timeline
ReactionsEmoji-Reaktionen auf Nachrichten
Read ReceiptsLesebestätigungen senden/empfangen
Message ForwardingNachrichten an andere Räume
DM EncryptionE2EE Fix für Direktnachrichten
Media UploadBilder und Dateien senden

Reactions Implementation

// Emoji Reaction auf eine Nachricht
async function sendReaction(roomId: string, eventId: string, emoji: string) {
	await matrixClient.sendEvent(roomId, 'm.reaction', {
		'm.relates_to': {
			rel_type: 'm.annotation',
			event_id: eventId,
			key: emoji,
		},
	});
}

DM Encryption Fix

Problem: Verschlüsselte DMs zeigten “Unable to decrypt” nach App-Neustart.

// Fix: Crypto Store korrekt initialisieren
const client = createClient({
	baseUrl: homeserverUrl,
	userId: userId,
	accessToken: token,
	cryptoStore: new IndexedDBCryptoStore(indexedDB, 'manalink-crypto-store'),
});

// Wichtig: initCrypto() VOR startClient()
await client.initCrypto();
await client.startClient();

EAS Build für TestFlight

Konfiguration für iOS TestFlight Distribution via EAS Build.

eas.json

{
	"build": {
		"development": {
			"developmentClient": true,
			"distribution": "internal"
		},
		"preview": {
			"distribution": "internal",
			"ios": {
				"simulator": false
			}
		},
		"production": {
			"autoIncrement": true,
			"ios": {
				"buildConfiguration": "Release"
			}
		}
	},
	"submit": {
		"production": {
			"ios": {
				"appleId": "[email protected]",
				"ascAppId": "6744632877"
			}
		}
	}
}

Root Dev Scripts

Neue Dev-Scripts im Root für einfaches Starten der Matrix-Apps.

{
	"dev:matrix:mobile": "pnpm --filter @manalink/mobile start",
	"dev:matrix:web": "pnpm --filter @matrix/web dev"
}

Monorepo Fix: sharp in neverBuiltDependencies

sharp wurde zu pnpm.neverBuiltDependencies hinzugefügt, um EAS Build Probleme zu beheben.

Problem

EAS Build schlug fehl, weil sharp native Binaries auf dem Build-Server nicht kompilieren konnte.

Lösung

// package.json (root)
{
	"pnpm": {
		"neverBuiltDependencies": ["sharp"]
	}
}

Zusammenfassung

BereichCommitsHighlights
Manalink App3Core App mit Room List & Chat
Features2Reactions, Read Receipts, Forward
EAS Build1TestFlight Konfiguration
Monorepo1sharp Fix für EAS

Nächste Schritte

  1. Push Notifications - APNs Integration für iOS
  2. Voice Messages - Aufnahme und Abspielen
  3. Search - Nachrichten-Suche in Räumen
  4. SDK 55 Upgrade - Expo SDK Update

Tags

#matrix #manalink #expo #react-native #mobile #eas-build #testflight