Maturity: configuration is production; native processing is planned. This page is explicit about the split because both halves live in the same import.
What's production today
@corvidhq/react-native re-exports @corvidhq/effects unchanged —
building and validating a pipeline works exactly like Web:
import { createEffectsPipeline, filters, presets } from '@corvidhq/react-native';
const pipeline = createEffectsPipeline();
pipeline.applyPreset(presets.cinematic);
pipeline.add(filters.brightness({ value: 0.2 })); // validated the same way, same error codesNone of this touches native code — it's plain, validated JS, useful today for building a filter-selection UI, persisting a user's chosen look, or validating a saved preference before rendering.
What's planned
React Native's camera comes from react-native-webrtc, wrapped
by the exact same Room/LocalTrack classes @corvidhq/rtc uses on
web (see Architecture). Because those
classes are shared unmodified, camera.attachEffects(pipeline) exists
on React Native — but there is no DOM, canvas, or WebGL in this JS
runtime to render into, so it degrades safely:
const camera = await room.enableCamera();
pipeline.on('error', (error) => {
console.log(error.code); // 'RAVEN_EFFECT_UNSUPPORTED'
});
await camera.attachEffects(pipeline);
// The published track is unchanged — attachEffects() never throws here,
// and it never fakes a processed frame.This is not a bug to work around — it's the documented behavior until a native engine ships. Track real status in the dashboard's Effects section rather than assuming from this page alone, since it's kept current with what's actually in the tree.
Planned architecture
React Native
↓
Raven Effects API
↓
Native Effects Engine
↓
GPU
↓
Raven RTC
Per-frame processing will happen entirely in native code (a Metal/Core Image pipeline on iOS, an OpenGL ES/Camera2 pipeline on Android) — this SDK will not route every camera frame through JavaScript for real-time video. See Performance for why that constraint exists.
Related
- Flutter — the same split, different runtime.
- RTC Integration — the web/React behavior this will eventually match.