Zum Hauptinhalt springen

Zurück zum Devlog

Donnerstag, 12. März 2026

Bugfix

5 Commits

4 min Lesezeit

ManaLink EAS Build Fixes & Expo SDK 55 Migration

EAS Build Pre-Install Hook für pnpm hoisted Mode, Migration von expo-av zu expo-audio und Dependency Alignment für Expo SDK 55.

T

Till Schneider

Autor

Fokussierter Tag mit 5 Commits für EAS Build Stabilität und Expo SDK 55 Kompatibilität:

  • EAS Build Pre-Install Hook - pnpm hoisted Mode für Monorepo Builds
  • expo-av → expo-audio - Migration auf das neue Audio API
  • SDK 55 Dependency Alignment - Alle Packages auf kompatible Versionen
  • Build Image Update - sdk-55 statt deprecated Default Image

EAS Build Pre-Install Hook

EAS Build unterstützt pnpm Monorepos nur eingeschränkt. Der neue Pre-Install Hook stellt sicher, dass Dependencies korrekt im hoisted Mode installiert werden.

Problem

EAS Build konnte native Dependencies nicht finden, weil pnpm standardmäßig im strict/isolated Mode installiert. React Native erwartet aber, dass alle Dependencies im node_modules-Root verfügbar sind.

Lösung

// eas-hooks/eas-build-pre-install.js
const { execSync } = require('child_process');

// Set node-linker to hoisted for EAS Build compatibility
execSync('echo "node-linker=hoisted" >> .npmrc');

eas.json Konfiguration

{
	"build": {
		"base": {
			"node": "20.18.0",
			"pnpm": "9.15.0",
			"image": "sdk-55"
		}
	}
}

Migration: expo-av → expo-audio

expo-av ist ab SDK 55 deprecated. Die neue expo-audio Library bietet ein schlankeres API.

API Vergleich

Featureexpo-avexpo-audio
ImportAudio from expo-avuseAudioPlayer from expo-audio
PlaybackClass-basiert (Sound)Hook-basiert
Bundle SizeInkludiert VideoNur Audio
SDK 55 SupportDeprecatedEmpfohlen

Vorher (expo-av)

import { Audio } from 'expo-av';

const { sound } = await Audio.Sound.createAsync(source);
await sound.playAsync();

Nachher (expo-audio)

import { useAudioPlayer } from 'expo-audio';

const player = useAudioPlayer(source);
player.play();

Dependency Alignment SDK 55

Mehrere Dependencies waren nicht auf die von Expo SDK 55 erwarteten Versionen gepinnt.

Aktualisierte Packages

PackageVorherNachher
react-native0.76.x0.79.x
react18.3.x19.0.x
expo-router4.x5.x
expo-image1.x2.x
@react-navigation/*6.x7.x

Build Image

- "image": "default"
+ "image": "sdk-55"

Das default Build Image enthielt veraltete Xcode- und Android SDK-Versionen, die mit SDK 55 inkompatibel waren.


babel-preset-expo

Als explizite Dependency hinzugefügt, da EAS Build im hoisted Mode das Preset nicht automatisch aus der Expo-Dependency auflösen konnte.

{
	"devDependencies": {
		"babel-preset-expo": "~13.0.0"
	}
}

Zusammenfassung

BereichCommitsHighlights
EAS Build2Pre-Install Hook, Build Image
Audio Migration1expo-av → expo-audio
Dependencies1SDK 55 Alignment
Babel1Explicit Preset

Nächste Schritte

  1. ManaLink Features - Audio-Playback im Foreground/Background testen
  2. TestFlight Build - Erster Build über EAS Submit
  3. Android Build - EAS Build für Google Play vorbereiten

Tags

#manalink #eas-build #expo-sdk-55 #expo-audio #react-native