Plugin vs App Responsibilities
This package intentionally separates build-time automation from runtime behavior ownership.
Plugin-owned responsibilities
Section titled “Plugin-owned responsibilities”From plugin/src/index.ts, plugin/src/ios.ts, and plugin/src/android.ts:
- Apply iOS
UIBackgroundModesbaseline (audio). - Apply Android foreground media playback permissions.
- Ensure one valid
expo.modules.legato.LegatoPlaybackServicedeclaration.
These are prebuild-time native file transformations.
App-owned responsibilities
Section titled “App-owned responsibilities”From package README + readiness docs:
- Call runtime APIs (
setup, queue mutation, transport commands). - Register and remove listeners in app lifecycle.
- Decide UX behavior for progress, remote commands, and error handling.
- Validate your own release/device targets and preserve evidence.
Boundary enforcement signals
Section titled “Boundary enforcement signals”plugin/src/__tests__/boundary.test.tsguards build-time-only boundary (no runtime bridge imports).plugin/src/__tests__/docs-readiness.test.tsasserts docs communicate this split.
Practical implication
Section titled “Practical implication”If playback behavior is incorrect in your app, plugin success alone does not prove runtime correctness. You must inspect app wiring and host validation evidence.
Related: Expo Config Plugin reference and Runtime Host Boundaries.