Radical
Reference

Camera API

Still-photo operations, permissions, and typed failures.

Native enablement is internalPlugins.camera. The required dependency is @capacitor/camera@8.2.6. The config selector is Camera, with required usageDescription and photoLibraryUsageDescription strings.

Operations

@akshatowo/radical/client exportResultRequirements
capturePhotoPhotoBridge, BrowserCamera
choosePhotoPhotoBridge, BrowserCamera
checkCameraPermissionCameraPermissionBridge, BrowserCamera
requestCameraPermissionCameraPermissionBridge, BrowserCamera

These are Effect values, not functions. cameraLive(effect) provides BrowserCameraLive. BrowserCamera is injectable for tests. PhotoSchema and CameraPermissionSchema validate results.

Photo has dataUrl, mimeType, and optional width and height. Dimensions are decoded after orientation correction. The data URL remains valid after hook unmount. choosePhoto selects one image.

CameraPermission is "granted" | "denied" | "prompt". A check can return "denied" without failure. A denied request fails with PermissionDenied.

Runtime behavior

CapabilityAndroidiOSBrowser
CaptureCamera permission; no gallery saveCamera permission; no gallery saveImage input with capture="environment"; camera or file UI depends on browser
GenerationCAMERA permission; optional camera hardwareCamera and photo-library usage descriptionsNo native generation
Permission checkNative camera statusNative camera statusPermissions API or "prompt"
Permission requestNative promptNative promptSecure-context getUserMedia; temporary stream stopped

Errors and hooks

ContractValue
CameraErrorPermissionDenied | Cancelled | Unavailable | BridgeError
Native permission or cancellation rejectionMapped to capability errors
Unknown rejectionBridgeCallFailed
Invalid bridge resultBridgeDecodeError
useCamera()capture, choose, and action state
useCameraPermission()Check after mount; check and request

Source: camera implementation.

On this page