---
title: "Animation"
description: "Add motion to designs with entrance, exit, and loop animation presets, timing controls, and programmatic APIs."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation-ce900c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/animation/overview-6a2ef2/) - Add motion to designs with support for keyframes, timeline editing, and programmatic animation control.
- [Supported Animation Types](https://img.ly/docs/cesdk/react-native/animation/types-4e5f41/) - Explore the types of animations supported by CE.SDK, including object, text, and transition effects.
- [Create Animations](https://img.ly/docs/cesdk/react-native/animation/create-15cf50/) - Create entrance, exit, loop, and text animations with CE.SDK preset animation APIs.
- [Edit Animations](https://img.ly/docs/cesdk/react-native/animation/edit-32c12a/) - Modify existing animations in CE.SDK by reading properties, changing duration and easing, adjusting direction, and replacing or removing animations from blocks.
- [Programmatic Animations](https://img.ly/docs/cesdk/react-native/animation/programmatic-eb359c/) - Control CE.SDK animations from code by creating typed animation objects and assigning them to blocks.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Animations"
description: "Create entrance, exit, loop, and text animations with CE.SDK preset animation APIs."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/create-15cf50/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Create Animations](https://img.ly/docs/cesdk/react-native/animation/create-15cf50/)
---
---
## Related Pages
- [Base Animations](https://img.ly/docs/cesdk/react-native/animation/create/base-0fc5c4/) - Apply entrance, exit, and loop animation presets with duration, easing, and type-specific properties.
- [Text Animations](https://img.ly/docs/cesdk/react-native/animation/create/text-d6f4aa/) - Animate text elements with effects like fade, typewriter, and bounce for dynamic visual presentation.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Base Animations"
description: "Apply entrance, exit, and loop animation presets with duration, easing, and type-specific properties."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/create/base-0fc5c4/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Create Animations](https://img.ly/docs/cesdk/react-native/animation/create-15cf50/) > [Base Animations](https://img.ly/docs/cesdk/react-native/animation/create/base-0fc5c4/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/animation/create/base-0fc5c4/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/animation/create/base-0fc5c4/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Text Animations"
description: "Animate text elements with effects like fade, typewriter, and bounce for dynamic visual presentation."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/create/text-d6f4aa/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Create Animations](https://img.ly/docs/cesdk/react-native/animation/create-15cf50/) > [Text Animations](https://img.ly/docs/cesdk/react-native/animation/create/text-d6f4aa/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/animation/create/text-d6f4aa/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/animation/create/text-d6f4aa/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Edit Animations"
description: "Modify existing animations in CE.SDK by reading properties, changing duration and easing, adjusting direction, and replacing or removing animations from blocks."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/edit-32c12a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Edit Animations](https://img.ly/docs/cesdk/react-native/animation/edit-32c12a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/animation/edit-32c12a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/animation/edit-32c12a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Add motion to designs with support for keyframes, timeline editing, and programmatic animation control."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/overview-6a2ef2/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Overview](https://img.ly/docs/cesdk/react-native/animation/overview-6a2ef2/)
---
Animations in CreativeEditor SDK (CE.SDK) bring your designs to life by adding motion to images, text, and design elements. Whether you're creating a dynamic social media post, a video ad, or an engaging product demo, animations help capture attention and communicate ideas more effectively.
With CE.SDK, you can create and edit animations either through the built-in UI timeline or programmatically using the CreativeEngine API. Animated designs can be exported as MP4 videos, allowing you to deliver polished, motion-rich content entirely client-side.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Animation Capabilities in CE.SDK
CE.SDK enables animation across a variety of design elements, giving you the flexibility to animate:
- **Images:** Animate image blocks with movements like fades, zooms, or rotations.
- **Text:** Animate text layers to create effects such as typewriter reveals or slide-ins.
- **Shapes and Graphics:** Add motion to vector shapes, icons, and graphic blocks to create visually rich layouts.
You can animate key properties of these elements, including:
- **Position:** Move elements across the canvas.
- **Scale:** Zoom in or out dynamically.
- **Rotation:** Spin or pivot elements over time.
- **Opacity:** Fade elements in and out.
## Supported Animation Types
CE.SDK provides a range of animation types designed for common motion effects. Core categories include:
- **Fade:** Smooth transitions in or out using opacity changes.
- **Slide:** Move elements into or out of the frame from any direction.
- **Zoom:** Scale elements up or down to create dynamic emphasis.
- **Rotate:** Apply rotational motion for spins or turns.
These animations can be used as in, out or loop animations to create complex sequences.
## Timeline and Keyframes
Animations in CE.SDK are structured around a **time-based system**. Each page has a playback time, and elements are placed and animated relative to it.
Animations can be created through the editor’s timeline UI or managed programmatically via the CreativeEngine’s animation APIs, offering flexibility for different workflows.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Programmatic Animations"
description: "Control CE.SDK animations from code by creating typed animation objects and assigning them to blocks."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/programmatic-eb359c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Programmatic](https://img.ly/docs/cesdk/react-native/animation/programmatic-eb359c/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/animation/programmatic-eb359c/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Supported Animation Types"
description: "Explore the types of animations supported by CE.SDK, including object, text, and transition effects."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/animation/types-4e5f41/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Animation](https://img.ly/docs/cesdk/react-native/animation-ce900c/) > [Supported Animation Types](https://img.ly/docs/cesdk/react-native/animation/types-4e5f41/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/animation/types-4e5f41/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/animation/types-4e5f41/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "API Reference"
description: "Find out how to use the API of the CESDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/api-reference/overview-8f24e1/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [API Reference](https://img.ly/docs/cesdk/react-native/api-reference/overview-8f24e1/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/api-reference/overview-8f24e1/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/api-reference/overview-8f24e1/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Automate Workflows"
description: "Automate repetitive editing tasks using CE.SDK’s headless APIs to generate assets at scale."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation-715209/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/automation/overview-34d971/) - Automate repetitive editing tasks using CE.SDK’s headless APIs to generate assets at scale.
- [Batch Processing](https://img.ly/docs/cesdk/react-native/automation/batch-processing-ab2d18/) - Learn how to render multiple outputs at once with the batch processing workflow.
- [Auto-Resize](https://img.ly/docs/cesdk/react-native/automation/auto-resize-4c2d58/) - Configure blocks to dynamically adjust dimensions using Absolute, Percent, and Auto sizing modes for responsive layouts and content-driven expansion.
- [Data Merge](https://img.ly/docs/cesdk/react-native/automation/data-merge-ae087c/) - Generate personalized designs from templates by merging external data using text variables and placeholder blocks
- [Product Variations](https://img.ly/docs/cesdk/react-native/automation/product-variations-f3349f/) - Documentation for Product Variations
- [Automate Design Generation](https://img.ly/docs/cesdk/react-native/automation/design-generation-98a99e/) - Generate on-brand designs programmatically using templates, variables, and CE.SDK’s headless API.
- [Multiple Image Generation](https://img.ly/docs/cesdk/react-native/automation/multi-image-generation-2a0de4/) - Create many image variants from structured data by interpolating content into reusable design templates.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Auto-Resize"
description: "Configure blocks to dynamically adjust dimensions using Absolute, Percent, and Auto sizing modes for responsive layouts and content-driven expansion."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/auto-resize-4c2d58/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Auto-Resize](https://img.ly/docs/cesdk/react-native/automation/auto-resize-4c2d58/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/auto-resize-4c2d58/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/auto-resize-4c2d58/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Batch Processing"
description: "Learn how to render multiple outputs at once with the batch processing workflow."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/batch-processing-ab2d18/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Batch Processing](https://img.ly/docs/cesdk/react-native/automation/batch-processing-ab2d18/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/batch-processing-ab2d18/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/batch-processing-ab2d18/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Data Merge"
description: "Generate personalized designs from templates by merging external data using text variables and placeholder blocks"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/data-merge-ae087c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Data Merge](https://img.ly/docs/cesdk/react-native/automation/data-merge-ae087c/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/data-merge-ae087c/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/data-merge-ae087c/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Automate Design Generation"
description: "Generate on-brand designs programmatically using templates, variables, and CE.SDK’s headless API."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/design-generation-98a99e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Design Generation](https://img.ly/docs/cesdk/react-native/automation/design-generation-98a99e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/design-generation-98a99e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/design-generation-98a99e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Multiple Image Generation"
description: "Create many image variants from structured data by interpolating content into reusable design templates."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/multi-image-generation-2a0de4/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Multiple Image Generation](https://img.ly/docs/cesdk/react-native/automation/multi-image-generation-2a0de4/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/multi-image-generation-2a0de4/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/multi-image-generation-2a0de4/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Automate repetitive editing tasks using CE.SDK’s headless APIs to generate assets at scale."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/overview-34d971/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Overview](https://img.ly/docs/cesdk/react-native/automation/overview-34d971/)
---
Workflow automation with CreativeEditor SDK (CE.SDK) enables you to programmatically generate, manipulate, and export creative assets—at scale. Whether you're creating thousands of localized ads, preparing platform-specific variants of a campaign, or populating print-ready templates with dynamic data, CE.SDK provides a flexible foundation for automation.
You can run automation entirely on the client, integrate it with your backend, or build hybrid “human-in-the-loop” workflows where users interact with partially automated scenes before export. The automation engine supports static pipelines, making it suitable for a wide range of publishing, e-commerce, and marketing applications. Video support will follow soon.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## What Can Be Automated with CE.SDK
CE.SDK supports a wide variety of automation use cases, including:
- **Design generation at scale**: Create thousands of variants from a single template, such as product cards or regionalized campaigns.
- **Data-driven customization**: Merge external data (e.g., CSV, JSON, APIs) into templates to personalize text, images, or layout.
- **Responsive output creation**: Automatically resize designs and export assets in different aspect ratios or dimensions for various platforms.
- **Pre-export validation**: Detect issues like empty placeholders or low-resolution images before generating final output.
- **Multimodal exporting**: Automate delivery to multiple formats including JPG, PNG, PDF, and MP4.
## Automation Contexts
### Headless / Server-Side Automation
Server-side automation provides complete control over content generation without rendering a UI. This is ideal for background processing, such as creating assets in response to API requests or batch-generating print files for a mail campaign.
### UI-Integrated Automation (Human-in-the-Loop)
For workflows that require user input or final approval, you can embed automation into the CE.SDK UI. Users can review, customize, or finalize designs that were pre-filled with dynamic data—ideal for marketing teams, e-commerce admins, or print professionals.
### Client-Side vs. Backend-Supported Workflows
Many automation workflows can run directly on the client or device thanks to CE.SDK’s client-side architecture. However, a backend may be required for use cases involving:
- Secure access to private assets
- Large dataset lookups
- Server-side template rendering
- Scheduled or event-based triggers
## Customization Capabilities
CE.SDK gives you deep control over how your automation pipeline behaves:
### Data Sources
Connect to a variety of inputs:
- Local or remote JSON
- CSV files
- REST APIs
- CMS or PIM systems
### Template Customization
- Define dynamic variables and conditional placeholders
- Use reusable templates or generate them on-the-fly
- Lock or constrain specific fields to preserve brand integrity
### Design Rules
Enforce visual and content constraints:
- Brand-compliant colors and fonts
- Overflow handling and text auto-resizing
- Show/hide conditions and fallback logic
### Output Formats
| Category | Supported Formats |
| ----------- | ------------------------------------------------------------------------------------ |
| **Images** | `.png` (with transparency), `.jpeg`, `.webp`, `.tga` |
| **Vector** | `.svg` (scalable vector graphics with text as paths) |
| **Print** | `.pdf` (supports underlayer printing and spot colors) |
| **Video** | `.mp4` (H.264 or H.265 on supported platforms with limited transparency support) |
| **Scene** | `.imgly` or `.scene` (description of the scene without any assets) |
| **Archive** | `.imgly` or `.zip` (fully self-contained archive that bundles the scene file with all assets) |
> **Note:** Our custom cross-platform C++ based rendering and layout engine ensures
> consistent output quality across devices.
## UI Customization for Automation
You can extend the CE.SDK UI to trigger and manage automation tasks directly in the interface:
- Add buttons or panels to trigger workflows
- Dynamically update the scene based on user input or external data
- Customize visibility of UI components depending on the stage (e.g., pre-fill vs. review)
This makes it easy to integrate human-in-the-loop flows while preserving a tailored editing experience.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Product Variations"
description: "Documentation for Product Variations"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/automation/product-variations-f3349f/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Automate Workflows](https://img.ly/docs/cesdk/react-native/automation-715209/) > [Product Variations](https://img.ly/docs/cesdk/react-native/automation/product-variations-f3349f/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/automation/product-variations-f3349f/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/automation/product-variations-f3349f/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Bundle Size"
description: "Understand CE.SDK’s engine and editor bundle sizes and how they affect your mobile app’s download footprint."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/bundle-size-df9210/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Compatibility & Security](https://img.ly/docs/cesdk/react-native/compatibility-fef719/) > [Bundle Size](https://img.ly/docs/cesdk/react-native/bundle-size-df9210/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/bundle-size-df9210/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/bundle-size-df9210/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Capabilities"
description: "Explore the full list of CE.SDK capabilities available for your platform, including design, video, image, text, and more."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/capabilities-e1906f/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/) > [Capabilities](https://img.ly/docs/cesdk/react-native/capabilities-e1906f/)
---
A comprehensive overview of all CE.SDK capabilities available for React Native.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Colors"
description: "Manage color usage in your designs, from applying brand palettes to handling print and screen formats."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors-a9b79c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/colors/overview-16a177/) - Manage color usage in your designs, from applying brand palettes to handling print and screen formats.
- [Color Basics](https://img.ly/docs/cesdk/react-native/colors/basics-307115/) - Learn how color works in CE.SDK, including the three supported color spaces (sRGB, CMYK, and Spot) and when to use each for screen display or print workflows.
- [For Print](https://img.ly/docs/cesdk/react-native/colors/for-print-59bc05/) - Use print-ready color models and settings for professional-quality, production-ready exports.
- [For Screen](https://img.ly/docs/cesdk/react-native/colors/for-screen-1911f8/) - Documentation for For Screen
- [Apply Colors](https://img.ly/docs/cesdk/react-native/colors/apply-2211e3/) - Apply solid colors to shapes, backgrounds, and other design elements.
- [Create a Color Palette](https://img.ly/docs/cesdk/react-native/colors/create-color-palette-7012e0/) - Build reusable color palettes to maintain consistency and streamline user choices.
- [Replace Individual Colors](https://img.ly/docs/cesdk/react-native/colors/replace-48cd71/) - Selectively replace specific colors in images using CE.SDK's Recolor and Green Screen effects to swap colors or remove backgrounds.
- [Adjust Colors](https://img.ly/docs/cesdk/react-native/colors/adjust-590d1e/) - Fine-tune images and design elements by adjusting brightness, contrast, saturation, exposure, and other color properties using CE.SDK's adjustments effect system.
- [Extract Dominant Colors](https://img.ly/docs/cesdk/react-native/colors/extract-colors-d4c0a1/) - Read the most prominent colors from the rendered appearance of a block with the engine's color extraction API.
- [Color Conversion](https://img.ly/docs/cesdk/react-native/colors/conversion-bcd82b/) - Learn how to convert colors between color spaces in CE.SDK. Convert sRGB, CMYK, and spot colors programmatically for screen display or print workflows.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Adjust Colors"
description: "Fine-tune images and design elements by adjusting brightness, contrast, saturation, exposure, and other color properties using CE.SDK's adjustments effect system."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/adjust-590d1e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Adjust Colors](https://img.ly/docs/cesdk/react-native/colors/adjust-590d1e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/adjust-590d1e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/adjust-590d1e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Apply Colors"
description: "Apply solid colors to shapes, backgrounds, and other design elements."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/apply-2211e3/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Apply Colors](https://img.ly/docs/cesdk/react-native/colors/apply-2211e3/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/apply-2211e3/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/apply-2211e3/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Color Basics"
description: "Learn how color works in CE.SDK, including the three supported color spaces (sRGB, CMYK, and Spot) and when to use each for screen display or print workflows."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/basics-307115/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Color Basics](https://img.ly/docs/cesdk/react-native/colors/basics-307115/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/basics-307115/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/basics-307115/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Color Conversion"
description: "Learn how to convert colors between color spaces in CE.SDK. Convert sRGB, CMYK, and spot colors programmatically for screen display or print workflows."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/conversion-bcd82b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Color Conversion](https://img.ly/docs/cesdk/react-native/colors/conversion-bcd82b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/conversion-bcd82b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/conversion-bcd82b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create a Color Palette"
description: "Build reusable color palettes to maintain consistency and streamline user choices."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/create-color-palette-7012e0/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Create a Color Palette](https://img.ly/docs/cesdk/react-native/colors/create-color-palette-7012e0/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/create-color-palette-7012e0/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/create-color-palette-7012e0/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Extract Dominant Colors"
description: "Read the most prominent colors from the rendered appearance of a block with the engine's color extraction API."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/extract-colors-d4c0a1/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Extract Dominant Colors](https://img.ly/docs/cesdk/react-native/colors/extract-colors-d4c0a1/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/extract-colors-d4c0a1/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/extract-colors-d4c0a1/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "For Print"
description: "Use print-ready color models and settings for professional-quality, production-ready exports."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-print-59bc05/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Print](https://img.ly/docs/cesdk/react-native/colors/for-print-59bc05/)
---
---
## Related Pages
- [CMYK Colors](https://img.ly/docs/cesdk/react-native/colors/for-print/cmyk-8a1334/) - Work with CMYK colors in CE.SDK for professional print production workflows with support for color space conversion and tint control.
- [Spot Colors](https://img.ly/docs/cesdk/react-native/colors/for-print/spot-c3a150/) - Define, apply, and manage spot colors for professional print workflows with premixed inks.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "CMYK Colors"
description: "Work with CMYK colors in CE.SDK for professional print production workflows with support for color space conversion and tint control."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-print/cmyk-8a1334/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Print](https://img.ly/docs/cesdk/react-native/colors/for-print-59bc05/) > [CMYK Colors](https://img.ly/docs/cesdk/react-native/colors/for-print/cmyk-8a1334/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/for-print/cmyk-8a1334/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/for-print/cmyk-8a1334/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Spot Colors"
description: "Define, apply, and manage spot colors for professional print workflows with premixed inks."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-print/spot-c3a150/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Print](https://img.ly/docs/cesdk/react-native/colors/for-print-59bc05/) > [Spot Colors](https://img.ly/docs/cesdk/react-native/colors/for-print/spot-c3a150/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/for-print/spot-c3a150/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/for-print/spot-c3a150/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "For Screen"
description: "Documentation for For Screen"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-screen-1911f8/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Screen](https://img.ly/docs/cesdk/react-native/colors/for-screen-1911f8/)
---
---
## Related Pages
- [sRGB Colors](https://img.ly/docs/cesdk/react-native/colors/for-screen/srgb-e6f59b/) - Work with sRGB colors for screen-based designs including creating RGBA colors, applying them to design elements, and converting from other color spaces.
- [P3 Colors](https://img.ly/docs/cesdk/react-native/colors/for-screen/p3-706127/) - Understand the P3 wide color gamut, its platform availability in CE.SDK, and alternatives for Web development.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "P3 Colors"
description: "Understand the P3 wide color gamut, its platform availability in CE.SDK, and alternatives for Web development."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-screen/p3-706127/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Screen](https://img.ly/docs/cesdk/react-native/colors/for-screen-1911f8/) > [P3 Colors](https://img.ly/docs/cesdk/react-native/colors/for-screen/p3-706127/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/for-screen/p3-706127/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/for-screen/p3-706127/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "sRGB Colors"
description: "Work with sRGB colors for screen-based designs including creating RGBA colors, applying them to design elements, and converting from other color spaces."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/for-screen/srgb-e6f59b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [For Screen](https://img.ly/docs/cesdk/react-native/colors/for-screen-1911f8/) > [sRGB Colors](https://img.ly/docs/cesdk/react-native/colors/for-screen/srgb-e6f59b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/for-screen/srgb-e6f59b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/for-screen/srgb-e6f59b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Manage color usage in your designs, from applying brand palettes to handling print and screen formats."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/overview-16a177/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Overview](https://img.ly/docs/cesdk/react-native/colors/overview-16a177/)
---
Colors are a fundamental part of design in the CreativeEditor SDK (CE.SDK). Whether you're designing for digital screens or printed materials, consistent color management ensures your creations look the way you intend. CE.SDK offers flexible tools for working with colors through both the user interface and programmatically, making it easy to manage color workflows at any scale.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## For Print and Screen
Designing for screen and designing for print involve different color requirements, and CreativeEditor SDK (CE.SDK) is built to support both.
- **Screen workflows** use RGB-based color spaces like sRGB and Display P3. These spaces are optimized for digital displays, ensuring vibrant, consistent colors across different devices.
- **Print workflows** typically rely on CMYK and Spot Colors. These spaces reflect how physical inks combine on paper and require more precise color control to match print output.
CE.SDK makes it easy to design for both by:
- Supporting inputs in multiple color spaces, including sRGB, CMYK, and Spot Colors.
- Automatically managing color conversions between spaces.
- Providing tooling to ensure that exported files are optimized for either screen (e.g., PNG, WebP) or print (e.g., PDF with Spot Color support).
> **Note:** **Note:** CE.SDK allows you to specify colors using CMYK values, but these are
> always converted to RGB internally. You cannot produce a true CMYK PDF with
> CE.SDK, and we do not support print-specific PDF variants like PDF/X. However,
> Spot Colors are fully supported and properly embedded in exported PDFs.
## Color Management
Color management is the process of controlling how colors are represented across different devices and outputs—such as screens, printers, and files—to ensure that the colors you see during design match the final result.
In CreativeEditor SDK (CE.SDK), color management includes:
- Supporting multiple input color spaces (e.g., sRGB, Display P3 for screens, CMYK, Spot Colors for print).
- Handling accurate conversions between color spaces (e.g., RGB ↔ CMYK, approximating Spot Colors).
- Allowing custom color palettes and color libraries to maintain consistent color choices across a project or brand.
- Providing tools to adjust color properties like brightness, contrast, and temperature.
- Ensuring consistent color appearance across different export formats and output mediums.
Color management ensures that your designs maintain color accuracy and visual integrity whether they are displayed on a screen or printed professionally.
## Color Libraries and Custom Palettes
Color libraries in CE.SDK are collections of predefined colors that appear in the color picker, helping users maintain brand or project consistency. Libraries are implemented as asset sources, where each color is represented as an individual asset.
Each color library is identified by a unique source ID, allowing you to create, configure, and manage custom palettes tailored to your design needs. This setup makes it easy to offer curated color options to end users, improving both usability and design consistency.
## Supported Color Spaces
CreativeEditor SDK supports a wide range of color spaces to meet different design requirements:
- **sRGB:** The standard color space for most digital screens.
- **Display P3:** A wider gamut color space often used on high-end displays (not available on the Web and server platforms).
- **CMYK:** A subtractive color model used primarily for print workflows.
- **Spot Colors:** Special premixed inks for print-specific designs requiring precise color matching.
Each color space serves different use cases, ensuring that your designs remain accurate whether viewed on a screen or produced in print.
## Applying and Modifying Colors
CE.SDK allows you to apply and modify colors both through the UI and programmatically via the API. You can set colors for fills, strokes, outlines, and other properties dynamically, enabling a wide range of creative control. Whether you are adjusting a single design element or programmatically updating entire templates, the SDK provides the flexibility you need.
## Color Adjustments and Properties
CreativeEditor SDK provides a range of color adjustments to fine-tune your designs. Commonly used adjustments include:
- **Brightness:** Adjust the overall lightness or darkness.
- **Contrast:** Adjust the difference between light and dark areas.
- **Saturation:** Increase or decrease the intensity of colors.
- **Exposure:** Modify the overall exposure level.
- **Temperature:** Adjust the color balance between warm and cool tones.
- **Sharpness:** Enhance the crispness and clarity of edges.
In addition to these, CE.SDK supports many more detailed adjustments.
You can also modify specific color-related properties like fill color, stroke color, and opacity. All adjustments and property changes can be applied both through the UI and programmatically.
## Color Conversion
CreativeEditor SDK automatically manages color conversions to help ensure consistent visual output across different mediums. The following conversion behaviors are supported:
- **RGB and CMYK colors** can be converted between each other using a mathematical approximation.
- **Spot colors** can be represented in RGB and CMYK by using a corresponding color approximation.
- **RGB and CMYK colors cannot be converted to spot colors.**
These automatic conversions help ensure that designs maintain visual consistency whether they are viewed on a digital screen or prepared for professional printing.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Replace Individual Colors"
description: "Selectively replace specific colors in images using CE.SDK's Recolor and Green Screen effects to swap colors or remove backgrounds."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/colors/replace-48cd71/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Colors](https://img.ly/docs/cesdk/react-native/colors-a9b79c/) > [Replace Individual Colors](https://img.ly/docs/cesdk/react-native/colors/replace-48cd71/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/colors/replace-48cd71/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/colors/replace-48cd71/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "System Compatibility"
description: "Learn how device performance and hardware limits affect CE.SDK editing, rendering, and export capabilities."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/compatibility-139ef9/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Compatibility & Security](https://img.ly/docs/cesdk/react-native/compatibility-fef719/) > [System Compatibility](https://img.ly/docs/cesdk/react-native/compatibility-139ef9/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/compatibility-139ef9/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/compatibility-139ef9/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Compatibility & Security"
description: "Learn about CE.SDK's compatibility and security features."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/compatibility-fef719/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Compatibility & Security](https://img.ly/docs/cesdk/react-native/compatibility-fef719/)
---
CE.SDK provides robust compatibility and security features across platforms.
Learn about supported browsers, frameworks, file formats, language support,
and how CE.SDK ensures secure operation in your applications.
---
## Related Pages
- [Bundle Size](https://img.ly/docs/cesdk/react-native/bundle-size-df9210/) - Understand CE.SDK’s engine and editor bundle sizes and how they affect your mobile app’s download footprint.
- [System Compatibility](https://img.ly/docs/cesdk/react-native/compatibility-139ef9/) - Learn how device performance and hardware limits affect CE.SDK editing, rendering, and export capabilities.
- [File Format Support](https://img.ly/docs/cesdk/react-native/file-format-support-3c4b2a/) - See which image, video, audio, font, and template formats CE.SDK supports for import and export.
- [Security](https://img.ly/docs/cesdk/react-native/security-777bfd/) - Learn how CE.SDK keeps your data private with client-side processing, secure licensing, and GDPR-compliant practices.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Concepts"
description: "Key concepts and principles of CE.SDK"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts-c9ff51/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/)
---
Key Concepts and principles of CE.SDK.
---
## Related Pages
- [Key Concepts](https://img.ly/docs/cesdk/react-native/key-concepts-21a270/) - Explore CE.SDK’s key features—manual editing, automation, templates, AI tools, and full UI and API control.
- [Key Capabilities](https://img.ly/docs/cesdk/react-native/key-capabilities-dbb5b1/) - Explore CE.SDK’s key features—manual editing, automation, templates, AI tools, and full UI and API control.
- [Architecture](https://img.ly/docs/cesdk/react-native/concepts/architecture-6ea9b2/) - Understand how CE.SDK is structured around the CreativeEngine—the core runtime with six APIs for scenes, blocks, assets, events, variables, and editor state.
- [Plugin Architecture](https://img.ly/docs/cesdk/react-native/concepts/plugin-architecture-068fc4/) - Understand how CE.SDK plugins fit together—what a plugin is, how it attaches to the editor or engine, and which extension surfaces it can reach.
- [Terminology](https://img.ly/docs/cesdk/react-native/concepts/terminology-99e82d/) - Definitions for the core terms and concepts used throughout CE.SDK documentation, including Engine, Scene, Block, Fill, Shape, Effect, and more.
- [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) - Control editing access with Creator, Adopter, Viewer, and Presenter roles using global and block-level scopes for tailored permissions.
- [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) - Learn how blocks define elements in a scene and how to structure them for rendering in CE.SDK.
- [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) - Scenes are the root container for every design—holding pages, blocks, and camera. Learn to create, save, load, and configure scenes.
- [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) - Pages structure scenes in CE.SDK and must share the same dimensions to ensure consistent rendering.
- [Exclusion Areas](https://img.ly/docs/cesdk/react-native/concepts/exclusion-areas-c2b87b/) - An exclusion area marks a region of a page that content must stay out of, such as an envelope window or a book spine.
- [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) - Learn how assets provide external content to CE.SDK designs and how asset sources make them available programmatically.
- [Editor State](https://img.ly/docs/cesdk/react-native/concepts/edit-modes-1f5b6c/) - Control how users interact with content by switching between edit modes like transform, crop, and text.
- [Templating](https://img.ly/docs/cesdk/react-native/concepts/templating-f94385/) - Templates enable dynamic, reusable designs with text variables and placeholder media. Learn to create, load, and personalize templates programmatically.
- [Import and Export](https://img.ly/docs/cesdk/react-native/concepts/import-export-0ebbd8/) - Understand every way files move in and out of CE.SDK—importing media and design files, loading and saving native scenes, and exporting finished output.
- [Events](https://img.ly/docs/cesdk/react-native/concepts/events-353f97/) - Subscribe to block creation, update, and deletion events to track changes in your CE.SDK scene.
- [Buffers](https://img.ly/docs/cesdk/react-native/concepts/buffers-9c565b/) - Use buffers to store temporary, non-serializable data in CE.SDK via the CreativeEngine API.
- [Resources](https://img.ly/docs/cesdk/react-native/concepts/resources-a58d71/) - Learn how CE.SDK loads and manages external media files, including preloading for performance, handling transient data, and relocating resources when URLs change.
- [Undo and History](https://img.ly/docs/cesdk/react-native/concepts/undo-and-history-99479d/) - Manage undo and redo stacks in CE.SDK using multiple histories, callbacks, and API-based controls.
- [Design Units](https://img.ly/docs/cesdk/react-native/concepts/design-units-cc6597/) - Define layout in px, mm, or in—CE.SDK supports unit conversion and DPI scaling for consistent design.
- [Font Size Unit](https://img.ly/docs/cesdk/react-native/concepts/font-size-unit-3b2d60/) - Configure how font sizes are interpreted on a per-scene basis (Point or Pixel) with setFontSizeUnit and getFontSizeUnit.
- [Export Counting](https://img.ly/docs/cesdk/react-native/export-counting-613923/) - Learn which operations count as an export in CE.SDK, when export events are recorded, and what data they contain.
- [Error Catalog](https://img.ly/docs/cesdk/react-native/concepts/error-catalog-z3djzn/) - Reference of every structured CE.SDK engine error code, its message, hint, and related documentation page.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Architecture"
description: "Understand how CE.SDK is structured around the CreativeEngine—the core runtime with six APIs for scenes, blocks, assets, events, variables, and editor state."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/architecture-6ea9b2/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Architecture](https://img.ly/docs/cesdk/react-native/concepts/architecture-6ea9b2/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/architecture-6ea9b2/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/architecture-6ea9b2/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Assets"
description: "Learn how assets provide external content to CE.SDK designs and how asset sources make them available programmatically."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/assets-a84fdd/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/assets-a84fdd/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Blocks"
description: "Learn how blocks define elements in a scene and how to structure them for rendering in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/blocks-90241e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/blocks-90241e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Buffers"
description: "Use buffers to store temporary, non-serializable data in CE.SDK via the CreativeEngine API."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/buffers-9c565b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Buffers](https://img.ly/docs/cesdk/react-native/concepts/buffers-9c565b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/buffers-9c565b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/buffers-9c565b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Design Units"
description: "Define layout in px, mm, or in—CE.SDK supports unit conversion and DPI scaling for consistent design."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/design-units-cc6597/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Design Units](https://img.ly/docs/cesdk/react-native/concepts/design-units-cc6597/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/design-units-cc6597/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/design-units-cc6597/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Editor State"
description: "Control how users interact with content by switching between edit modes like transform, crop, and text."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/edit-modes-1f5b6c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Editor State](https://img.ly/docs/cesdk/react-native/concepts/edit-modes-1f5b6c/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/edit-modes-1f5b6c/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/edit-modes-1f5b6c/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Editing Workflow"
description: "Control editing access with Creator, Adopter, Viewer, and Presenter roles using global and block-level scopes for tailored permissions."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/editing-workflow-032d27/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/editing-workflow-032d27/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Error Catalog"
description: "Reference of every structured CE.SDK engine error code, its message, hint, and related documentation page."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/error-catalog-z3djzn/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Error Catalog](https://img.ly/docs/cesdk/react-native/concepts/error-catalog-z3djzn/)
---
Every recoverable engine failure is a structured error with a stable `code` (for example `SCENE.NOT_VALID`), an English developer-facing message and hint, typed arguments, and an optional documentation link. Match on the `code` rather than the message string — the code is stable across releases. For how to read these on each binding, see the [structured-errors migration guide](#broken-link-e7f3a1).
This page lists all catalog errors grouped by category including links to documentation pages. The `code` is what you branch on. The `message` and `hint` are the English strings the engine renders (developer-facing — surface localized copy in your UI layer).
## ASSET
Asset sources, asset library, asset references.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `ASSET.CANNOT_APPLY_COLOR_NO_TARGET` | Could not apply color asset to block \{block}. Block has nothing to apply color to. | The block has no fill, stroke, or text color to receive the asset. Set the relevant property type first. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_CMYK_MISSING_FIELDS` | \`payload.color\` with \`CMYK\` color space must have fields \`c\`, \`m\`, \`y\`, \`k\`. | CMYK colors require numeric \`c\`, \`m\`, \`y\`, \`k\` components. Add them to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_MISSING` | Asset does not contain a color. | Color asset operations require a \`color\` payload. Verify the asset is a color asset. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_MISSING_COLOR_SPACE` | \`payload.color\` must have a \`colorSpace\` field. | Add \`colorSpace\` (sRGB, CMYK, or SpotColor) to the asset payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_SPACE_UNKNOWN` | Unknown color space: \{colorSpace} | Color space '\{colorSpace}' is not supported. Valid values are sRGB, CMYK, and SpotColor. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_SPOT_MISSING_FIELDS` | \`payload.color\` with \`SpotColor\` color space must have fields \`name\`, \`externalReference\`, \`representation\`. | Spot colors require all three fields; \`representation\` must itself be a sub-color in sRGB or CMYK. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_SPOT_REPRESENTATION_INVALID` | A \`payload.color\` with colorSpace \`SpotColor\` must use a \`RGB\` or \`CMYK\` color for its \`representation\` field. | Spot color representation must be a primitive sRGB or CMYK value. Nested SpotColor is not allowed. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.COLOR_SRGB_MISSING_FIELDS` | \`payload.color\` with \`sRGB\` color space must have fields \`r\`, \`g\`, and \`b\`. | sRGB colors require numeric \`r\`, \`g\`, \`b\` components. Add them to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.DOCUMENT_SOURCE_NO_ADD` | A document asset source does not allow adding assets. | Document asset sources are read-only views into the active scene. Add assets to a local asset source instead. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.DOCUMENT_SOURCE_NO_REMOVE` | A document asset source does not allow removing assets. | Document asset sources are read-only. Remove the underlying scene blocks instead. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FACET_PATH_NOT_FACETABLE` | Asset property '\{property}' is not facetable. Use 'tags', 'groups', or 'meta.\'. | Facets enumerate bounded value sets; 'label' and 'id' are unbounded. Request 'tags', 'groups', or 'meta.\' instead. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_COMBINATOR_EMPTY` | Asset filter '\{combinator}' must have at least one child. | Add at least one filter expression to the '\{combinator}' array. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_COMBINATOR_NOT_ARRAY` | Asset filter '\{combinator}' must be an array. | Provide an array of filter expressions for '\{combinator}'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_META_KEY_MISSING` | Asset property filter 'meta' path must include a key (e.g. 'meta.languages'). | Append the meta key after 'meta.' — for example 'meta.languages'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_MULTIPLE_DISCRIMINATORS` | Asset filter has multiple discriminators; specify exactly one of 'property', 'and', 'or', 'not'. | Keep only one of 'property', 'and', 'or', 'not' on the expression. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_NOT_CHILD_NOT_OBJECT` | Asset filter '\{combinator}' must be an object. | Provide a single filter-expression object as the value of '\{combinator}'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_NOT_OBJECT` | Asset filter must be an object. | Wrap each filter expression in an object with one of 'property', 'and', 'or', 'not'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_NO_DISCRIMINATOR` | Asset filter must have exactly one of 'property', 'and', 'or', 'not'. | Set one discriminator key on the filter expression. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_OPERAND_MISSING` | Asset property filter must have exactly one of 'contains' or 'equals'. | Set either 'contains' or 'equals' on the property filter, not both and not neither. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_OPERAND_NOT_STRING` | Asset property filter '\{operand}' must be a string. | Provide a string value for '\{operand}' on the property filter. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_PROPERTY_EMPTY` | Asset property filter 'property' must not be empty. | Set 'property' to 'label', 'id', 'tags', 'groups', or 'meta.\'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_PROPERTY_NOT_STRING` | Asset property filter must have a string 'property'. | Provide 'property' as a string identifying the asset field to match. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_PROPERTY_UNKNOWN` | Unknown asset property '\{property}'. Use 'label', 'id', 'tags', 'groups', or 'meta.\'. | Replace '\{property}' with one of the supported property roots. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_ROOT_NOT_ARRAY` | Asset filter must be an array of filter expressions. | Pass the top-level filter as a JSON array of filter expressions (or null/empty for no filter). | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FILTER_UNRECOGNIZED_DISCRIMINATOR` | Asset filter has no recognized discriminator. | Use one of 'property', 'and', 'or', 'not' on the filter expression. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FIND_FN_REQUIRED` | findAssetsFn is required. | Pass a non-null findAssetsFn callback when registering a custom asset source. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FONT_MISSING_NAME` | Missing required field 'name' in font. | Each font entry needs a \`name\`. Add it to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.FONT_MISSING_URL` | Missing required field 'url' in font. | Each font entry needs a \`url\` pointing at the font file. Add it to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.ID_ALREADY_EXISTS` | Asset with id \{id} already exists in asset source. | Each asset id must be unique within a source. Remove the existing asset, or use a different id. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.JSON_INVALID_IN_URI` | Invalid JSON content in URI: \{uri} | The JSON at '\{uri}' could not be parsed. Validate the payload or check the URL response body. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.JSON_MALFORMED_LOCAL` | Invalid JSON content for local asset source. Expected 'id' and 'assets' fields. | The JSON payload must include top-level 'id' and 'assets' fields. See the local-asset-source schema for the full shape. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.META_NON_STRING_ENTRY` | Unexpectedly found non-string entry in asset's meta. | Asset meta is a flat string map. Numeric or object values are not supported — stringify them before inserting. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.NO_SELECTION` | No elements selected. | This asset application requires a selected block. Verify a selection exists with api.block.findAllSelected() before applying. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.RESOURCE_DATA_NOT_AVAILABLE` | Resource data not available: \{uri} | The resource at '\{uri}' is registered but has no data buffer. Confirm the source provides bytes (not just metadata). | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.RESOURCE_DATA_UNAVAILABLE` | Resource data is not available. | The resource has no attached data provider. Ensure the resource has been fetched and is ready before requesting its data. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.RESOURCE_NOT_FOUND_AT_URI` | Resource not found: \{uri} | No resource registered at '\{uri}'. Confirm the asset source serves the URI and that loading completed. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.RESOURCE_NOT_READY` | Resource is not ready. | The resource is still loading or in an error state. Wait for the Ready state, or handle the error via the resource's loading state. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.RESOURCE_NOT_READY_AT_URI` | Resource not ready: \{uri} | The resource at '\{uri}' is still loading. Subscribe to resource events or retry after the resource is Ready. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SORT_KEY_MISSING` | Sort key not found in asset source. | The asset source does not provide the requested sort key. Use a sort key the source declares, or omit the sort parameter. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_ADD_DENIED` | Assets cannot be added to this asset source: \{sourceId}. | The source '\{sourceId}' rejected addAssets(). It may be backed by an immutable provider. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_ALREADY_EXISTS` | AssetSource with id \{sourceId} already exists. | Asset source ids must be unique. Remove the existing source via removeAssetSource() or pick a different id. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_CANNOT_ADD_ASSETS` | AssetSource with id \{sourceId} cannot add assets. | The source '\{sourceId}' is read-only. Modify the underlying data store or pick a writable source. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_CANNOT_REMOVE_ASSETS` | AssetSource with id \{sourceId} cannot remove assets. | The source '\{sourceId}' is read-only. Modify the underlying data store or pick a writable source. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_DOES_NOT_SUPPORT_APPLY_PROPERTIES` | Asset source \{source} does not support applying properties. | The source '\{source}' does not implement applyProperties(). Use a source that supports it, or apply properties through a different surface. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_NOT_EXISTS` | AssetSource with id \{sourceId} does not exist. | No asset source registered under '\{sourceId}'. Use api.asset.addLocalAssetSource() or addAssetSource() to register one first. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_NOT_REMOVABLE` | AssetSource with id \{sourceId} may not be removed. | Built-in asset sources cannot be unregistered. Override their behavior by adding a higher-priority custom source instead. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_NO_PROPERTY_MOD` | This asset source does not support property modification. | The active asset source does not support property modification. Register a writable source via api.asset.addLocalAssetSource(), or modify the underlying assets directly. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_REMOVE_DENIED` | Assets cannot be removed from this asset source: \{sourceId}. | The source '\{sourceId}' rejected removeAssets(). It may be backed by an immutable provider. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.SOURCE_UNKNOWN` | The asset source \{sourceId} is unknown. | No asset source registered under '\{sourceId}'. Add it before requesting its content. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.STYLE_PRESET_INVALID_PAYLOAD` | Style preset payload is not a valid JSON object. | The asset's payload.stylePreset must be a JSON object. Check the asset definition's stylePreset field. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.STYLE_PRESET_MISSING_BLOCK_TYPE` | A style preset requires a blockType to create a new block. | When applying a style preset without a target block, set meta.blockType so the engine knows which block type to create. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.STYLE_PRESET_NOT_APPLICABLE` | Style preset is not applicable to a block of type '\{blockType}'. | The style preset declares the block types it supports. Apply it to a supported block type, or widen the preset's blockType. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TARGET_BLOCK_NOT_VALID` | Block is not valid. | The selected block is no longer valid. Re-resolve it via api.block.findAllSelected() and confirm with api.block.isValid(block) before applying an asset. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TRANSFORM_PRESET_FIXED_ASPECT_MISSING_FIELDS` | \`payload.transformPreset\` of type \`fixedAspectRatio\` must have fields \`width\`, and \`height\`. | FixedAspectRatio presets need \`width\` and \`height\` to determine the ratio. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TRANSFORM_PRESET_FIXED_SIZE_MISSING_FIELDS` | \`payload.transformPreset\` of type \`fixedAspectRatio\` must have fields \`width\`, \`height\`, and \`designUnit\`. | FixedSize presets need numeric \`width\`, \`height\`, and a \`designUnit\` (e.g. 'Pixel', 'Inch'). | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TRANSFORM_PRESET_MISSING_TYPE` | \`payload.transformPreset\` must have a \`type\` field. | Add a \`type\` to the transformPreset payload (e.g. 'FixedSize', 'FixedAspectRatio', 'ContentAspectRatio'). | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TRANSFORM_PRESET_TYPE_UNKNOWN` | Unknown transformPreset type: \{type} | TransformPreset type '\{type}' is not recognized. Valid values: 'FixedSize', 'FixedAspectRatio', 'ContentAspectRatio'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TYPEFACE_MISSING_FAMILY` | Missing required field 'family' in typeface. | Typefaces declare a \`family\` grouping their fonts. Add it to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.TYPEFACE_MISSING_WEIGHT` | Missing required field 'weight' in typeface. | Typefaces declare a \`weight\`. Add it to the payload. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.UNSUPPORTED_MIME_TYPE` | Unsupported mime type for loadWithoutService: \{mimeType} | The bypass loader cannot handle '\{mimeType}'. Route through the regular resource service or extend the loader. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.UNSUPPORTED_MIME_TYPE_FOR_BLOCK` | Cannot create a block from an asset with the MIME type \{mimeType}. | MIME type '\{mimeType}' has no block factory. Convert the asset to a supported type (image/*, video/*, audio/\*) or register a custom factory. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.URI_INVALID_BARE` | Invalid URI \{uri}. | The asset URI is malformed. Use a valid absolute URL or a registered scheme like 'buffer://'. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
| `ASSET.URI_META_MISSING` | 'uri' not found in asset 'meta'. Can't replace. | The asset's meta block must include a 'uri' field for replace() to work. Add it before invoking. | [Assets](https://img.ly/docs/cesdk/react-native/concepts/assets-a84fdd/) |
## AUDIO
Audio playback and routing.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `AUDIO.DATA_SOURCE_INIT_FAILED` | Mini Audio data source initialization failed. | miniaudio could not allocate the data source. Out-of-memory or invalid decoder state is the likely cause. | |
| `AUDIO.DATA_SOURCE_NODE_INIT_FAILED` | Data source node initialization failed (\{resultCode}). | miniaudio could not attach the data source as a node with error \{resultCode}. The graph configuration may be invalid. | |
| `AUDIO.DATA_SOURCE_NO_DURATION` | Audio data source has no known duration. | miniaudio could not determine the source length. Streaming or seekless sources may not report a duration; decode the source fully or supply one with a known length. | |
| `AUDIO.DECODER_FORMAT_FAILED` | Failed to get decoder data format. | The decoder reported an indeterminate sample format. The file header may be truncated or malformed. | |
| `AUDIO.DECODER_INIT_FAILED` | Mini Audio decoder initialization failed (\{resultCode}). | miniaudio rejected the audio source with error \{resultCode}. The file may be corrupted or use an unsupported codec. | |
| `AUDIO.DEVICE_INIT_FAILED` | Initializing audio device failed. | The platform's audio device could not be opened. Verify the device exists and is not in use by another process. | |
| `AUDIO.DEVICE_RESUME_FAILED` | Failed to resume the audio device. | The audio device was suspended and could not be resumed. On web, trigger playback from within a user-gesture handler (e.g. a click) so the browser unlocks the audio context before calling play. | |
| `AUDIO.DEVICE_START_FAILED` | Audio device start failed. | The audio device opened but did not start playback. Check device state and platform permissions. | |
| `AUDIO.DEVICE_STOP_FAILED` | Audio device stop failed. | The audio device could not be stopped cleanly. Subsequent restart may be required. | |
| `AUDIO.INVALID_SOUND_HANDLE` | Invalid sound handle. | The sound handle does not refer to a live audio source. It may have been stopped or never created. | |
| `AUDIO.NODE_ATTACH_OUTPUT_BUS_FAILED` | Attaching output bus failed (\{resultCode}). | miniaudio could not attach the node's output bus with error \{resultCode}. The graph layout may be invalid. | |
| `AUDIO.NODE_GRAPH_INIT_FAILED` | Audio node graph init failed. | The miniaudio node graph could not be created. Check available system resources and the audio backend installation. | |
| `AUDIO.NODE_SET_STATE_FAILED` | Setting node state failed (\{resultCode}). | miniaudio rejected the node state transition with error \{resultCode}. | |
| `AUDIO.NODE_STATE_CHANGE_FAILED` | Failed to change sound node state to \{targetState}. | miniaudio did not converge on the requested node state '\{targetState}'. The node may have been destroyed concurrently. | |
| `AUDIO.PCM_READ_FAILED` | Failed to read PCM frames from node graph (\{resultCode}). | miniaudio returned error \{resultCode} while reading PCM. The graph may be in an invalid state; re-create it. | |
| `AUDIO.RESAMPLER_INIT_FAILED` | Mini Audio resampler initialization failed. | miniaudio could not construct a resampler for the source rate. The source sample rate may be unsupported. | |
| `AUDIO.UNSUPPORTED_CODEC` | Unsupported audio codec. | miniaudio cannot decode this audio format. Re-encode the source as WAV, FLAC, or one of the documented supported codecs. | [File Format Support](https://img.ly/docs/cesdk/react-native/import-media/file-format-support-8cdc84/) |
## BINDING
Errors raised at the binding bridge layer (WASM/JNI/ObjC++/N-API parameter validation, host-callback invariants, asset-source platform plumbing).
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `BINDING.ASSET_PLATFORM_SOURCE_UNAVAILABLE` | Platform source object is unavailable. | The platform-side asset source backing this engine handle was garbage collected. Keep a reference while the engine may call into it. | |
| `BINDING.ASSET_SOURCE_ADD_UNSUPPORTED` | Assets cannot be added to this asset source. | Implement \`addAsset\` on the asset source if you need this operation to succeed. | |
| `BINDING.ASSET_SOURCE_APPLY_PROPERTIES_UNSUPPORTED` | Asset properties cannot be applied by this asset source. | Implement \`applyAssetProperties\` on the asset source if you need this operation to succeed. | |
| `BINDING.ASSET_SOURCE_FETCH_UNSUPPORTED` | Assets cannot be fetched from this asset source. | Implement \`fetchAsset\` on the asset source if you need this operation to succeed. | |
| `BINDING.ASSET_SOURCE_REMOVE_UNSUPPORTED` | Assets cannot be removed from this asset source. | Implement \`removeAsset\` on the asset source if you need this operation to succeed. | |
| `BINDING.FACETS_QUERY_ENTRY_NOT_STRING` | Each entry in 'facets' must be a property path string | Every \`facets\` entry must be a string property path such as \`'groups'\`, \`'tags'\`, or \`'meta.\'\`. | |
| `BINDING.FACETS_QUERY_NOT_ARRAY` | Field 'facets' must be an array of property path strings | Pass \`facets\` as a JavaScript array of property path strings such as \`'groups'\`, \`'tags'\`, or \`'meta.\'\`. | |
| `BINDING.FACETS_RESULT_NOT_OBJECT` | Field 'facets' in find assets result is not an object keyed by facet path | Return \`facets\` from a custom source's \`findAssets\` as an object keyed by the requested property paths. | |
| `BINDING.FACET_COUNT_NOT_NUMBER` | Field 'count' in facet '\{facet}' of find assets result is not a number | Omit \`count\` or set it to a number; it is optional per bucket. | |
| `BINDING.FACET_ENTRY_NOT_OBJECT` | An entry of facet '\{facet}' in find assets result is not a value/count object | Each facet bucket must be an object with a string \`value\` and an optional numeric \`count\`. | |
| `BINDING.FACET_NOT_ARRAY` | Facet '\{facet}' in find assets result is not an array of value/count entries | Each \`facets\[path]\` must be an array of value/count buckets. | |
| `BINDING.FACET_VALUE_MISSING` | Missing required string field 'value' in facet '\{facet}' of find assets result | Every facet bucket must carry a string \`value\`. | |
| `BINDING.HOST_CALLBACK_THREW` | \{operation} callback threw: \{message} | The platform-side \`\{operation}\` callback raised an error. Inspect \`args.message\` for the original host-language exception text and ensure the callback handles its input correctly. | |
| `BINDING.JSON_NOT_REPRESENTABLE` | Value cannot be represented as JSON. | Pass only JSON-serializable values (no functions, no cycles, no \`BigInt\`). | |
| `BINDING.JSON_PARSE_FAILED` | Failed to parse JSON from JS value. | Pass a value the bridge can stringify with \`JSON.stringify\` without throwing. | |
| `BINDING.NODE_NOT_INITIALIZED` | Not initialized | Call \`CreativeEngine.init(...)\` before invoking other engine methods. | |
| `BINDING.NO_TEXT_BLOCK_BEING_EDITED` | No text block is currently being edited. | Enter text editing mode via \`block.setTextEditMode(...)\` before invoking text-editing APIs. | |
| `BINDING.URI_RESOLVER_INVALID_RESULT` | URI resolver returned an invalid result. | Return a non-null string URL (or throw) from the URI resolver callback. | |
| `BINDING.URI_RESOLVER_PROMISE_REJECTED` | URI resolver promise rejected. | Resolve the returned promise with a string URL, or reject with a descriptive error message. | |
| `BINDING.URI_RESOLVER_UNAVAILABLE` | Async URI resolver is unavailable. | Configure an async URI resolver on the editor before triggering this call. | |
| `BINDING.WASM_ASSET_FILTER_JSON_PARSE_FAILED` | Failed to parse asset filter JSON from JS. | Pass an object the JS engine can serialize to JSON (no functions, no cycles, no \`BigInt\`). | |
| `BINDING.WASM_ASSET_GROUPS_NOT_ARRAY` | Field 'groups' is not an array | Pass \`groups\` as a JavaScript array of group id strings. | |
| `BINDING.WASM_ASSET_MISSING_ID` | Missing required field 'id' in asset | Each asset definition must carry an \`id\` string. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_DEFAULT_VALUE` | Missing required field 'defaultValue' in asset property | Set the property's \`defaultValue\` field to a value matching its declared \`type\` (same shape as \`value\`). | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_MAX` | Missing required field 'max' in asset property | Provide a numeric \`max\` on a numeric asset property. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_MIN` | Missing required field 'min' in asset property | Provide a numeric \`min\` on a numeric asset property. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_OPTIONS` | Missing required field 'options' in asset property | Provide an \`options\` array on an \`enum\`-type asset property. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_STEP` | Missing required field 'step' in asset property | Provide a numeric \`step\` on a numeric asset property. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_TYPE` | Missing required field 'type' in asset property | Set the property's \`type\` to a supported value: \`String\`, \`Boolean\`, \`Color\`, \`Enum\`, \`Int\`, \`Float\`, or \`Double\`. | |
| `BINDING.WASM_ASSET_PROPERTY_MISSING_VALUE` | Missing required field 'value' in asset property | Set the property's \`value\` field to a value matching its declared \`type\` (e.g. a number for \`Int\`/\`Float\`/\`Double\`, a string for \`String\`/\`Enum\`). | |
| `BINDING.WASM_ASSET_PROPERTY_UNKNOWN_TYPE` | Unknown property type: \{type} | '\{type}' is not a valid asset property type. Use one of \`String\`, \`Boolean\`, \`Color\`, \`Enum\`, \`Int\`, \`Float\`, or \`Double\`. | |
| `BINDING.WASM_ASSET_RESULT_MISSING_ID` | Missing required field 'id' in asset result | Each asset result must carry an \`id\` string. | |
| `BINDING.WASM_ASSET_RESULT_MISSING_SOURCE_ID` | Missing required field 'context.sourceId' in asset result | Set \`context.sourceId\` on each asset result to the asset source id that produced it. | |
| `BINDING.WASM_BLOCK_STATE_MISSING_ERROR` | Missing required field 'error' in block state | Pass an \`error\` field on a block state with \`type: 'Error'\`. | |
| `BINDING.WASM_BLOCK_STATE_MISSING_PROGRESS` | Missing required field 'progress' in block state | Pass a numeric \`progress\` field on a block state with \`type: 'Pending'\`. | |
| `BINDING.WASM_BLOCK_STATE_MISSING_TYPE` | Missing required field 'type' in block state | Pass a \`type\` field of \`'Ready'\`, \`'Pending'\`, or \`'Error'\` on the block state object. | |
| `BINDING.WASM_BLOCK_STATE_UNHANDLED` | Unhandled state error. | Internal bridge error — file a bug if you encounter this with a reproducible block state. | |
| `BINDING.WASM_BLOCK_STATE_UNKNOWN_ERROR` | Unknown block state error: \{error} | Use one of the documented \`BlockStateError\` enum values. | |
| `BINDING.WASM_BLOCK_STATE_UNKNOWN_TYPE` | Unknown block state type: \{type} | Use one of \`'Ready'\`, \`'Pending'\`, \`'Error'\`. | |
| `BINDING.WASM_COLOR_MISSING_COLOR_SPACE` | Missing colorSpace field in the color object. | Provide a \`colorSpace\` value of \`'sRGB'\`, \`'CMYK'\`, or \`'SpotColor'\` when constructing a color from JavaScript. | |
| `BINDING.WASM_COLOR_MISSING_COMPONENTS` | Missing components field in the color object. | Provide a \`components\` array of channel values matching the color space (3 for sRGB, 4 for CMYK). | |
| `BINDING.WASM_COLOR_MISSING_EXTERNAL_REFERENCE` | Missing externalReference field in the color object. | Set \`externalReference\` (empty string is allowed) when constructing a color from JavaScript. | |
| `BINDING.WASM_COLOR_MISSING_SPOT_NAME` | Missing spotColorName field in the color object. | Set \`spotColorName\` to a non-empty string when constructing a SpotColor. | |
| `BINDING.WASM_COLOR_MISSING_TINT` | Missing tint field in the color object. | Set \`tint\` to a number between 0 and 1 when constructing a color from JavaScript. | |
| `BINDING.WASM_COLOR_PARSE_FAILED` | Could not parse color. | Pass a color object with \`colorSpace\` and the matching channel fields, not a raw value. | |
| `BINDING.WASM_COMMAND_ARG_MAP_FAILED` | Couldn't map value for argument $\{index} while executing command \`\{command}\` > \{message} | Argument types must match the command's declared signature; see the inner message for the failing field. | |
| `BINDING.WASM_COMMAND_SINGLE_ARG_MISMATCH` | Received single argument for command \{command}. Expected \{expected}. | Pass exactly the number of arguments the command expects, as an array. | |
| `BINDING.WASM_FIND_RESULT_MISSING_ASSETS` | Missing required field 'assets' in find assets result | Return an \`assets\` array (may be empty) from the asset source \`findAssets\` callback. | |
| `BINDING.WASM_FIND_RESULT_MISSING_CURRENT_PAGE` | Missing required field 'currentPage' in find assets result | Return a \`currentPage\` integer from the asset source \`findAssets\` callback. | |
| `BINDING.WASM_FIND_RESULT_MISSING_TOTAL` | Missing required field 'total' in find assets result | Return a \`total\` integer from the asset source \`findAssets\` callback. | |
| `BINDING.WASM_FONT_MISSING_SUBFAMILY` | Missing required field 'subFamily' in font | Provide a \`subFamily\` string on each font entry. | |
| `BINDING.WASM_FONT_MISSING_URI` | Missing required field 'uri' in font | Provide a \`uri\` string on each font entry. | |
| `BINDING.WASM_GRADIENT_STOP_MISSING_STOP_VALUE` | Gradient color stop must have a stop value | Each gradient color stop needs a \`stop\` number between 0 and 1. | |
| `BINDING.WASM_MEM_ALLOC_FAILED_BUFFER` | Failed to allocate memory for buffer \{bufferUri} | Reduce the buffer size or grow the WASM memory cap before allocating. | |
| `BINDING.WASM_MEM_ALLOC_FAILED_HANDLE` | Failed to allocate memory for handle \{handle} | Reduce concurrent in-flight engine handles or grow the WASM memory cap. | |
| `BINDING.WASM_PAYLOAD_COLOR_CMYK_MISSING_FIELDS` | \`payload.color\` with \`CMYK\` color space must have fields \`c\`, \`m\`, \`y\`, \`k\`. | Provide \`c\`, \`m\`, \`y\`, \`k\` numeric fields on \`payload.color\` when \`colorSpace\` is \`'CMYK'\`. | |
| `BINDING.WASM_PAYLOAD_COLOR_MISSING_COLOR_SPACE` | \`payload.color\` must have \`colorSpace\` field. | Set \`payload.color.colorSpace\` to \`'sRGB'\`, \`'CMYK'\`, or \`'SpotColor'\`. | |
| `BINDING.WASM_PAYLOAD_COLOR_SPOT_MISSING_FIELDS` | \`payload.color\` with \`SpotColor\` color space must have fields \`name\`, \`externalReference\`, \`representation\`. | Provide \`name\`, \`externalReference\`, and \`representation\` on a \`SpotColor\` payload color. | |
| `BINDING.WASM_PAYLOAD_COLOR_SPOT_REPRESENTATION_INVALID` | A \`payload.color\` with colorSpace \`SpotColor\` must use a \`RGB\` or \`CMYK\` color for its \`representation\`. | Set \`representation.colorSpace\` to \`'sRGB'\` or \`'CMYK'\` on the SpotColor payload. | |
| `BINDING.WASM_PAYLOAD_COLOR_SRGB_MISSING_FIELDS` | \`payload.color\` with \`sRGB\` color space must have fields \`r\`, \`g\`, and \`b\`. | Provide \`r\`, \`g\`, \`b\` numeric fields on \`payload.color\` when \`colorSpace\` is \`'sRGB'\`. | |
| `BINDING.WASM_PROPERTIES_NOT_ARRAY` | 'properties' is not an array. | Pass \`properties\` as a JavaScript array of \`AssetProperty\` objects. | |
| `BINDING.WASM_SOURCE_SET_NOT_ARRAY` | 'sourceSet' is not an array. | Pass \`sourceSet\` as a JavaScript array of source objects. | |
| `BINDING.WASM_TRANSFORM_PRESET_FIXED_ASPECT_MISSING_FIELDS` | 'payload.transformPreset' of type 'FixedAspectRatio' must have fields 'width', and 'height'. | Provide numeric \`width\` and \`height\` fields on a \`'FixedAspectRatio'\` transformPreset. | |
| `BINDING.WASM_TRANSFORM_PRESET_FIXED_SIZE_MISSING_FIELDS` | 'payload.transformPreset' of type 'FixedSize' must have fields 'width', 'height', and 'designUnit'. | Provide numeric \`width\`, \`height\`, and a \`designUnit\` string on a \`'FixedSize'\` transformPreset. | |
| `BINDING.WASM_TRANSFORM_PRESET_MISSING_TYPE` | Missing required field 'type' in asset transformPreset | Set \`transformPreset.type\` to one of \`'FreeAspectRatio'\`, \`'FixedAspectRatio'\`, \`'ContentAspectRatio'\`, \`'FixedSize'\`. | |
| `BINDING.WASM_TRANSFORM_PRESET_UNKNOWN_TYPE` | Unknown transformPreset type: \{type} | Use one of \`'FreeAspectRatio'\`, \`'FixedAspectRatio'\`, \`'ContentAspectRatio'\`, \`'FixedSize'\`. | |
| `BINDING.WASM_TYPEFACE_MISSING_FONTS` | Missing required field 'fonts' in typeface | Provide a non-empty \`fonts\` array on the typeface object. | |
| `BINDING.WASM_TYPEFACE_MISSING_NAME` | Missing required field 'name' in typeface | Provide a \`name\` string on the typeface object. | |
| `BINDING.WASM_UNKNOWN_AUDIO_OUTPUT_TYPE` | Unknown audio output type: \{audioOutput} | Pass one of the documented audio-output type strings. | |
| `BINDING.WASM_UNKNOWN_COLOR_SPACE` | Unknown color space: \{colorSpace} | Pass one of \`'sRGB'\`, \`'CMYK'\`, \`'SpotColor'\`. | |
| `BINDING.WASM_UNKNOWN_CUTOUT_OPERATION` | Unknown CutoutOperation \{op} | Pass one of the documented \`CutoutOperation\` enum values. | |
| `BINDING.WASM_UNKNOWN_CUTOUT_TYPE` | Unknown CutoutType \{type} | Pass one of the documented \`CutoutType\` enum values. | |
| `BINDING.WASM_UNKNOWN_HORIZONTAL_ALIGNMENT` | Unknown horizontal alignment \{alignment}, use Left, Right, or Center | Pass \`'Left'\`, \`'Right'\`, or \`'Center'\`. | |
| `BINDING.WASM_UNKNOWN_SCOPE_STATE` | Unknown GlobalScopeState \{value} | Pass one of the documented \`GlobalScopeState\` enum values. | |
| `BINDING.WASM_UNKNOWN_VERTICAL_ALIGNMENT` | Unknown vertical alignment \{alignment}, use Top, Bottom, or Center | Pass \`'Top'\`, \`'Bottom'\`, or \`'Center'\`. | |
## BLOCK
Design-block lifecycle, properties, hierarchy, animation.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `BLOCK.ALWAYS_ON_BOTTOM_UNSUPPORTED` | The block does not have an always-on-bottom property. | Only specific block types (e.g. scene, page) carry always-on-bottom. Check api.block.getType(block) is a supported container before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ALWAYS_ON_TOP_UNSUPPORTED` | The block does not have an always-on-top property. | Only specific block types (e.g. scene, page) carry always-on-top. Check api.block.getType(block) is a supported container before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_MALFORMED_MODE_KEY` | Malformed asset. The mode should be stored in meta under the "mode" key. | Move the animation mode into asset.meta.mode. The current asset shape is rejected by the loader. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_MALFORMED_TYPE_KEY` | Malformed asset. The animation type or "none" should be stored in meta under the "type" key. | Move the animation type into asset.meta.type. The value must be the type identifier or the literal string 'none'. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_MISSING_MODE` | The asset does not contain a mode property. | Animation assets must declare a 'mode' field in their meta. Add the field to the asset definition. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_MISSING_TYPE` | The asset does not contain a type property. | Animation assets must declare a 'type' field in their meta. Add the field to the asset definition. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_MODE_MISMATCH` | The animation type \{type} cannot be used as a "\{mode}" animation. | Loop animation types need the mode "loop", and in and out animation types need "in" or "out". Change asset.meta.mode or asset.meta.type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_ASSET_TEXT_ONLY` | The animation type \{type} can only be added to text blocks. | Text animations apply only to text blocks. Apply the asset to a text block, or pick an animation type that is not a text animation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NOT_A_PAN_ANIMATION` | The selected animation is not a pan animation. | This API only applies to pan-type animations. Switch to a pan animation first or use the generic property setter. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NOT_A_SLIDE_ANIMATION` | The selected animation is not a slide animation. | This API only applies to slide-type animations. Switch to a slide animation first or use the generic property setter. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NOT_IN_TYPE` | The animation \{blockId} cannot be used as an "in" animation. | The animation block is not tagged as an in/out animation. Create an in/out animation via createAnimation with a compatible type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NOT_LOOP_TYPE` | The animation \{blockId} cannot be used as a "loop" animation. | The animation block is not tagged as a loop animation. Create a loop animation via createAnimation with a compatible type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NOT_OUT_TYPE` | The animation \{blockId} cannot be used as an "out" animation. | The animation block is not tagged as an in/out animation. Create an in/out animation via createAnimation with a compatible type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_ANIMATIONS_ON_BLOCK` | The block does not have any animations. | No animation has been applied to this block. Add an animation asset before querying or modifying it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_ANIMATION_TO_EDIT` | The selected block does not have an animation to be edited. | Apply an animation asset to the block before invoking edit APIs. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_EASING_PROPERTY` | The selected animation has no easing property. | The current animation type does not expose an easing setting. Verify the animation type supports easing before setting it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_EASING_PROPERTY_ON_BLOCK` | The target block does not have an animationEasing property. | The current animation type doesn't expose easing. Pick a type that does, or skip the property. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_OVERLAP_PROPERTY` | The target block does not have an textAnimationOverlap property. | textAnimationOverlap only exists on text-animation types. Confirm the animation type first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_TEXT_WRITING_STYLE` | The selected animation has no text writing style property. | Text writing style is only available on text-animation types. Confirm the active animation supports it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_NO_WRITING_STYLE_PROPERTY` | The target block does not have an textAnimationWritingStyle property. | textAnimationWritingStyle only exists on text-animation types. Confirm the animation type first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_TEXT_ONLY` | The animation \{blockId} can only be added to text blocks. | Text animations only apply to text blocks. Either pick a non-text animation or attach this animation to a text block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_TYPE_NOT_REGISTERED` | Unknown animation type: \{type} | Animation type '\{type}' is not registered. Use createAnimation with a built-in type or register a custom animation first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_EASING` | Unknown easing value: \{value} | Easing '\{value}' is not recognized. Use one of the predefined easing names. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_ENUM` | Unknown enum value: \{value} | The enum value '\{value}' is not a member of the targeted animation property. Inspect the property's valid set via the schema. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_MODE` | Unknown animation mode: \{mode} | Animation mode '\{mode}' is not one of 'In', 'Loop', or 'Out'. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_MODE_IN_ASSET` | The asset contains an unknown mode. | The asset's 'mode' value is not recognized. Valid modes are 'In', 'Loop', and 'Out'. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_PROPERTY_TYPE` | Unknown property type. | The animation property type is not handled by the editor. This likely indicates a stale or unsupported asset definition. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNKNOWN_TYPE` | Unknown animation type. | The animation type identifier is not registered. Confirm the asset 'type' matches a built-in or registered custom animation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ANIMATION_UNSUPPORTED` | The block does not support being animated. | Only blocks with animation capability accept animation assets. Call api.block.supportsAnimation(block) before applying an animation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ASSET_SOURCE_SORT_KEY_MISSING` | Sort key not found in asset source. | The asset source does not provide the requested sort key. Use a sort key the source declares. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.AUDIO_TRACK_INDEX_OUT_OF_BOUNDS` | Audio track index \{index} is out of bounds. Valid range: 0-\{max}. | Pass an audio-track index in \[0, \{max}]. Use getAudioTrackCountFromVideo() to inspect the count. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.AUTO_TO_FREE_LAYOUT_UNSUPPORTED` | Switching from an automatic to free layout isn't supported yet. | Once a page or stack is in automatic layout, free-layout switching requires reconstructing the children. Re-create the layout instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BACKGROUND_COLOR_UNSUPPORTED` | The block doesn't have a background color. | Only pages and a handful of container blocks expose a background color. Call api.block.supportsBackgroundColor(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BLEND_MODE_UNSUPPORTED` | The block doesn't have a blend mode. | Only renderable design blocks expose blendMode. Call api.block.supportsBlendMode(block) before setting it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BLOCKS_NOT_COMBINABLE` | Blocks cannot be combined. | Boolean combine requires two or more shape-bearing blocks. Verify the selection contains compatible shapes. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BLUR_UNKNOWN_TYPE` | Unknown blur type: \{type} | Blur type '\{type}' is not registered. Use one of the built-in blur types (uniform, linear, radial, mirrored). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BLUR_UNSUPPORTED` | Target block doesn't support blur. | Only renderable design blocks carry blur. Verify with supportsBlur(block) before applying. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BUFFER_LENGTH_OUT_OF_RANGE` | Length \{length} at offset \{offset} is out of range \[0, \{max}]. | Ensure offset + length \<= \{max}. Either reduce the length or grow the buffer first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BUFFER_NOT_FOUND` | Buffer not found: \{uri} | No buffer is registered at URI '\{uri}'. Call createBuffer or write to the URI before reading. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BUFFER_OFFSET_OUT_OF_RANGE` | Offset \{offset} is out of range \[0, \{max}]. | Pass an offset in \[0, \{max}]. Use the buffer's current size to validate before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.BUFFER_URI_INVALID` | Invalid buffer URI: \{uri} | Buffer URIs must use the 'buffer://' scheme. Re-create the buffer to obtain a valid URI. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CAMERA_DESTRUCTION_NOT_ALLOWED` | Destruction of camera is not allowed. | Cameras are managed by the scene. Destroy the scene, not the camera, to remove camera state. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CAMERA_TRANSFORM_LOCK` | Camera's transform cannot be locked. | Cameras are not lockable. Use scene-level interaction settings to restrict camera movement. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CAPTIONS_DISABLED` | Creation of captions is not allowed. Please enable the video captions feature. | Enable settings.features.videoCaptionsEnabled before creating a caption block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CAPTION_TRACKS_DISABLED` | Creation of caption tracks is not allowed. Please enable the video captions feature. | Enable settings.features.videoCaptionsEnabled before creating a caption track block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CHILDREN_INDEX_OUT_OF_BOUNDS` | Index \{index} is out of bounds for \{count} children. | Pass an index in \[0, \{count}]. Use getChildren(block).size() to inspect the current count. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COLOR_COMPONENT_OUT_OF_RANGE` | \{component} color component out of range \[0, 1]: \{value}. | Clamp '\{component}' to the \[0, 1] range. NaN is also rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COLOR_NOT_IN_COLOR_SPACE` | The color is not in the '\{colorSpace}' color space. | Read the color via the accessor for its actual color space, or convert it first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COLOR_SPACE_CONVERSION_NOT_SUPPORTED` | Cannot convert to that color space. | Color-space conversion to SpotColor is not defined — convert to sRGB or CMYK instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COLOR_TINT_OUT_OF_RANGE` | Tint out of range \[0, 1]: \{value}. | Clamp the tint to the \[0, 1] range. NaN is also rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COMBINE_TEXT_FONT_LOADING` | Block \{id} is a text block whose fonts have not finished loading. Call forceLoadResources on it before combine. | Wait for the text block's fonts to load (api.block.forceLoadResources) before invoking boolean combine. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COMPONENT_NOT_REGISTERED` | \{component} is not a registered type. | Reflection has no registration for component '\{component}'. Confirm the property string is correct. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.COMPONENT_NO_PROPERTY` | \{component} doesn't have property \{property}. | Component '\{component}' has no field named '\{property}'. Inspect findAllProperties(block) for valid keys. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_ASPECT_IMAGE_NO_DIMENSIONS` | ContentAspectRatio: image fill has no usable intrinsic dimensions yet; the image is not decoded and the sourceSet is empty. | Set 'fill/image/sourceSet' with explicit width and height, or wait for the image to decode before applying the preset. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_ASPECT_NOT_IMAGE_OR_VIDEO` | ContentAspectRatio: fill is neither an image nor a video; only those carry intrinsic dimensions. | Replace the fill with an image or video fill. Color and gradient fills have no intrinsic dimensions. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_ASPECT_NO_FILL` | ContentAspectRatio: block has no fill; only image and video fills carry intrinsic dimensions. | Add an image or video fill to the block before querying its content aspect ratio. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_ASPECT_VIDEO_NO_DIMENSIONS` | ContentAspectRatio: video fill has no usable intrinsic dimensions yet; wait for the first frame to decode or set the sourceSet with explicit width and height. | Wait for the first frame to decode, or set 'fill/video/sourceSet' with explicit width and height before applying the preset. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_FILL_ALIGNMENT_UNSUPPORTED` | The block doesn't support content fill alignment. | Only blocks with a sized image/video fill support contentFillAlignment. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is an image or video fill first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CONTENT_FILL_MODE_UNSUPPORTED` | The block doesn't have a content fill mode. | Only blocks with image/video fills expose a content fill mode. Call api.block.supportsContentFillMode(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CREATION_NOT_ALLOWED` | Creation of \{type} is not allowed. | Type '\{type}' is not user-creatable. It is created implicitly by other engine operations. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CUTOUT_NO_BLOCK_SELECTED` | No block selected can be given a cutout. | Cutouts apply to selected graphic blocks. Select at least one cutout-capable block first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.CUTOUT_PATH_REQUIRED` | 'vectorPath' is required for Cutout. | Pass a non-empty 'vectorPath' string when creating a Cutout block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.DIFFERENCE_NO_EFFECT` | Difference has no visible effect. | The subtracted shape does not intersect the base. Reposition or resize so they overlap. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.DROP_SHADOWS_UNSUPPORTED` | The block doesn't support drop shadows. | Only renderable design blocks carry shadow properties. Call api.block.supportsDropShadow(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.EFFECTS_UNSUPPORTED` | Target block doesn't support effects. | Only renderable design blocks carry an effects stack. Verify with supportsEffects(block) before mutating it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.EFFECT_INDEX_OUT_OF_BOUNDS` | Index \{index} out of bounds (\{count}). | Pass an index in \[0, \{count}]. Use getEffects(block).size() to inspect the current count. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.EFFECT_NOT_AN_EFFECT` | Only effects can be enabled and disabled. Use setVisible instead if you are trying to change the visibility of a design block. | Pass an effect block, or use setVisible(block, ...) to toggle a design block's visibility. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.EFFECT_UNKNOWN_TYPE` | Unknown effect type: \{type} | Effect type '\{type}' is not registered. Use a built-in effect type or register a custom one before creating. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ELEMENTS_NOT_ALIGNABLE` | Elements cannot be aligned. | Alignment requires two or more selectable design blocks under a common parent that supports free layout. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ELEMENTS_NOT_DISTRIBUTABLE` | Elements cannot be distributed. | Distribution requires three or more selectable design blocks under a common parent that supports free layout. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ELEMENTS_NOT_GROUPABLE` | Elements cannot be grouped. | Grouping requires two or more design blocks under the same parent. Verify the selection before calling group(). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ENTITY_NOT_LAID_OUT` | Entity \{block} has not been laid out yet. | Call api.scene.update() (or wait for the next frame) so layout has run, then retry. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.ENUM_VALUE_INVALID` | Invalid enum value \{value} for property \{property}. | Use one of the values returned by api.block.getEnumValues('\{property}'). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.EXPORTABLE_UNSUPPORTED` | The block doesn't have exportable option. | Only specific block types track the 'exportable' flag. Check api.block.getType(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_GET_SOLID_COLOR_WRONG_TYPE` | Tried to get solid color fill value on a block that has no such fill color. | The block's fill is not a solid color. Inspect the fill type via getType(getFill(block)) first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_MISSING` | Target block has no Fill. | Attach a fill via setFill(block, fill) or use supportsFill(block) to confirm support. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_NOT_VALID` | Specified fill is not a valid fill. | Create the fill via api.block.createFill(...) and pass that id. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_NO_SOLID_COLOR` | Fill has no solid color. | The fill block is not a SolidColor. Inspect getType(getFill(block)) and use the matching accessor. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_NO_SOLID_COLOR_FILL` | Block has no solid color fill. | Attach a solid-color fill via setFill(block, createFill('color')) before reading the color. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_SET_SOLID_COLOR_WRONG_TYPE` | Tried to set Fill Color on a block with different fill type. | Switch the block's fill to a solid-color fill, or use the matching API for the current fill type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_TEXT_SOLID_COLOR_ONLY` | Text blocks only support solid color fills. | Use createFill('color') for text blocks. Image, video, and gradient fills are not supported on text. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.FILL_UNSUPPORTED` | The block doesn't have a fill. | Only renderable design blocks expose a fill. Confirm the block type before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.GRADIENT_COLOR_STOPS_DUPLICATE` | Gradient color stops need to have unique values between 0 and 1. Found duplicate value \{value}. | Remove the duplicate stop at \{value} so each stop's position is unique. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.GRADIENT_COLOR_STOPS_NOT_SORTED` | Gradient color stops must be sorted in ascending order. | Sort the stops by position ascending before passing the array. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.GRADIENT_COLOR_STOPS_OUT_OF_RANGE` | Gradient color stops must be between 0 and 1. | Clamp each stop's position into \[0, 1] before passing the array to api.block.setGradientColorStops; positions outside the range are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.GRADIENT_COLOR_UNSUPPORTED` | The block does not have a gradient color property. | Only gradient-fill blocks expose gradient color stops. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is a gradient fill first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.GROUP_ABSOLUTE_ONLY` | Block is a group and can only have Absolute position mode. | Groups always use absolute layout. Don't set a relative position mode on a group block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.HEIGHT_INVALID_FOR_SCALING` | Current height is invalid for scaling. | The block's current height is zero or non-finite. Set a valid height before scaling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.HISTORY_HANDLE_INVALID_AT` | \{handle} is not a valid history handle. | The history handle is unknown or has been released. Re-obtain it via createHistory() before calling. | [Undo And History](https://img.ly/docs/cesdk/react-native/concepts/undo-and-history-99479d/) |
| `BLOCK.ID_INVALID` | The block with ID \{block} is not valid. It may have been deleted, e.g., when a new scene was loaded. | Re-resolve the block id after scene changes. Use isValid(block) to guard before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.IMAGE_FILL_UNSUPPORTED` | The block does not have an image fill property. | Only blocks with an image fill expose this property. Resolve the fill with api.block.getFill(block) and confirm api.block.getType(fill) is an image fill before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.IMAGE_LOAD_FAILED` | Failed to load image. | The image source could not be decoded or fetched. Verify the URI is reachable, the MIME type is one the engine supports, and the bytes are a valid image. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.KEY_NOT_FOUND` | Key \{key} on block \{block} not found. | Property '\{key}' is not defined on block \{block}. Use findAllProperties(block) to enumerate valid keys. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.MISSING_REQUESTED_COMPONENT` | The block doesn't have the requested properties. | The requested component is not attached to this block. Use the matching api.block.supports\*(block) query (or check api.block.getType(block)) to confirm the feature before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NAME_UNSUPPORTED` | The block does not have a name. | Only renderable design blocks carry a name. Check api.block.getType(block) is a design block before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_ATTACHED_TO_SCENE` | Block \{block} is not attached to a scene. | Append the block under the active scene (or one of its descendants) before calling this API. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_A_CUTOUT_BLOCK` | The block \{id} is not a Cutout block. | This API requires a cutout block. Use createCutout or filter by '//ly.img.ubq/cutout' first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_A_DESIGN_BLOCK` | Block is not a design block. | This API requires a design block (page, graphic, text, audio, video, etc.). Fills, shapes, and animations are not design blocks. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_A_TEXT_BLOCK` | Entity \{block} is not a text block. | Pass a text block id. Use getType(block) to confirm the block type before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_A_TEXT_BLOCK_SIMPLE` | block is not a text block. | Pass a text block. Use getType(block) to confirm the block type before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_A_VIDEO_FILL_BLOCK` | The provided block must be a video fill block or a block with a video fill. | Pass a video fill block directly, or a design block whose fill is a video. Use getFill(block) to resolve. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_KNOWN_BLOCK_TYPE` | \{type} is not a known block type. | Block type '\{type}' is not registered. Use findAllTypes() to enumerate supported types. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT` | Block hasn't been laid out yet. | Call api.scene.update() (or wait for the next frame) so layout has run, then retry. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_AABB` | Could not get AABB. Block hasn't been laid out yet. | Layout has not run for this block. Trigger a layout pass or wait one frame before querying the AABB. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_BEFORE_ADJUST_CROP` | Block has not been laid out yet. Call update() before adjustCropToFillFrame(). | adjustCropToFillFrame() requires a laid-out frame. Run api.scene.update() first, then retry. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_FLIP_H` | Could not flip horizontally. Block hasn't been laid out yet. | Layout has not run for this block. Trigger a layout pass or wait one frame before flipping. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_FLIP_V` | Could not flip vertically. Block hasn't been laid out yet. | Layout has not run for this block. Trigger a layout pass or wait one frame before flipping. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_FOR_SCENE` | The block \{id} has not been layouted and may therefore not be part of the scene. | Confirm block \{id} is attached and the scene has been updated. Trigger an explicit update if the block was just added. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_ROTATION` | Could not set rotation. Block hasn't been laid out yet. | Layout has not run for this block. Trigger a layout pass or wait one frame before setting rotation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_LAID_OUT_SCALE` | Could not scale. Block hasn't been laid out yet. | Layout has not run for this block. Trigger a layout pass or wait one frame before scaling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NOT_VALID` | Block is not valid. | The block id no longer references a live block. It may have been destroyed; re-resolve the id before calling this API. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_AUDIO_TRACKS_FOUND` | No audio tracks found in the video. | The video container reports zero audio tracks. Use a source that includes audio or skip this operation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_AUDIO_TRACKS_IN_VIDEO` | The video does not contain any audio tracks. | The decoded video has no audio streams. Confirm the source file actually contains audio. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_BLOCK_SELECTED` | No block is selected. | This API requires a selected block. Use api.block.findAllSelected() to confirm a selection before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_KIND` | Block does not have a kind. | Only design blocks expose a 'kind' property. Check api.block.getType(block) to confirm it is a design block (not a fill/shape/animation) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_PARENT` | Block doesn't have a parent. | The block is detached (e.g. the scene root). Attach it to a parent or guard with hasParent(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_POSITION` | Block has no defined position. | Position requires a Position component. Auto-layout containers or unattached blocks may not expose one. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_SHAPE_PROPERTY` | Target block has no shape property. | Only blocks with a shape component (graphic, vector) expose a shape property. Call api.block.supportsShape(block) before accessing the shape. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.NO_SIZE` | Block has no defined size. | Size requires a Size component. Confirm the block is a sized type (page, graphic, text) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.OPACITY_UNSUPPORTED` | The block doesn't have an opacity. | Only renderable design blocks expose opacity. Call api.block.supportsOpacity(block) before setting it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.OPERATION_PRECONDITION_FAILED` | \{reason} | The structural precondition check returned a free-text reason — see \`reason\` for the specific blocker (e.g. mixed parents, incompatible block types, missing layout). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.OP_NEEDS_TWO_BLOCKS` | Not enough blocks to perform operation. Must be at least two. | Select at least two blocks before invoking this operation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PARENT_NOT_LAID_OUT` | Parent block hasn't been laid out yet. | Layout has not run for the parent. Trigger an update or wait one frame before reading relative geometry. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PATH_OPERATION_FAILED` | The boolean operation could not include the shape of block \{id}. | The shape of block \{id} is too complex or too large for the boolean operation. Simplify the shape, or leave the block out. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PENDING_PROGRESS_INVALID` | Pending progress must be between 0 and 1. | Clamp the progress value to \[0, 1] before passing it to setPendingProgress. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.POSITION_LOCKED` | Block's position is locked and can't be modified. | Call setPositionLocked(block, false) before changing the position. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.POSITION_PARENT_CONTROLLED` | Block's position is controlled by the parent block and can't be modified. | The block's parent uses an automatic layout. Detach the block, switch the parent to free layout, or modify the parent instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_ENUM_CAST_FAILED` | \{property} cannot be cast to an enum value | The property value does not convert to an unsigned 32-bit integer. The property may not actually be an enum type, or its reflected representation is misconfigured. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_ENUM_MEMBER_CAST_FAILED` | \{member} cannot be cast to an enum value | An enum member's value does not convert to an unsigned 32-bit integer. The reflected enum is misconfigured. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_FONT_FILE_URI_DIRECT_UNSUPPORTED` | Setting the "text/fontFileUri" property directly is unsupported. Use the setFont API instead. | Call setFont(block, fontFileUri, typefaceName) so the typeface, weight and style stay consistent. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_GETTER_MISMATCH` | Incorrect function used, expected get\{kind}. | The property's type is '\{kind}'. Call the matching get\{kind}(...) accessor instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_INVALID_ENUM_VALUE` | \{property} holds an invalid enum value. | The property's integer value does not match any registered enum member. The block's stored state may be corrupt. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_INVALID_ENUM_VALUE_CHOICES` | Invalid enum value, expected one of: \[\{choices}] | Pass one of the listed enum identifiers. The catalog \`choices\` arg carries the comma-separated quoted list the setter would have accepted. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_AN_ENUMERATION` | Property's type is not an enumeration. | Querying the allowed enum choices is only valid for enum-typed properties. Check the property's \`PropertyType\` first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_ENUM` | \{property} is not an enum property. | \`getPropertyAllowedValues(...)\` / enum accessors only apply to enum-typed properties. Check the property type first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_FOUND` | Property not found: "\{property}". | Inspect api.block.findAllProperties(block) for the set of properties this block exposes. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_FOUND_WITH_HINT` | \{prefix}Valid properties, as listed by \`findAllProperties(id)\`, are: \{properties}. | Pick one of the listed properties or call findAllProperties(block) to inspect the live set. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_READABLE` | Property is not readable. | This property is write-only on the requested block type. Use the matching setter instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_NOT_WRITEABLE` | Property is not writeable. | This property is read-only on the requested block type. Inspect the value with the matching getter instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.PROPERTY_SETTER_MISMATCH` | Incorrect function used, expected set\{kind}. | The property's type is '\{kind}'. Call the matching set\{kind}(...) accessor instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.RESULT_EMPTY_SHAPE` | Result is an empty shape. | The boolean operation produced no visible geometry. Adjust the inputs so they overlap appropriately. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SCENE_CREATE_DIFFERENT` | To create a scene, use \`createScene\` instead. | Scenes have a dedicated lifecycle. Call api.scene.create() rather than block.create('//ly.img.ubq/scene'). | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `BLOCK.SCOPES_UNSUPPORTED` | Block \{block} does not support scopes. | Scope APIs require a block type that carries access control. Most renderable design blocks do; pages and tracks typically do not. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SCOPE_INVALID` | Invalid scope: \{scope} | The scope name '\{scope}' is not recognized. Use one of the documented scope keys (e.g. 'design/style', 'editor/select'). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SCOPE_MIXED_VALUES` | Not all underlying scopes of \{scope} have the same value. | The compound scope '\{scope}' aggregates multiple keys that currently disagree. Set them individually or accept the indeterminate state. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SCOPE_PERMISSION_DENIED` | \{message} | Unlock the scope '\{scope}' via setScopeEnabled(block, '\{scope}', true) before invoking this API. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SELECTION_DISABLED` | Selection disabled for block. | The block's selectability has been disabled via setSelectable(block, false). Re-enable to select it programmatically. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SHADOW_X_BLUR_INVALID` | The x-blur radius must be a finite number greater than or equal to 0. | Pass a non-negative finite x-blur. NaN and negative values are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SHADOW_X_OFFSET_INVALID` | The x-offset must be a finite number. | Pass a finite x-offset. NaN and ±infinity are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SHADOW_Y_BLUR_INVALID` | The y-blur radius must be a finite number greater than or equal to 0. | Pass a non-negative finite y-blur. NaN and negative values are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SHADOW_Y_OFFSET_INVALID` | The y-offset must be a finite number. | Pass a finite y-offset. NaN and ±infinity are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SHAPE_NOT_VALID` | Specified shape is not a valid shape. | The provided block id does not reference a shape sub-block. Use createShape or pick a registered shape type. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SOME_ELEMENTS_NOT_LOADED` | Some elements are not completely loaded. | Wait for the scene's resources to finish loading. Subscribe to resource events or poll api.scene.loadingState. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SOURCE_SET_EMPTY` | The source set is empty. | Populate the source set via addSource(...) before invoking source-set APIs. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.STROKES_UNSUPPORTED` | The block doesn't support strokes. | Only renderable design blocks carry stroke properties. Verify with supportsStroke(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.STROKE_DASH_ARRAY_INVALID` | Stroke dash array values must be finite numbers. | Replace any NaN/infinity entries in the dash array with finite numbers. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.STROKE_DASH_OFFSET_INVALID` | Stroke dash offset must be a finite number. | Pass a finite numeric dash offset. NaN and ±infinity are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.STROKE_MISSING` | Target block has no Stroke. | Enable the stroke via setStrokeEnabled(block, true) before mutating stroke properties. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.STROKE_WIDTH_INVALID` | The stroke width must be a finite number greater than or equal to 0. | Pass a non-negative finite width. NaN and negative values are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.SVG_PATH_PARSE_FAILED` | The SVG path could not be parsed. | Pass a valid SVG path string (e.g. "M10 10 L20 20 Z"). Validate with an SVG path parser if unsure. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TARGET_NOT_AN_ANIMATION` | The target block is not an animation. | Pass an animation block id. Use getType(block) to confirm before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TARGET_NOT_A_VIDEO_FILL` | The target block is not a video fill. | Pass a video fill block. Use getFill(block) on a design block to resolve it. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_CANNOT_TOGGLE_BOLD` | The block cannot be toggled between bold and normal font weights. | The current typeface does not expose both regular and bold weights. Pick a typeface that does. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_CANNOT_TOGGLE_ITALIC` | The block cannot be toggled between italic and normal font styles. | The current typeface does not expose both normal and italic styles. Pick a typeface that does. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_INVALID_FONT_SIZE` | The font size must be a positive finite number. | Pass a positive finite font size. NaN, zero, and negative values are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_INVALID_KERNING` | Kerning must be a finite number. | Pass a finite kerning value. NaN and ±infinity are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_INVALID_LINE_INDEX` | Invalid line index: \{lineIndex}. | Pass a line index in \[0, lineCount(block) - 1]. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_INVALID_RANGE_FOR_LINE` | Invalid text range for line index: \{lineIndex}. | Wait for layout to settle (api.scene.update()) before requesting text ranges for a line. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_LINE_BOUNDS_FAILED` | Failed to calculate line bounds for line index: \{lineIndex}. | Ensure the block has been laid out (api.scene.update()) before requesting line bounds. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_LINE_HEIGHT_INVALID` | lineHeight must be greater than zero. | Pass a positive lineHeight. Zero and negative values are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_LIST_LEVEL_NEGATIVE` | The list level must be non-negative. | Pass a list level in \[0, 4]. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_LIST_LEVEL_TOO_LARGE` | The list level must be less than 5. | Pass a list level in \[0, 4]. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_NO_BLOCK_BEING_EDITED` | No text block is currently being edited. | Enter text editing mode (e.g. via setEditMode('Text')) before calling cursor/composition APIs. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_NO_TYPEFACE` | block has no typeface. | Assign a typeface to the block via setFont() before invoking this API. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_NO_TYPEFACE_AND_DEFAULT_NOT_REGISTERED` | block has no typeface set and the default font is not registered as a typeface. | Either set a typeface explicitly via setFont() or register the default font as a typeface. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_ON_PATH_INVALID_SVG_PATH` | svgPath is not a valid SVG path string. | Pass a non-empty, parseable SVG path (e.g. 'M 0,0 L 100,0'). Validate the string before calling setTextOnPath. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_ON_PATH_MULTIPLE_SUBPATHS` | svgPath must contain exactly one subpath (no multiple 'M' commands). | Text on path follows a single contour. Split the path or pass only one subpath (a single leading 'M'). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_ON_PATH_NO_MEASURABLE_CONTOUR` | svgPath contains no measurable contour. | The path has zero length (e.g. a single 'M' with no draw commands). Provide a path with a real, measurable contour. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_PARAGRAPH_INDEX_NEGATIVE` | paragraphIndex must be non-negative. | Use a paragraph index >= 0. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_PARAGRAPH_INDEX_OUT_OF_RANGE` | paragraphIndex is out of range. | Pass a paragraph index in \[0, paragraphCount(block) - 1]. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_RANGE_FROM_OUT_OF_RANGE` | The \`from\` index is out of range. | Clamp 'from' to a non-negative index within the block's character count. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_RANGE_INVALID_ORDER` | Invalid range: from (\{from}) cannot be greater than to (\{to}). | Swap or adjust the bounds so 'from' \<= 'to'. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_RANGE_NEGATIVE` | Invalid range: from (\{from}) and to (\{to}) must be -1 or non-negative. | Use -1 to signal 'end of text' or pass a non-negative index for either bound. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_RANGE_TO_OUT_OF_RANGE` | The \`to\` index is out of range. | Clamp 'to' to an index within the block's character count. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_TYPEFACE_UPDATE_FAILED` | Failed to update text typeface: \{reason} | Inspect \`reason\` for the underlying text-shaping failure (typically font fallback, glyph coverage, or asset registry issues). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_UNKNOWN_TYPEFACE` | block has an unknown typeface: '\{typeface}'. | Register the typeface '\{typeface}' with the engine, or pick one that has already been registered. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_UNSUPPORTED_FONT_STYLE` | The block does not support the given style. Failed to find a font with the specified style. | Pick a style that the current typeface supports. Inspect getTextFontStyles(block) for the available set. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TEXT_UNSUPPORTED_FONT_WEIGHT` | The block does not support the given weight. Failed to find a font with the specified weight. | Pick a weight that the current typeface supports. Inspect getTextFontWeights(block) for the available set. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.THRESHOLD_NOT_FINITE` | The threshold values must be a finite number. | NaN and infinity are not accepted as threshold inputs. Pass finite floating-point values. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSFORM_LOCKED_FILL_PARENT` | Block's transform is locked and can't fill its parent. | Call setTransformLocked(block, false) before invoking fillParent. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSFORM_LOCKED_FLIP` | Block's transform is locked and can't be flipped. | Call setTransformLocked(block, false) before flipping. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSFORM_LOCKED_RESIZE` | Block's transform is locked and can't be resized. | Call setTransformLocked(block, false) before resizing, or pick a different block. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSFORM_LOCKED_ROTATE` | Block's transform is locked and can't be rotated. | Call setTransformLocked(block, false) before rotating. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSFORM_LOCKED_SCALE` | Block's transform is locked and can't be scaled. | Call setTransformLocked(block, false) before scaling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSITION_BLOCK_INVALID` | Block \{blockId} is not a valid transition. | The block passed to setTransition does not exist or has no block type. Create the transition via createTransition first. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSITION_BLOCK_NOT_A_TRANSITION` | Block \{blockId} is not a transition. | The block passed to setTransition is not a transition block. Create one via createTransition and pass that instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TRANSITION_TYPE_NOT_REGISTERED` | Unknown transition type: \{type} | Transition type '\{type}' is not registered. Use createTransition with one of the built-in transition types. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_ARRANGED` | Object of type \{type} cannot be arranged. | Arrange operations (bringToFront, etc.) apply only to design blocks within a container. Type \{type} doesn't qualify. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_CLIPPED` | Object of type \{type} cannot be clipped. | Type \{type} has no clipping support. Wrap it in a group or page and apply clipping there. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_FLIPPED` | Object of type \{type} cannot be flipped. | Type \{type} has no flip capability. Apply the flip to its parent or wrap in a group. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_LOCKED` | Object of type \{type} cannot be locked. | Type \{type} has no lock capability. Locking only applies to design blocks. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_PLACEHOLDER` | Object of type \{type} cannot be a placeholder. | Placeholders only apply to design blocks with content (graphic, text). Type \{type} cannot host placeholder behavior. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_BE_SELECTED` | Object of type \{type} cannot be selected. | Type \{type} is not user-selectable. Use a different selection target. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_CANNOT_HAVE_ROTATION` | Object of type \{type} cannot have a rotation. | Type \{type} does not support rotation. Wrap it in a group or rotate its parent instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NOT_A_CHILD` | Cannot add block of type \{type} as a child of another block. | Blocks of type \{type} are render blocks and must be attached via their dedicated property (e.g. fill, shape) rather than as a generic child. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_ADDING_CHILDREN` | Cannot add children to a block of type \{type}. | Blocks of type \{type} are not containers. Use a page, group, or track block to compose children. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_CHILDREN` | Object of type \{type} cannot have children. | Blocks of type \{type} are leaves in the scene tree. Use a container type (page, group, track) to hold children. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_FRAME` | Object of type \{type} does not have a frame. | Only design blocks with computed layout expose a frame. Cameras, scenes, fills, and shapes do not. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_GROUPS` | Object of type \{type} does not support groups. | Type \{type} cannot be grouped. Only design blocks under a common parent can be grouped. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_HIGHLIGHTING` | Object of type \{type} does not support highlighting. | Highlighting only applies to design blocks. Type \{type} cannot be highlighted. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_PARENT` | Object of type \{type} cannot have a parent. | Blocks of type \{type} are render blocks (fills, shapes, blurs, effects). They live alongside design blocks rather than under them. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_PLACEHOLDER_BEHAVIOR` | Object of type \{type} does not support placeholder behavior. | Type \{type} cannot be configured with placeholder hints or controls. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_PLACEHOLDER_CONTROLS` | Object of type \{type} does not have placeholder controls. | Type \{type} has no placeholder-related properties. Choose a design block that supports placeholders (graphic, text). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_POSITION` | Object of type \{type} cannot have a position. | Blocks of type \{type} have no position property. Render blocks and scenes are positioned implicitly. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_ROTATION` | Object of type \{type} does not have a rotation. | Rotation requires a Rotation component, which is not present on type \{type}. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_SIZE` | Object of type \{type} cannot have a size. | Blocks of type \{type} have no size property. Cameras, scenes, fills, and shapes are sized implicitly via other blocks. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_NO_VISIBILITY_STATE` | Object of type \{type} does not have any visibility state. | Type \{type} is always visible (cameras, scenes). Use show/hide on a design block instead. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.TYPE_PERMANENTLY_NON_SELECTABLE` | Object of type \{type} is permanently non-selectable. | Type \{type} is engine-managed and cannot be made selectable. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UNION_NO_EFFECT` | Union has no visible effect. | The shapes already overlap or are identical. Pick distinct shapes to see a union result. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UNKNOWN` | Block \{block} is unknown. | The block id no longer references a live design block. Re-resolve the id, or guard with isValid(block) before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UNKNOWN_BLOCK_TYPE` | Unknown block type: \{type} | Block type '\{type}' is not registered. Use a built-in type or register a custom type before calling create(). | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UNKNOWN_FILL_TYPE` | Unknown fill type: \{type} | Fill type '\{type}' is not registered. Supported types: color, gradient/linear, gradient/radial, gradient/conical, image, video, pixelStream. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UNKNOWN_SHAPE_TYPE` | Unknown shape type: \{type} | Shape type '\{type}' is not registered. Use a built-in shape type or register a custom one before creation. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.UUID_UNSUPPORTED` | The block does not have a UUID. | Only renderable design blocks carry a UUID. Check api.block.getType(block) is a design block before calling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VALUES_NOT_FINITE_THREE` | The values \{first}, \{second}, and \{third} must be finite numbers. | All three values must be finite. Replace any NaN or infinity with a concrete number. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VALUES_NOT_FINITE_TWO` | The values \{first} and \{second} must be a finite number. | Both values must be finite. Replace any NaN or infinity with a concrete number. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VALUE_NOT_FINITE` | The value \{value} must be a finite number. | Pass a finite numeric value. NaN and ±infinity are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VALUE_NOT_FINITE_IN_UNIT_RANGE` | The value \{value} must be a finite number in the range \[0, 1]. | Clamp the value to \[0, 1] before passing it in. NaN and infinities are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VALUE_NOT_NUMBER` | The value \{value} must be a number. | Pass a numeric value. Strings, NaN, and infinities are rejected. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VARIABLE_NOT_FOUND` | Variable with name "\{name}" not found. | Variable '\{name}' has not been declared. Call setVariable(name, value) once before reading. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VIDEO_FILL_NO_URI` | The video fill block does not have a valid file URI. | Set a non-empty fileURI on the video fill via setURI() before invoking this API. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VIDEO_LOAD_FAILED` | Failed to load video. | The video source could not be decoded or fetched. Verify the URI is reachable, the container/codec is supported, and the bytes are a valid video. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VIDEO_RESOURCE_NOT_LOADED` | The video resource has not been loaded yet. | Wait for the video resource to reach Ready, or call forceLoadAVResource(block, callback) before retrying. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.VIDEO_RESOURCE_NOT_LOADED_FOR_OPERATION` | The video resource has not been loaded yet. Please ensure the video is loaded before \{operation}. | Await the resource-loaded signal (e.g. the \`'audio'\`/\`'video'\` block-state transition to \`Ready\`) before invoking \`\{operation}\`. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
| `BLOCK.WIDTH_INVALID_FOR_SCALING` | Current width is invalid for scaling. | The block's current width is zero or non-finite. Set a valid width before scaling. | [Blocks](https://img.ly/docs/cesdk/react-native/concepts/blocks-90241e/) |
## CODEC
Audio/video codec capability and decoding.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `CODEC.ANDROID_AUDIO_ENCODER_CREATE_FAILED` | Cannot create audio encoder: media\_status = \{mediaStatus} | Android MediaCodec returned media\_status=\{mediaStatus}. Consult the AMediaCodec status codes. | |
| `CODEC.ANDROID_JNI_ERROR` | \{reason} | The Android MediaCodec/JNI layer reported: \{reason} | |
| `CODEC.APPLE_OSSTATUS_FAILURE` | \{operation} failed (\{status}) | The Apple media-framework call '\{operation}' returned a non-success status: \{status}. The codec, container, or hardware session could not be configured. | |
| `CODEC.AUDIO_DECODER_CREATE_FAILED` | Could not create audio decoder: \{reason} | The platform's audio decoder rejected the configuration. Reason: \{reason} | |
| `CODEC.AUDIO_DECODER_FATAL` | Encountered fatal audio decoder error: \{reason} | The audio decoder produced an unrecoverable error during playback. Reason: \{reason} | |
| `CODEC.AUDIO_DECODER_METADATA_INVALID` | Invalid audio metadata. | The audio metadata required to construct the decoder is missing or invalid. | |
| `CODEC.AUDIO_DECODER_NO_CHUNKS` | Audio has no chunks. | The audio resource has no decoded chunks available. Ensure the source has audible data. | |
| `CODEC.AUDIO_DECODER_NO_FRAMES` | Audio has no frames. | The audio resource has no decoded frames. The source may be empty or unparseable. | |
| `CODEC.AUDIO_DECODER_ZERO_FRAMES_PER_CHUNK` | Frames per chunk is zero. | Audio chunking metadata is invalid; cannot decode. Re-encode the source. | |
| `CODEC.AUDIO_DECODER_ZERO_FRAMES_PER_PACKET` | Frames per packet is zero. | Audio packetization metadata is invalid; cannot construct the decoder. Re-encode the source. | |
| `CODEC.AUDIO_DECODE_UNSUPPORTED` | Audio decoding is not supported on this platform. | This build does not include an audio decoder. Rebuild with the relevant codec backend, or run on a supported platform. | |
| `CODEC.AUDIO_ENCODER_CONFIG_INVALID` | Invalid audio encoder configuration: \{channels} channels at \{sampleRate} Hz | Audio channels and sample rate must be positive. Got channels=\{channels}, sampleRate=\{sampleRate}. | |
| `CODEC.AUDIO_ENCODER_CREATE_FAILED` | Could not create audio encoder: \{reason} | The platform's audio encoder rejected the configuration. Reason: \{reason} | |
| `CODEC.AUDIO_ENCODE_UNSUPPORTED` | Audio encoding is not supported on this platform. | This build does not include an audio encoder. Rebuild with the relevant codec backend, or run on a supported platform. | |
| `CODEC.AUDIO_TRACK_NOT_FOUND` | Couldn't find audio track in AVContainer. | The container has no audio track. Use a media file with an audio stream. | |
| `CODEC.BACKEND_TEXTURE_INCOMPLETE` | Backend texture is incomplete. | The Skia backend texture is missing state required for codec read-back. | |
| `CODEC.EMPTY_AUDIO_CODEC_STRING` | Empty audio codec string. | The container did not declare an audio codec. Re-encode the file with explicit codec metadata. | |
| `CODEC.EMPTY_VIDEO_CODEC_STRING` | Empty video codec string. | The container did not declare a video codec. Re-encode the file with explicit codec metadata. | |
| `CODEC.ENCODER_STATE_NOT_FOUND` | Could not find encoder state. | The encoder state was released. Construct a fresh encoder before calling this API. | |
| `CODEC.GSTREAMER_CREATE_ELEMENT_FAILED` | Could not create GStreamer element \{name} of type \{factory} | GStreamer factory '\{factory}' is not installed. Install the corresponding gst plugin or pick a different element. | |
| `CODEC.GSTREAMER_CREATE_SINK_CAPS_FAILED` | Could not create sink caps. | GStreamer rejected the sink caps. The target codec or format may not be supported. | |
| `CODEC.GSTREAMER_CREATE_SOURCE_CAPS_FAILED` | Could not create source caps. | GStreamer rejected the source caps. The codec or media format may not be supported. | |
| `CODEC.GSTREAMER_LINK_AUDIO_ENCODER_FAILED` | Could not link audio encoder pipeline elements. | GStreamer could not connect the audio encoder branch. Verify supported caps. | |
| `CODEC.GSTREAMER_LINK_AUDIO_FAILED` | Could not link audio pipeline elements. | GStreamer could not connect audio elements. Caps negotiation failed. | |
| `CODEC.GSTREAMER_LINK_VIDEO_ENCODER_FAILED` | Could not link video encoder pipeline elements. | GStreamer could not connect the video encoder branch. Verify supported caps. | |
| `CODEC.GSTREAMER_LINK_VIDEO_FAILED` | Could not link video pipeline elements. | GStreamer could not connect video elements. Caps negotiation failed. | |
| `CODEC.GSTREAMER_PIPELINE_CREATE_FAILED` | Could not create a new GStreamer pipeline. | gst\_pipeline\_new() failed. The GStreamer runtime may be in a bad state. | |
| `CODEC.GSTREAMER_PIPELINE_ERROR` | \{reason} | GStreamer pipeline reported: \{reason} | |
| `CODEC.GSTREAMER_UNEXPECTED_MESSAGE` | Unexpected message error type. | The GStreamer bus reported an unexpected message kind. This may indicate a pipeline state mismatch. | |
| `CODEC.METAL_TEXTURE_FROM_IOSURFACE_FAILED` | Failed to create Metal texture from IOSurface. | Metal rejected the IOSurface-backed texture descriptor. The pixel format or surface dimensions may be unsupported. | |
| `CODEC.NO_CONTEXT` | No context. | The compute context is not initialized. | |
| `CODEC.NO_GPU_CONTEXT` | No GPU context. | The compute context lacks GPU support required for this codec. | |
| `CODEC.OFFSCREEN_CANVAS_CREATE_FAILED` | Could not create offscreen canvas. | Offscreen canvas allocation failed. Out-of-memory or unsupported size is the likely cause. | |
| `CODEC.OFFSCREEN_CONTEXT_UNAVAILABLE` | Cannot get offscreen context for encoding. | The compute context is not an offscreen (Metal) context. Video encoding requires an offscreen GPU context. | |
| `CODEC.PIXEL_BUFFER_NO_IOSURFACE` | CVPixelBuffer has no IOSurface backing. | The pooled pixel buffer is not IOSurface-backed, so it cannot be wrapped as a Metal texture. The pool was created without the IOSurface property. | |
| `CODEC.PIXEL_BUFFER_POOL_CREATE_FAILED` | Failed to create CVPixelBufferPool. | CoreVideo could not allocate a pixel buffer pool for the encoder. Out-of-memory or an unsupported pixel format is the likely cause. | |
| `CODEC.PRESENTATION_TIMESTAMPS_NOT_UNIQUE` | Presentation timestamps are not unique. | The video track has duplicate presentation timestamps, which prevents building a frame index. Re-mux the source with monotonically increasing PTS. | |
| `CODEC.RECORDING_CONTEXT_UNAVAILABLE` | Could not obtain a recording context. | The Skia display canvas has no GPU recording context. The compute context may not be initialized for hardware video decoding. | |
| `CODEC.UNKNOWN_AUDIO_DECODER_HANDLE` | Unknown audio decoder handle. | The audio decoder handle is not registered. It may have been destroyed already. | |
| `CODEC.UNKNOWN_CODEC_STRING` | Unknown codec string \{codec} | The codec identifier '\{codec}' is not recognized by this build. Pass a supported codec string (e.g. an H.264 video or AAC audio identifier) when configuring the export. See the supported codecs list for valid identifiers. | [File Format Support](https://img.ly/docs/cesdk/react-native/import-media/file-format-support-8cdc84/) |
| `CODEC.UNKNOWN_VIDEO_DECODER_HANDLE` | Unknown video decoder handle \{handle} | The decoder handle is not registered. It may have been destroyed already. | |
| `CODEC.UNKNOWN_VIDEO_DECODER_HANDLE_NO_ARG` | Unknown video decoder handle. | The decoder handle is not registered. It may have been destroyed already. | |
| `CODEC.UNREACHABLE_FOR_CODEC` | Unreachable code reached for codec \{codec} | Internal switch did not handle codec '\{codec}'. This is an engine bug — please file a ticket. | |
| `CODEC.UNSUPPORTED_CODEC_STRING` | Unsupported codec string \{codec} | Codec '\{codec}' is recognized but not supported in the current configuration. Choose a widely supported codec such as H.264 for video or AAC for audio. See the supported codecs list for the full set. | [File Format Support](https://img.ly/docs/cesdk/react-native/import-media/file-format-support-8cdc84/) |
| `CODEC.UNSUPPORTED_H265_CODEC_STRING` | Unsupported H265 codec string \{codec} | The H.265 profile encoded in '\{codec}' is not supported by GStreamer in this build. See the supported codecs list for alternatives. | [File Format Support](https://img.ly/docs/cesdk/react-native/import-media/file-format-support-8cdc84/) |
| `CODEC.VIDEO_BITRATE_INVALID` | Video bitrate must be equal or greater than 0. | Pass a non-negative \`bitrate\` value to the video encoder configuration. | |
| `CODEC.VIDEO_DECODER_CREATE_FAILED` | Could not create video decoder: \{reason} | The platform's video decoder rejected the configuration. Reason: \{reason} | |
| `CODEC.VIDEO_DECODER_FATAL` | Encountered fatal video decoder error: \{reason} | The decoder produced an unrecoverable error during playback. Reason: \{reason} | |
| `CODEC.VIDEO_DECODER_UNRESPONSIVE` | Video decoder has been unresponsive for more than 10 seconds. | Possible decoder deadlock or hardware stall. Reset the decoder or fall back to a software path. | |
| `CODEC.VIDEO_DECODE_UNSUPPORTED` | Video decoding is not supported on this platform. | This build does not include a video decoder. Rebuild with the relevant codec backend, or run on a supported platform. | |
| `CODEC.VIDEO_ENCODER_BUSY` | Already encoding another video. | Wait for the current video encoding session to finish before starting another. | |
| `CODEC.VIDEO_ENCODER_CREATE_FAILED` | Could not create video encoder: \{reason} | The platform's video encoder rejected the configuration. Reason: \{reason} | |
| `CODEC.VIDEO_ENCODER_FATAL` | Encountered fatal video encoder error: \{reason} | The video encoder stopped during the export. Lower the resolution, choose a higher H.264 level, or use another codec. | |
| `CODEC.VIDEO_ENCODER_INVALID_RESOLUTION` | Invalid resolution for video encoder: \{width} x \{height} | Resolution must be > 0 in both dimensions. Got \{width}x\{height}. | |
| `CODEC.VIDEO_ENCODE_UNSUPPORTED` | Video encoding is not supported on this platform. | This build does not include a video encoder. Rebuild with the relevant codec backend, or run on a supported platform. | |
| `CODEC.VIDEO_SESSION_CREATE_FAILED` | VTCompressionSessionCreate failed. | VideoToolbox could not create a compression session for the requested codec and resolution. The codec may be unsupported on this hardware. | |
| `CODEC.VIDEO_TRACK_NOT_FOUND` | Couldn't find video track in AVContainer. | The container has no video track. Use a media file with a video stream. | |
| `CODEC.WEBCODECS_INVALID_FORMAT` | Invalid codec string format for WebCodecs: \{codec} | WebCodecs requires a fully-qualified codec id. '\{codec}' is not in the expected format. | |
| `CODEC.WEBCODECS_NOT_AVAILABLE_NODE` | WebCodecs API is not available in Node.js. | Run in a browser environment, or use a different codec backend on Node. | |
| `CODEC.WEBCODECS_NOT_SUPPORTED` | WebCodecs API is not supported. | The current browser does not expose the WebCodecs API. Upgrade to a supported version. | |
## COLOR
ICC color profiles, document CMYK profiles, and color management.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `COLOR.DOCUMENT_PROFILE_NOT_SET` | The document has no CMYK profile. | Set a CMYK profile before reading its information. | |
| `COLOR.IMAGE_DECODE_FAILED` | The CMYK image data could not be decoded. Size: \{byteCount} bytes. | The CMYK or YCCK samples of the image could not be read. The image loads without color management instead, so its colors can be wrong. | |
| `COLOR.IMAGE_TRANSFORM_FAILED` | The color profile of the image at \{uri} could not be applied. | The profile could be read, but the engine could not convert colors with it. The image loads without color management, so its colors can be wrong. | |
| `COLOR.IMPORTED_IMAGE_COLOR_SPACE_INVALID` | The imported image color space value \{value} is not valid. | Use DeviceGray, DeviceRGB, DeviceCMYK or ICCBased. | |
| `COLOR.IMPORTED_IMAGE_COLOR_TRANSFORM_INVALID` | The imported image color transform value \{value} is invalid. | Use 0 or 1, or omit the color transform. | |
| `COLOR.IMPORTED_IMAGE_DECODE_INVALID` | The imported image decode ranges are invalid. | Provide two finite numbers per image component, or omit decode for identity. | |
| `COLOR.IMPORTED_IMAGE_DEFINITION_NOT_FOUND` | The image fill has no active imported image definition. | Attach a definition to the fill's current image before reading it. | |
| `COLOR.IMPORTED_IMAGE_HAS_SOURCE_SET` | The image fill uses a source set. | Remove the source set before attaching a definition of imageFileURI. | |
| `COLOR.IMPORTED_IMAGE_NO_IMAGE` | The image fill has no image to describe. | Set fill/image/imageFileURI before attaching its imported image definition. | |
| `COLOR.IMPORTED_IMAGE_PROFILE_MISMATCH` | The imported image profile does not match its color space. | Provide profile bytes only for ICCBased, and declare ICCBased only when the effective space is ICCBased. | |
| `COLOR.IMPORTED_IMAGE_RECORD_INVALID` | The imported image record is invalid. | Keep the record below 64 KiB and name its format when it is present. | |
| `COLOR.PROFILE_ASSIGNMENT_SUPERSEDED` | The color profile at \{uri} was not assigned, because a later change replaced the request. | Another profile assignment, a profile removal or a scene load happened while this profile was loading. The later change is in effect. Set the profile again if you still want it. | |
| `COLOR.PROFILE_DATA_SPACE_MISMATCH` | The color profile data describes \{space}, but \{expected} is required here. | Pass the bytes of a profile whose color space matches the one it is used for. The document CMYK profile has to be a CMYK profile. The previous profile stays in use. | |
| `COLOR.PROFILE_INVALID` | The ICC profile data could not be read. Size: \{byteCount} bytes. | The bytes are not a valid ICC profile. Check that the file is complete and was not truncated by the download. | |
| `COLOR.PROFILE_MISSING` | The color profile at \{uri} could not be loaded. | Check that the URI is reachable and returns valid ICC profile data. A setter keeps the previous profile. A profile named by the scene or the setting is skipped: colors of that space use the next profile the engine can load, and are previewed unmanaged when there is none. | |
| `COLOR.PROFILE_NOT_LOADED` | The CMYK color profile is not loaded yet, so the color cannot be converted. | The call started the load. Run \`update()\` and convert again. Converting without the profile would return a different color than the engine renders. | |
| `COLOR.PROFILE_SPACE_MISMATCH` | The color profile at \{uri} describes \{space}, but \{expected} is required here. | Point the profile at a file whose color space matches the one it is used for. A document profile and the \`fallbackCMYKProfileUri\` setting both have to name a CMYK profile. A setter keeps the previous profile. A profile named by the scene or the setting is skipped, and colors use the next profile. | |
| `COLOR.PROFILE_UNSUPPORTED_SPACE` | The ICC profile uses the color space \{space}, which is not supported. | Use an RGB, CMYK or Gray profile. Other color spaces cannot be opened. | |
| `COLOR.RENDERING_INTENT_INVALID` | The rendering intent value \{value} is not valid. | Use 0 (Perceptual), 1 (RelativeColorimetric), 2 (Saturation) or 3 (AbsoluteColorimetric). The previous rendering intent stays in use. | |
## COMPUTE
Compute contexts (Metal, GL, CPU) and capability negotiation.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `COMPUTE.COLOR_SPACE_BIT_DEPTH_UNSUPPORTED` | The current device does not support the required pixel bit depth for the requested color space. | Wide-gamut color spaces require 10+ bpp surfaces. Use sRGB on devices that don't expose deep-color buffers. | |
| `COMPUTE.COLOR_SPACE_DISPLAY_UNSUPPORTED` | The current device does not support displaying the requested color space. | The device's display pipeline cannot render this color space. Fall back to sRGB or query supported spaces first. | |
| `COMPUTE.COLOR_SPACE_UNSUPPORTED_BY_ENGINE` | The engine does not support the requested color space on this platform. | Pick a supported color space (sRGB / Display P3) for this build, or rebuild the engine with the appropriate Skia configuration. | |
| `COMPUTE.CONTEXT_CREATE_FN_NOT_FOUND` | Context creation function not found for type \{type}. | \`createContext()\` was called with a context type the build was not compiled with. Rebuild with the appropriate \`HAS\_UBQ\_\*\_CONTEXT\` macro defined, or pass a supported type. | |
| `COMPUTE.DATA_PROVIDER_EMPTY` | \{kind} data provider is empty. | No bytes have been registered for this resource yet. Ensure the data was provided before reading. | |
| `COMPUTE.DATA_PROVIDER_NOT_CONTIGUOUS` | Data provider does not expose contiguous data. | The active data provider serves data in chunks. Use the streaming API instead of asking for a contiguous buffer. | |
| `COMPUTE.DATA_PROVIDER_NOT_FULLY_AVAILABLE` | \{kind} data provider is not fully available. | The provider is still streaming. Wait for the resource state to transition to Ready before requesting the full buffer. | |
| `COMPUTE.DATA_PROVIDER_TOO_LARGE` | \{kind} data provider too large for contiguous data. | The resource exceeds the contiguous-buffer threshold. Read in chunks via the streaming API instead. | |
| `COMPUTE.EGL_CREATE_CONTEXT_FAILED` | EGL create context error. | \`eglCreateContext\` returned \`EGL\_NO\_CONTEXT\`. The requested GL version / attributes are not supported by the driver. | |
| `COMPUTE.EGL_CREATE_SURFACE_FAILED` | EGL create surface error. | \`eglCreateWindowSurface\` / \`eglCreatePbufferSurface\` returned \`EGL\_NO\_SURFACE\`. The native window or pbuffer attributes are incompatible with the chosen EGL config. | |
| `COMPUTE.EGL_INVALID_CONTEXT_TYPE` | Invalid context type passed to the creation function. | The EGL context factory received an unexpected type tag. Confirm the caller selects one of the supported context types. | |
| `COMPUTE.EGL_NO_CONFIGS_MATCH` | No EGL configs match the requested attribute list. | The requested EGL config attributes (color depth, surface type, GL profile) are not satisfiable on this device. Relax the attribute list or fall back to a CPU context. | |
| `COMPUTE.EGL_NO_DISPLAY` | EGL display unavailable. | \`eglGetDisplay\` returned \`EGL\_NO\_DISPLAY\`. The platform does not expose a usable EGL display — fall back to a CPU context. | |
| `COMPUTE.EGL_OPERATION_FAILED` | EGL \{operation} error: \{reason} | The EGL driver reported a failure during \`\{operation}\`. Inspect \`reason\` for the underlying EGL error string and ensure the platform's EGL stack is initialized correctly. | |
| `COMPUTE.EMSCRIPTEN_MAKE_CONTEXT_CURRENT_FAILED` | Could not make the WebGL context current. | \`emscripten\_webgl\_make\_context\_current\` failed. The browser may have lost the context or the canvas was detached from the DOM. | |
| `COMPUTE.GR_DIRECT_CONTEXT_CREATE_FAILED` | Creating a Skia GrDirectContext failed. | Skia could not initialize a direct GPU context from the current EGL/GL surface. Inspect Skia logs for the underlying cause; falling back to a CPU context is the safe option. | |
| `COMPUTE.HTTP_DATA_NO_BUFFER` | HTTP data provider has no buffer. | The HTTP data provider has not yet allocated its receive buffer. Wait for the first chunk before reading. | |
| `COMPUTE.MP3_PARSE_TRACK_DATA_FAILED` | Failed to parse MP3 file: could not load track data. | The MP3 parser could not extract track frames. The file may be truncated or have an unsupported container variant. | |
| `COMPUTE.MP3_PARSE_TRACK_METADATA_INVALID` | Failed to parse MP3 file: invalid track metadata (channels, sample rate, or frames). | The MP3 header lists impossible values for channels / sample rate / frames. Re-encode the file. | |
| `COMPUTE.MP4_DURATION_ZERO` | MP4 duration is zero. | The container reports zero duration. The file may be truncated or be a fragmented MP4 missing the duration box. | |
| `COMPUTE.MP4_TIMESCALE_ZERO` | MP4 timescale is zero. | The container reports zero timescale. The header is malformed; regenerate the file. | |
| `COMPUTE.OPFS_READ_FAILED` | Failed to read OPFS data. | The Origin Private File System rejected the read. The file may have been removed or the browser revoked access. | |
| `COMPUTE.SKIA_GL_INTERFACE_INVALID` | Skia OpenGL interface failed validation. | The GL function pointers Skia loaded for this context do not satisfy its requirements. Verify the GL driver advertises the extensions Skia depends on. | |
| `COMPUTE.VIDEO_UNSUPPORTED_AUDIO_TRACKS` | Video has \{count} unsupported audio track\{plural}. | Tracks with unsupported codecs were removed. Re-encode with AAC or another supported codec to retain audio. | |
## EDITOR
Editor state, history, selection, commands.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `EDITOR.AUDIO_BUFFER_INVALID_SIZE` | Invalid audio buffer: size \{bufferSize} is not a multiple of frame size \{frameSize}. | Audio buffer length must be aligned to the frame size. Trim the buffer to a multiple of \{frameSize} bytes before submitting. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_BUFFER_INVALID_URI` | Invalid buffer URI: \{uri} | The audio buffer URI '\{uri}' does not resolve to a registered buffer. Confirm the buffer was created and the URI matches. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_BUFFER_NO_DATA` | No buffer data available. | The audio buffer block has no data registered for its file URI. Ensure data is written to the buffer before requesting chunks. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_DECODER_CREATE_FAILED` | Could not create audio decoder: \{reason} | The platform's audio decoder rejected the input. Confirm the codec is supported on this platform. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_DECODE_FAILED` | Fatal audio decoding error: \{reason} | The audio decoder produced an unrecoverable error during playback. The source may be corrupted or use an unsupported format. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_FETCH_FAILED` | Failed to fetch audio. | The audio resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_INVALID_RANGE` | Invalid range requested: start = \{start}, end = \{end}. | Audio chunk ranges must satisfy 0 \<= start \< end. Adjust the request bounds and retry. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_NOT_LOADED` | The audio has not been loaded yet. | Call forceLoadAVResource(block, callback) or wait for the resource state to reach Ready before querying audio metadata. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AUDIO_UNSUPPORTED_FORMAT` | Unsupported audio format with channels: \{channels}, bits: \{bits}, sample format: \{sampleFormat}. | The engine cannot resample this combination on the current platform. Re-encode the audio to a supported profile. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AV_BLOCK_INVALID_WITH_HINT` | The block with ID \{id} is not valid. It may have been deleted, e.g., when a new scene was loaded. | Re-resolve the block id (\{id}) before calling AV APIs. Async callbacks frequently outlive their target block. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AV_DURATION_UNDEFINED` | The AV container duration is undefined. | The decoder could not determine the resource's total duration. The container may be malformed or use an unsupported codec. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AV_OPERATION_AUDIO_OR_VIDEO_FILL` | This operation is only supported for audio blocks and video fills. | Pass an audio block, or resolve the video fill of the block via getFill(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AV_OPERATION_BLOCK_TYPE_UNSUPPORTED` | This operation is only supported for video fills and audio blocks. | Resolve the video fill of the block via getFill(block), or pass an audio block directly. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.AV_OPERATION_VIDEO_ONLY` | This operation is only supported for video fills. | Only blocks whose fill is a video fill expose video-specific metadata. Audio blocks don't apply here. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NOT_ATTACHED_TO_PAGE` | The target block is not attached to the page. | Add the block as a child of the page before setting it as the page's duration source. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.BLOCK_NOT_A_PAGE` | The given page block is not a page. | The first argument must be a page block. Use api.block.findByType('//ly.img.ubq/page') to obtain one. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.BLOCK_NO_DURATION` | The target block has no duration. | The block has no Duration component. Confirm the block type supports durations, or check via supportsDuration(block) first. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NO_DURATION_AS_PAGE_SOURCE` | The target block doesn't support duration and therefore cannot be duration source. | Pick a block that has a Duration component (e.g. video fill, audio, or track) to drive the page's duration. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.BLOCK_NO_DURATION_SUPPORT` | The target block doesn't support durations. | Duration applies only to time-aware blocks (pages, tracks, video/audio fills). Use supportsDuration(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NO_PLAYBACK_CONTROL_SUPPORT` | The target block doesn't support playback control. | Playback control (looping, muted, speed, volume) applies only to AV-source blocks. Use supportsPlaybackControl(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NO_PLAYBACK_SUPPORT` | The target block doesn't support playback. | Playback time applies only to blocks with a PlaybackTime component (scenes, pages, video/audio). Use supportsPlaybackTime(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NO_TIME_OFFSET_SUPPORT` | The target block doesn't support time offsets. | Time offsets apply only to time-aware children of a track. Use supportsTimeOffset(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.BLOCK_NO_TRIM_SUPPORT` | The target block doesn't support trimming. | Trimming applies only to video fills, audio blocks, and similar AV-source blocks. Use supportsTrim(block) before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_CLAMP_ACROSS_SCENES` | Cannot clamp camera to elements of different scenes. | All blocks passed to camera clamping must belong to the same scene. Group by scene before calling. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_CLAMP_BLOCKS_WITHOUT_SCENE` | Cannot clamp camera to blocks without a scene. | Attach the blocks to a scene before enabling camera clamping. Floating blocks are not eligible. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_CLAMP_EMPTY_BLOCKS` | Cannot clamp camera to an empty block list. | Provide at least one block (or the scene itself) to clamp against. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_CLAMP_NO_PAGES` | No pages found in the scene. | Camera clamping with page-carousel features requires at least one page block. Add a page before enabling clamping. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.CAMERA_CLAMP_PAGE_NOT_LAYOUTED` | The page has not been layouted. | Layout has not run yet for this page. Trigger an engine update or wait one frame before enabling camera clamping. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.CAMERA_ENTITY_INVALID` | Camera entity is invalid. | Could not resolve a valid camera for the provided scene or camera id. Confirm the scene has a main camera and the id references it. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_NOT_VALID` | Camera is not valid. | The active scene has no camera entity. Create the scene through the normal \`scene.create\*()\` path so the camera is set up automatically. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `EDITOR.CAMERA_POSITION_CLAMP_NOT_ENABLED` | This block does not have camera position clamping enabled. | Enable camera position clamping for this block first, or check whether it is enabled before disabling it. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_ZOOM_CLAMP_LIMITS_INVALID` | To enable camera zoom clamping, at least one of minZoomLimit or maxZoomLimit must be positive. | Set at least one of minZoomLimit or maxZoomLimit to a positive value. Use a negative value on the other side to leave it unbounded. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_ZOOM_CLAMP_LIMITS_ORDER` | The minZoomLimit has to be smaller or equal to maxZoomLimit. | Swap or adjust the values so minZoomLimit \<= maxZoomLimit. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_ZOOM_CLAMP_NOT_ENABLED` | This block does not have camera zoom clamping enabled. | Enable camera zoom clamping for this block first, or check whether it is enabled before disabling it. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CAMERA_ZOOM_LIMITS_NOT_FINITE` | The zoom limits must be finite numbers. | Both minZoomLimit and maxZoomLimit must be finite. Use a negative value to indicate no limit on that side. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.COMMAND_ARG_TYPE_MISMATCH` | Argument at index \{index} for command '\{command}' doesn't match expected type '\{expectedType}'. Got '\{actualType}' instead. | Convert the argument to '\{expectedType}' or pass a different value matching the command signature. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.COMMAND_NOT_REGISTERED` | \{command} is not a registered command. | Command '\{command}' was not found in the registry. Confirm the name is correct and that the responsible module is loaded. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.COMMAND_RETURN_TYPE_MISMATCH` | Returned value for command '\{command}' did not match expected type (got '\{actualType}', expected '\{expectedType}'). Did the responsible system never execute? | The system handling '\{command}' returned a value of the wrong type. Verify the handler is registered and producing '\{expectedType}'. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.COMMAND_UNIMPLEMENTED` | Unimplemented. | The command type has no implementation of this method. Subclasses must override determineType() and any other defaults they rely on. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.COMMAND_WRONG_ARG_COUNT` | Received \{received} arguments for command \{command}, but expected \{expected}. | Command '\{command}' takes \{expected} arguments. Adjust the call to match the documented signature. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CROP_ELEMENT_NOT_CROPPABLE` | This element can't be cropped. | Crop operations require a block with a cropped fill (image or video). Verify api.block.supportsCrop(id) before calling \{operation}. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CROP_NO_SELECTED_ELEMENT` | Select an element to crop. | Select a block before invoking \{operation}. Use api.block.findAllSelected() to verify a selection exists. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.CURRENT_PAGES_DUPLICATE_PAGE` | The list of current pages holds the page \{block} more than once. | Pass each page once. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.CURRENT_PAGES_INVALID_COUNT` | The list of current pages must hold at least one page. | Pass one page block, or more distinct page blocks. Two pages form a facing-page view. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.FONT_DATA_LOAD_FAILED` | Font resource ready but failed to load font data: \{uri}. | The font resource finished loading but the data could not be parsed. The payload may be empty or use an unsupported font format. | [Custom Fonts](https://img.ly/docs/cesdk/react-native/text/custom-fonts-9565b3/) |
| `EDITOR.FONT_LOAD_FAILED` | Failed to load font '\{uri}': \{reason}. | The font resource at '\{uri}' could not be loaded (\{reason}). Verify the URI is reachable and the asset is registered. | [Custom Fonts](https://img.ly/docs/cesdk/react-native/text/custom-fonts-9565b3/) |
| `EDITOR.FONT_METRICS_EXTRACT_FAILED` | Failed to extract font metrics from: \{uri}. | The font file at '\{uri}' could not be parsed for metrics. Confirm the file is a valid TTF/OTF and not corrupted. | [Custom Fonts](https://img.ly/docs/cesdk/react-native/text/custom-fonts-9565b3/) |
| `EDITOR.FONT_URI_EMPTY` | Font file URI cannot be empty. | Pass a non-empty URI pointing to a font file registered with the engine. See addLocalAssetSourceFromJSON or registerFont docs for setup. | [Custom Fonts](https://img.ly/docs/cesdk/react-native/text/custom-fonts-9565b3/) |
| `EDITOR.GLOBAL_SCOPE_INVALID_VALUE` | The global scope \{scope} holds an invalid value. | The stored value of '\{scope}' is not Allow, Deny or Defer, so the settings of a loaded scene may be corrupt. Call setGlobalScope() to set it again. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.HISTORY_HANDLE_INVALID` | Could not obtain a valid history handle. | The editor has no active history buffer. Confirm a scene is loaded and the engine has fully initialized before invoking history APIs. | [Undo And History](https://img.ly/docs/cesdk/react-native/concepts/undo-and-history-99479d/) |
| `EDITOR.MEMORY_QUERY_UNAVAILABLE` | Could not obtain \{kind} memory for the current platform. | The platform does not expose \{kind}-memory statistics, or the query failed. Treat memory metrics as best-effort on this platform. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.MOVEMENT_CONSTRAINT_NEGATIVE` | setMovementConstraint value must be non-negative; call removeMovementConstraint to clear a constraint. | Pass a non-negative distance, or call removeMovementConstraint(targets) instead of using a negative sentinel. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.NEGATIVE_DURATION` | Negative durations are not supported. | Pass a non-negative duration. Use 0 for an empty interval or std::numeric\_limits\::infinity() for unbounded. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.NO_SCENE_AVAILABLE` | No scene available. | The editor has no active scene. Load or create one before invoking this API. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.NO_UNDO_STEP_AVAILABLE` | No undo step available to remove. | The undo stack is empty. Verify the editor has performed at least one undoable action before calling removeUndoStep(). | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.PADDING_NOT_FINITE` | The padding values must be finite numbers. | All four padding components must be finite. Replace any NaN or infinity with a concrete number (zero is fine). | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.PAGES_NOT_RESIZED` | Pages could not be resized. | Resize failed for one or more pages. Confirm each page is unlocked (api.block.isTransformLocked / isAllowedByScope) and that the requested width and height are finite and positive. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.PAGE_CONTENT_ASPECT_RATIO_INVALID` | ContentAspectRatio preset cannot be used to create a new page; it only applies to blocks with intrinsic content dimensions. | Pages have no intrinsic content size. Use a FreeAspectRatio, FixedAspectRatio, or FixedSize preset instead. | |
| `EDITOR.PAGE_RESIZE_DISABLED` | Page resizing interaction is disabled in UBQ settings. | Enable page resizing via settings (e.g. 'features/page/resize') before invoking the resize interaction. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.PAGE_RESIZE_FIXED_ASPECT_ONLY` | Page resizing interaction is restricted to fixed aspect ratio in UBQ settings. | Allow free-aspect resizing in settings, or constrain the interaction to the configured fixed aspect ratio. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `EDITOR.PLAYBACK_SPEED_OUT_OF_RANGE` | Invalid playback speed \{speed}. Must be between 0.25 and 3.0. | For non-video blocks playback speed must be in \[0.25, 3.0]. Video fills support a wider range. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.PLAYBACK_SPEED_TOO_LOW` | Invalid playback speed \{speed}. Must be at least 0.25. | Pass a playback speed of at least 0.25. Speeds below this are not supported. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.RESOURCE_LOAD_FAILED` | Failed to load resource \{uri}. | The resource at '\{uri}' could not be loaded. Check that the URI is reachable, CORS allows access, and the format is supported. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.RESOURCE_URI_EMPTY` | The resource has an empty URI. | Set a non-empty file URI on the video fill or audio block before requesting a load. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.ROLE_NOT_FOUND` | Role \{role} not found. | '\{role}' is not a known editor role. Valid roles are defined by the EditorRole enum (e.g. Adopter, Creator). | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SAFE_AREA_INSETS_NEGATIVE` | Safe area inset values must be non-negative. | Each inset describes a non-negative distance from the viewport edge. Use 0 to disable an inset rather than a negative value. | |
| `EDITOR.SAFE_AREA_INSETS_NOT_FINITE` | Safe area inset values must be finite numbers. | All four inset components must be finite. Replace any NaN or infinity with a concrete number (zero is fine). | |
| `EDITOR.SCENE_CONTENT_EMPTY` | Received empty scene content. | The scene-serialization command was called with an empty payload. Pass the serialized scene string returned by \`scene.saveToString(...)\`. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `EDITOR.SCENE_DECOMPRESS_FAILED` | Failed to decompress scene data. | The compressed scene payload could not be decoded. The file may be truncated or produced by an incompatible compressor. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.SCENE_ENTITY_INVALID` | Scene entity is invalid. | Could not resolve a valid scene for the provided id. Confirm the id is a scene or a camera attached to a scene. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.SCENE_INPUT_INVALID` | Received scene input is not a valid serialization. | The payload does not parse as a CE.SDK scene document. Confirm it was produced by api.scene.saveToString() or saveToArchive(). | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.SCENE_MISSING_REQUIRED_KEY` | Invalid scene file: "\{key}" key not found. | The serialized scene is missing the required top-level "\{key}" field. The file may be truncated or produced by an incompatible writer. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.SCENE_REQUIRES_URL_LOAD` | Scene is part of an archive and must be loaded via URL. | Use api.scene.loadFromURL() or loadFromArchive() rather than loadFromString() for archive-bound scenes. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.SCENE_SIZE_UNAVAILABLE` | Could not get scene size. Scene may not have a layout yet. | Wait for the first layout pass to complete (e.g. after the next \`api.update()\`) before reading scene dimensions. | |
| `EDITOR.SETTING_ENUM_VALUE_NOT_FOUND` | Enum value \{value} not found. | '\{value}' is not a member of the target enum. Call getSettingEnumOptions() to list valid values. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SETTING_NOT_ENUM` | Setting \{keypath} is not an enum. | Use the type-specific getter/setter (Bool/Int/Float/String/Color) instead of the Enum variant for non-enum settings. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SETTING_NOT_FOUND` | Setting \{keypath} not found. | No setting registered at '\{keypath}'. Use findAllSettings() to discover valid key paths. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SETTING_TYPE_MISMATCH` | Setting \{keypath} has type \{kind}. | Call getSetting\{kind}() or setSetting\{kind}() for '\{keypath}'. getSettingType() returns the type of a setting. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SETTING_TYPE_UNSUPPORTED` | Unsupported setting type for \{keypath}. | The setting at '\{keypath}' has a type the public API does not expose. Use getSettingType() to discover the supported categories. | [Settings](https://img.ly/docs/cesdk/react-native/settings-970c98/) |
| `EDITOR.SPLIT_BLOCK_FAILED` | Could not split block of type "\{blockType}": \{reason} | Splitting a block failed at an intermediate step (\{reason}). Confirm the block via api.block.isValid(block) and api.block.supportsDuration(block), and that the split time lies inside the block's time range (api.block.getTimeOffset(block) to getTimeOffset + getDuration). | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.THUMBNAIL_SAMPLES_INVALID` | Can't generate thumbnail sequence with samplesPerChunk \<= 0. | Pass a positive samplesPerChunk so each chunk contains a non-empty waveform sample window. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.TOUCH_ROTATE_TOO_MANY_POINTS` | Touch rotate event has more than two touch points. | The rotate gesture is only defined for two-finger input. Cancel the gesture when a third pointer joins. | |
| `EDITOR.TRIM_OFFSET_UNDEFINED` | The trim offset is undefined. | The AV resource duration or playback speed yields a non-finite trim offset. Confirm the resource is loaded and playback speed is positive. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.UNIT_CONVERSION_FAILED` | Failed to convert to given design unit. | The requested unit conversion is not supported in this context. Confirm the scene has a configured DPI and design unit. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.UNSUPPORTED_SERIALIZATION_FORMAT` | Unsupported serialization format. | The scene declares a serialization format this engine version cannot read. Re-save the scene with the current engine, or upgrade the engine. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.VALUE_NOT_FINITE` | The value \{value} must be a finite number. | NaN and infinity are not accepted. Pass a finite floating-point value. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.VECTOR_INVALID_MIRROR_MODE` | Invalid mirror mode \{mode}. Expected 0 (None), 1 (AngleAndLength), or 2 (AngleOnly). | Pass 0, 1, or 2 — values map to the VectorHandleMirrorMode enum (None, AngleAndLength, AngleOnly). | [Vector Edit](#broken-link-f3a7b2) |
| `EDITOR.VECTOR_NODE_NOT_DELETABLE` | Cannot delete node: contour must have at least 3 nodes. | A vector contour cannot be reduced below 3 nodes. Delete the entire contour or merge it with another path instead. | [Vector Edit](#broken-link-f3a7b2) |
| `EDITOR.VECTOR_NO_CONTROL_POINT_SELECTED` | No vector control point is selected. | Vector control-point operations require an active selection. Select a control point first before invoking this API. | [Vector Edit](#broken-link-f3a7b2) |
| `EDITOR.VECTOR_NO_NODE_SELECTED` | No vector node is selected. | Vector node operations require an active selection. Select a node first via the vector editor UI or programmatically before invoking this API. | [Vector Edit](#broken-link-f3a7b2) |
| `EDITOR.VECTOR_NO_PATH_EDITING` | No vector path is being edited. | Enter vector edit mode on a vector block before invoking this API. Vector path mutations require an active edited path. | [Vector Edit](#broken-link-f3a7b2) |
| `EDITOR.VIDEO_DECODER_CREATE_FAILED` | Could not create video decoder: \{reason} | The platform's video decoder rejected the input. Confirm the codec is supported on this platform — see CE.SDK capability docs. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.VIDEO_DECODE_FAILED` | Fatal video decoding error: \{reason} | The decoder produced an unrecoverable error during playback. The source may be corrupted or use an unsupported codec profile. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.VIDEO_FETCH_FAILED` | Failed to fetch video. | The video resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.VIDEO_NOT_LOADED` | The video has not been loaded yet. | Call forceLoadAVResource(block, callback) or wait for the resource state to reach Ready before querying video metadata. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.ZOOM_AUTO_FIT_NOT_ENABLED` | This block does not have zoom auto-fit enabled. | Call enableZoomAutoFit(block) before disabling, or check isZoomAutoFitEnabled(block) first. | [Editing Workflow](https://img.ly/docs/cesdk/react-native/concepts/editing-workflow-032d27/) |
| `EDITOR.ZOOM_BLOCK_NOT_LAYOUTED` | Could not zoom to block. Block hasn't been layouted yet. | Wait for the first layout pass to complete (e.g. after the next \`api.update()\`) before zooming to the block. | |
| `EDITOR.ZOOM_NO_CAMERA` | No valid camera exists, can't zoom to block. | Ensure the scene has been initialized with a camera before invoking zoom-to-block. | |
## ENCODE
Image and video encoding/export.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `ENCODE.AUDIO_BLOCK_DIRECT_EXTRACTION_UNSUPPORTED` | Unable to extract MP4 audio directly from audio block. The audio file may not be in a compatible format or may not be loaded. | Re-encode the audio block as MP4-compatible AAC before attempting direct extraction, or load the block first. | |
| `ENCODE.AUDIO_BLOCK_INVALID` | Invalid audio block entity. | The id does not reference a live audio block. Re-resolve it before exporting and verify with api.block.isValid(block). | |
| `ENCODE.AUDIO_BUFFER_EMPTY` | Audio buffer is empty. | The audio block has zero bytes of audio data. Provide a valid, non-empty audio source for the block before exporting. | |
| `ENCODE.AUDIO_BUFFER_NOT_FOUND` | Audio buffer not found. | The audio block's buffer is not registered. Ensure audio data was provided before export. | |
| `ENCODE.AUDIO_CHANNEL_COUNT_INVALID` | Number of audio channels must be \{expected}. | Audio export requires \{expected} channels. Convert mono/multichannel sources first. | |
| `ENCODE.AUDIO_CHUNK_READ_FAILED` | Failed to read audio chunk data from data provider. | The data provider returned no bytes for an audio chunk. The source may be truncated. | |
| `ENCODE.AUDIO_CONTEXT_NOT_AVAILABLE_DURING_EXPORT` | Audio context not available during export. | The audio context was destroyed mid-export. Keep it alive until the export callback fires. | |
| `ENCODE.AUDIO_CONTEXT_PARAMS_INVALID` | Invalid audio context parameters. | Pass a supported sample rate and channel count in the audio export options before exporting. | |
| `ENCODE.AUDIO_CONTEXT_UNAVAILABLE` | No audio context available for export. | Audio context is not initialized. Create one with the active compute context before exporting. | |
| `ENCODE.AUDIO_DURATION_INVALID` | Duration must be a positive finite number. | Audio export duration must be > 0 and finite. Check the source has a well-defined duration. | |
| `ENCODE.AUDIO_EXPORT_OPTIONS_NOT_OBJECT` | Audio export options must be a valid JSON object. | Pass the audio export options as a JSON object string, e.g. \{"sampleRate": 48000}. | |
| `ENCODE.AUDIO_EXPORT_OPTIONS_PARSE_FAILED` | Failed to parse audio export options: \{reason} | The audio export options string is not valid JSON (\{reason}). Fix the JSON syntax and retry. | |
| `ENCODE.AUDIO_FRAME_CALC_INVALID` | Invalid audio frame calculations. | Computed frame counts are nonsensical (zero or negative). Verify duration, sample rate, and processing rate. | |
| `ENCODE.AUDIO_FRAME_SIZE_CALC_INVALID` | Invalid audio frame size calculations. | Frame-size math produced zero or negative values. Verify channel count and bit depth. | |
| `ENCODE.AUDIO_INVALID_SAMPLE_RATE_FOR_TIMESTAMP` | Invalid sample rate for timestamp conversion. | Source audio sample rate is zero or negative. Verify it before computing timestamps. | |
| `ENCODE.AUDIO_MIME_TYPE_INVALID` | Mime type must be "audio/wav" or "audio/mp4". | Pass audio/wav or audio/mp4 as the target mime type for audio export. | |
| `ENCODE.AUDIO_MP4_NO_DATA_MUXED` | No audio data was muxed into MP4 container. | The muxer received no PCM frames. Check the source produced audio packets before finalization. | |
| `ENCODE.AUDIO_MUXER_DESTROYED` | Muxer was destroyed before finalization. | The MP4 muxer was released early. Keep the encode service alive until the result callback fires. | |
| `ENCODE.AUDIO_NO_CHUNKS_IN_RANGE` | No audio chunks found in the specified time range. | The selected time range has no audio data. Adjust start/end times or verify the audio source covers the requested span. | |
| `ENCODE.AUDIO_NO_DATA_CAPTURED` | No audio data captured during export. | The export pipeline produced no audio samples. Verify the source has audible content within the requested range. | |
| `ENCODE.AUDIO_NO_PCM_COLLECTED` | No PCM data was collected. | The decoder returned zero PCM samples. The audio source may be empty or fully silent. | |
| `ENCODE.AUDIO_PROCESSING_RATE_INVALID` | Audio processing rate must be a positive finite number. | Pass a positive, finite audio sample rate in the audio export options before exporting. | |
| `ENCODE.AUDIO_SAMPLE_RATE_INVALID` | Sample rate must be \{expected}. | Audio export requires sample rate \{expected}. Resample the source before exporting. | |
| `ENCODE.AUDIO_SERVICE_UNAVAILABLE` | No audio service available for export. | The engine was built without audio support. Enable it in the build config and rebuild. | |
| `ENCODE.AUDIO_SINGLE_TRACK_INDEX_NONZERO` | Single-track audio container only supports trackIndex=0, got \{index} | For single-track containers, pass trackIndex=0. | |
| `ENCODE.AUDIO_START_TIME_OUT_OF_BOUNDS` | Start time \{start} is out of bounds. Valid range: 0-\{max} | Audio start time \{start} must be within \[0, \{max}]. | |
| `ENCODE.AUDIO_TIME_RANGE_INVALID` | Invalid time range: start=\{start}, end=\{end} | Audio time range must satisfy 0 \<= start \< end. Got start=\{start}, end=\{end}. | |
| `ENCODE.AUDIO_TIME_RANGE_INVALID_AFTER_TRIM` | Invalid time range after applying trim settings and options. | After applying trim/clip parameters the selected range is empty. Adjust start/end times. | |
| `ENCODE.AUDIO_TRACK_INDEX_OUT_OF_BOUNDS` | Audio track index \{index} is out of bounds. Valid range: 0-\{max} | Pass an audio track index within \[0, \{max}]. | |
| `ENCODE.AUDIO_UNSUPPORTED_EXPORT_FORMAT` | Unsupported audio export format. | Use audio/wav or audio/mp4 as the export target. | |
| `ENCODE.BLOCK_MUST_BE_PAGE` | The block to export must be a page. | Video export targets a single page block. Pass a page or call api.scene.getPages() to obtain one. Scenes with multiple pages must be exported one page at a time. | |
| `ENCODE.BLOCK_SIZE_ZERO` | Block to export has size 0. | Set a positive width and height on the block, or pick a different block, before exporting. | |
| `ENCODE.CANCELLED_BY_BLOCK_ERROR` | The export was cancelled due to block \{block} having an error: \{reason} | Block \{block} entered an error state during export (\{reason}). Resolve the block's underlying issue and retry. | |
| `ENCODE.COLOR_MASK_DATA_FAILED` | Color masking data could not be generated. | The renderer failed to produce the color-mask buffer. Retry, or simplify the scene if it has very high resolution. | |
| `ENCODE.COLOR_MASK_DISABLED` | Color masking is not enabled. | Enable color masking via the export options before requesting mask data. | |
| `ENCODE.CONTEXT_AUDIO_CREATE_FAILED` | Could not create audio context. | Audio context creation failed. Ensure the platform exposes an AudioContext and is not in a frozen tab. | |
| `ENCODE.CONTEXT_RENDER_CREATE_FAILED` | Could not create render context. | GPU context creation failed. Confirm the host supports the required backend (WebGL2/Metal) and retry. | |
| `ENCODE.DIRECT_EXTRACTION_UNSUPPORTED` | Direct extraction not supported for this block/mime type combination. | The requested block kind cannot be extracted directly to this mime type. Use a transcoding path instead. | |
| `ENCODE.ENTITY_INVALID` | Entity is invalid. | The block id no longer references a live block. Re-resolve before exporting. | |
| `ENCODE.ENTITY_NOT_PART_OF_PAGE` | Entity is not part of a valid page. | Audio export requires the block to be inside a page. Add the block to a page before exporting. | |
| `ENCODE.EXPORT_CANCELLED` | The export was cancelled by the receiver. | The chunk callback or the progress callback returned false. No further data will be delivered. Start a new export if the result is still needed. | |
| `ENCODE.EXPORT_FAILED` | Export failed. | A non-specific export error was produced. Check earlier log lines for the root cause and retry. | |
| `ENCODE.EXPORT_OPTIONS_NOT_OBJECT` | Export options must be a valid JSON object. | Pass the export options as a JSON object string, e.g. \{"pngCompressionLevel": 6}. | |
| `ENCODE.EXPORT_OPTIONS_PARSE_FAILED` | Failed to parse export options: \{reason} | The export options string is not valid JSON (\{reason}). Fix the JSON syntax and retry. | |
| `ENCODE.GPU_LOST_GENERIC` | GPU context was lost during export rendering. Try exporting at a lower resolution. | Reduce the export resolution or split the scene, then retry. Restart the engine if the GPU context fails to recover. | |
| `ENCODE.GPU_LOST_PDF` | GPU context was lost during PDF export rendering. The scene may contain elements that exceed the device's capabilities. | Lower the export DPI or split the scene into multiple pages, then retry. | |
| `ENCODE.GPU_LOST_SVG` | GPU context was lost during SVG export rendering. Try reducing the size of large images. | Re-encode large source images to a lower resolution before exporting, or restart the engine to recover the GPU context. | |
| `ENCODE.GROUP_INVALID` | Invalid group entity. | The group id does not reference a live group. Re-resolve it before exporting and verify with api.block.isValid(group). | |
| `ENCODE.GROUP_NOT_IN_PAGE_HIERARCHY` | Group entity not found in page hierarchy. | The group is not a descendant of the page passed to the encode call. | |
| `ENCODE.GROUP_NOT_PART_OF_PAGE` | Group is not part of a valid page. | Groups must live under a page. Reparent the group or pick a page descendant. | |
| `ENCODE.GROUP_NO_CHILDREN` | Group has no child blocks. | Audio export requires at least one block in the group. | |
| `ENCODE.IMAGE_JPEG_FAILED` | Failed to encode JPEG. | The JPEG encoder rejected the input. | |
| `ENCODE.IMAGE_JPEG_OOM` | Failed to encode JPEG. Memory allocation failed. | Not enough memory for the JPEG buffer. | |
| `ENCODE.IMAGE_PNG_FAILED` | Failed to encode PNG. | The PNG encoder rejected the input. The image dimensions or pixel format may be unsupported. | |
| `ENCODE.IMAGE_PNG_OOM` | Failed to encode PNG. Memory allocation failed. | Not enough memory for the PNG buffer. Reduce dimensions or free memory. | |
| `ENCODE.IMAGE_READ_PIXELS_FAILED` | Failed to read pixels. | The source image could not be read into a CPU buffer. The compute context may be missing GPU read-back support. | |
| `ENCODE.IMAGE_TGA_OOM` | Failed to encode TGA. Memory allocation failed. | Not enough memory for the TGA buffer. Reduce dimensions or free memory. | |
| `ENCODE.IMAGE_TGA_REQUIRES_RGBA32` | TGA encoding only supports 32-bit RGBA pixel data. | Convert the image to 32-bit RGBA before encoding to TGA. | |
| `ENCODE.IMAGE_UNKNOWN_MIME` | Unknown MIME type for image encoding: \{mimeType} | Mime type '\{mimeType}' is not supported. Use one of image/png, image/jpeg, image/webp, image/tga. | |
| `ENCODE.IMAGE_WEBP_FAILED` | Failed to encode WebP. | The WebP encoder rejected the input. | |
| `ENCODE.IMAGE_WEBP_OOM` | Failed to encode WebP. Memory allocation failed. | Not enough memory for the WebP buffer. | |
| `ENCODE.INSUFFICIENT_RESOURCES` | Not enough resources available on device. Try exporting at a lower resolution. | Reduce the requested export resolution or simplify the scene to fit available memory. | |
| `ENCODE.MASK_BUFFER_FAILED` | Could not acquire mask buffer. Please try again. | The renderer transiently failed to allocate a mask buffer. Retry the export after a short delay. | |
| `ENCODE.MASK_COLOR_OUT_OF_RANGE` | Mask color values must be between 0 and 1. | Clamp each mask color component (r/g/b/a) to \[0, 1] before passing to the export options. | |
| `ENCODE.MIME_TYPE_INVALID` | Invalid mime-type '\{mimeType}', expected '\{a}', '\{b}' or '\{c}'. | Use one of '\{a}', '\{b}', or '\{c}'. Update the asset's mime type at registration time. | |
| `ENCODE.NOT_ALL_RESOURCES_LOADED` | Not all resources were loaded. | Some scene resources are still pending. Subscribe to resource events or poll until all assets reach Ready, then retry. | |
| `ENCODE.OFFSCREEN_CANVAS_CREATE_FAILED` | Could not create offscreen canvas. | Offscreen canvas allocation failed. Confirm the host environment supports the required GPU surface. | |
| `ENCODE.OUTPUT_SIZE_EXCEEDS_MAX` | The output size of \{width}x\{height} px for the export exceeds the maximum supported size \{maxSize} of the device. | Reduce the export resolution so its larger dimension is at most \{maxSize} px. | |
| `ENCODE.OUTPUT_SIZE_INSUFFICIENT_RESOURCES` | Could not export at \{width}x\{height}. Not enough resources available on device. Try exporting at a lower resolution. | Reduce the export resolution from \{width}x\{height} or simplify the scene, then retry. | |
| `ENCODE.PAGE_NO_CHILDREN` | Page has no children. | Audio export requires at least one child block on the page. | |
| `ENCODE.PDF_COLOR_MASK_UNSUPPORTED` | Color masking is not supported for PDF export. | PDF output cannot carry a color mask. Disable color masking or export as PNG, JPEG or WebP instead. | |
| `ENCODE.PDF_CREATE_FAILED` | Failed to create a PDF document. | The PDF writer rejected the document. Check available memory and retry with a smaller scene if needed. | |
| `ENCODE.PDF_CREATE_FAILED_RESOURCES` | Failed to create PDF document. Not enough resources available on device. Try exporting at a lower resolution. | Reduce the page size or DPI and retry. Very large scenes can exceed device memory limits. | |
| `ENCODE.PDF_RENDER_SIZE_EXCEEDS_MAX` | The effective rendering size of \{width}x\{height} px (at \{dpi} DPI) for the PDF export exceeds the maximum supported texture size \{maxSize} of the device. Try reducing the scene DPI or the size of the exported block. | Reduce the scene DPI or the export size so the rendered dimensions stay at or below \{maxSize} px. | |
| `ENCODE.PDF_STAGING_WRITE_FAILED` | Failed to write the PDF export to temporary storage. | The document could not be staged on disk, so the export was stopped instead of returning a truncated file. Free up storage space and retry. | |
| `ENCODE.PIXEL_BUFFER_UNEXPECTED_SIZE` | Unexpected pixel buffer size for color analysis. | The pixel buffer dimensions don't match the expected analysis layout. Re-read the buffer or verify the source surface. | |
| `ENCODE.PIXEL_STREAM_NO_DATA` | Failed to encode pixel stream: no data was produced. | Inspect the pixel stream pipeline. The exporter produced an empty result for the requested options. | |
| `ENCODE.RELATIVE_URLS_NOT_SUPPORTED` | Relative URLs are not supported. | Resolve all relative URLs to absolute ones before invoking the operation. | |
| `ENCODE.RESOURCE_DATA_EMPTY` | Empty resource data: \{uri} | The resource at '\{uri}' loaded but returned empty bytes. Re-source the file. | |
| `ENCODE.RESOURCE_LOAD_FAILED_WITH_REASON` | Failed to load resource '\{uri}': \{reason} | The resource at '\{uri}' failed to load (\{reason}). Confirm reachability and supported format. | |
| `ENCODE.RESULT_BUFFER_FAILED` | Could not acquire result buffer. Please try again. | The renderer transiently failed to allocate a result buffer. Retry the export after a short delay. | |
| `ENCODE.STREAM_EXPORT_MIME_TYPE_INVALID` | Streamed export only supports "application/pdf". | Pass application/pdf as the mime type or use exportToBuffer for other formats. | |
| `ENCODE.STREAM_EXPORT_MISSING_RECEIVER` | Streamed export was started without a data receiver. | Pass a chunk callback to the streamed export. There is nothing to deliver the data to. | |
| `ENCODE.SVG_CANVAS_CREATE_FAILED` | Failed to create SVG canvas. | The SVG canvas could not be allocated. Check available memory and retry. | |
| `ENCODE.SVG_COLOR_MASK_UNSUPPORTED` | Color masking is not supported for SVG export. | SVG output cannot carry a color mask. Disable color masking or export as PNG, JPEG or WebP instead. | |
| `ENCODE.SVG_MEMORY_ALLOC_FAILED` | Could not allocate memory for SVG export. | Reduce the scene complexity or available pixel count, then retry the SVG export. | |
| `ENCODE.SVG_NO_DATA` | SVG export produced no data. | The renderer produced an empty SVG. Confirm the page has visible content and try again. | |
| `ENCODE.TARGET_NOT_IN_PAGE_HIERARCHY` | Target entity not found in page hierarchy. The entity may not be part of this page. | Verify the target block is a descendant of the page passed to the encode call. | |
| `ENCODE.TRACK_INVALID` | Invalid track entity. | The track id does not reference a live track. Re-resolve it before exporting and verify with api.block.isValid(track). | |
| `ENCODE.TRACK_NOT_IN_PAGE_HIERARCHY` | Track entity not found in page hierarchy. | The track is not a descendant of the page passed to the encode call. | |
| `ENCODE.TRACK_NOT_PART_OF_PAGE` | Track is not part of a valid page. | Tracks must live under a page. Reparent the track or pick a page descendant. | |
| `ENCODE.TRACK_NO_CHILDREN` | Track has no child blocks. | Audio export requires at least one block on the track. | |
| `ENCODE.VIDEO_BLOCK_HAS_ERROR` | The export was cancelled due to block \{block} having an error: \{reason} | Block \{block} reported an error during export: \{reason}. Fix the block before retrying. | |
| `ENCODE.VIDEO_CONCURRENT_ENCODING` | The VideoEncodeService is currently encoding. Concurrent encoding is not supported. | Wait for the current video export to finish before starting another. | |
| `ENCODE.VIDEO_EXPORT_OPTIONS_NOT_OBJECT` | Video export options must be a valid JSON object. | Pass the video export options as a JSON object string, e.g. \{"videoBitrate": 8000000}. | |
| `ENCODE.VIDEO_EXPORT_OPTIONS_PARSE_FAILED` | Failed to parse video export options: \{reason} | The video export options string is not valid JSON (\{reason}). Fix the JSON syntax and retry. | |
| `ENCODE.VIDEO_FILL_AUDIO_REQUIRES_MP4` | Video fill audio extraction is only supported for audio/mp4 format. | Pass audio/mp4 as the target mime type when extracting audio from a video fill. | |
| `ENCODE.VIDEO_FILL_INVALID` | Invalid video fill entity. | The video fill id does not reference a live fill. Re-resolve it with api.block.getFill(block) and confirm api.block.isValid(fill) before exporting. | |
| `ENCODE.VIDEO_FILL_NO_URI` | The video fill block does not have a valid file URI. | Assign a valid fileURI to the video fill before requesting audio extraction. | |
| `ENCODE.VIDEO_FRAME_FAILED` | Failed to encode video frame: \{reason} | The video encoder rejected a frame (\{reason}). Confirm codec compatibility and available memory, then retry. | |
| `ENCODE.VIDEO_HAS_NO_AUDIO_TRACKS` | The video does not contain any audio tracks. | Use a video that has at least one audio track for audio extraction. | |
| `ENCODE.VIDEO_MIME_NOT_MP4` | Mime type is not "video/mp4". | Video export currently only supports video/mp4 as the target mime type. | |
| `ENCODE.VIDEO_NO_AUDIO_DURATION` | Video has no audio duration. | The video's audio track reports zero duration. The file may be malformed. | |
| `ENCODE.VIDEO_PCM_READ_FAILED` | Could not read PCM frames. | The audio pipeline returned no PCM frames during video export. Audio context may have died. | |
| `ENCODE.VIDEO_RESOURCE_LOAD_FAILED` | Failed to load video resource. Please ensure the video file is accessible and valid. | The video fill's URI could not be loaded. Check accessibility and format. | |
## EVENT
Engine event subscription and dispatch.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `EVENT.SUBSCRIPTION_NOT_FOUND` | Event subscription does not exist. | The subscription id does not refer to an active subscription. It may have been unsubscribed already or never created. | [Events](https://img.ly/docs/cesdk/react-native/concepts/events-353f97/) |
## FETCH
HTTP fetch and remote resource loading.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `FETCH.JSON_FETCH_FAILED` | Could not fetch JSON: \{uri} | The JSON resource at '\{uri}' could not be fetched. Check reachability, CORS, and the response status. | |
| `FETCH.JSON_URI_EMPTY` | Could not fetch JSON: URI cannot be empty. | Pass a non-empty URI to the JSON fetch call. | |
| `FETCH.RESOURCE_DATA_EMPTY` | Empty resource data: \{uri} | The resource at '\{uri}' loaded but returned no bytes. Re-source the file or confirm the URL serves content. | |
| `FETCH.RESOURCE_FAILED` | Error fetching resource: \{url} | The HTTP fetch to '\{url}' failed. Inspect network status, response code, and CORS configuration. | |
| `FETCH.URI_INVALID` | Invalid URI: \{uri} | The URI '\{uri}' is malformed or uses an unsupported scheme. Provide a fully qualified URL or a registered scheme. | |
| `FETCH.URL_PARSE_FAILED` | Failed to parse URL: \{url} | The string '\{url}' is not a valid URL. Provide a fully qualified URL including the scheme. | |
## LICENSE
License unlock, API-key handling, entitlement checks.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `LICENSE.ALREADY_UNLOCKED` | License is already unlocked. | The license has already been unlocked successfully. Skip the redundant unlock call. | |
| `LICENSE.API_SERVICE_UNAVAILABLE` | API service is unavailable. Please contact support. | The license API endpoint did not respond. Check network connectivity; if the problem persists, contact support. | |
| `LICENSE.AV_CONCURRENCY_LIMIT_REACHED` | Codec license concurrency limit reached: \{activeCount} of \{concurrencyLimit} licensed instances are already in use. | Wait for another engine instance to finish its video or audio work and retry, or raise the concurrency limit of your license. | |
| `LICENSE.AV_SESSION_ACQUISITION_FAILED` | Could not reserve a video codec license from the license server. | Check network connectivity to the IMG.LY license service and retry the operation. | |
| `LICENSE.AV_SESSION_REQUIRES_API_KEY` | Video codec licensing requires unlocking the engine with an API key. | Initialize the engine with the API key from your dashboard instead of an offline license file. | |
| `LICENSE.CANNOT_DEACTIVATE_OFFLINE` | Cannot deactivate offline license. | Offline licenses cannot be deactivated remotely. Switch to an online license if dynamic activation is required. | |
| `LICENSE.CLAIM_INVALID` | The license has a missing or invalid "\{claim}" value. | The license server issued a license that this SDK version cannot read. Contact support@img.ly and include this message. | |
| `LICENSE.DEACTIVATION_TIMEOUT` | Deactivation timed out. | The license server did not acknowledge the deactivation in time. Retry, or contact support if the issue persists. | |
| `LICENSE.ENGINE_VERSION_INVALID` | The License Key (API Key) you are using requires a newer version of the IMG.LY SDK. Please update to the latest version. | Upgrade the CE.SDK engine to a version compatible with this license. | |
| `LICENSE.ENGINE_VERSION_OUT_OF_RANGE` | This license covers engine versions \{min} up to (but not including) \{max}; this build is \{current}. | Run an engine within the licensed range, or obtain a license that covers \{current}. An open bound is shown as '\*'. | |
| `LICENSE.EXPIRED` | Thanks for using IMG.LY for creative editing. Please note that your license file or commercial use is expired. | Renew your subscription at https://img.ly/pricing to continue commercial use. | |
| `LICENSE.IDENTIFIER_MISMATCH` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this app identifier. Current app identifier "\{current}" differs from license app identifiers: \[\{allowed}] | Your license is tied to specific app identifiers. Adjust the application bundle id to one of '\{allowed}' or update the license. | |
| `LICENSE.INVALID` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid. | Verify the License Key matches your IMG.LY subscription. If issues persist, contact support@img.ly. | |
| `LICENSE.INVALID_API_KEY` | Invalid API key. | The API key did not authenticate. Verify it matches the subscription registered in your IMG.LY dashboard. | |
| `LICENSE.INVALID_FORMAT` | Invalid license format. Please contact support. | The license string could not be parsed. Verify it was copied in full and contact support if the issue persists. | |
| `LICENSE.MISSING` | The license is missing. | Call api.unlockWithLicense() or unlockWithAPIKey() before invoking engine APIs that require entitlements. | |
| `LICENSE.MISSING_FLUENDO_FLAG` | License does not support Fluendo codecs. | Add the 'fluendo' capability flag to your license, or do not request a session that requires it. | |
| `LICENSE.MIXED_UNLOCK_METHODS` | unlockWithLicense shouldn't be called after unlockWithAPIKey. | Choose one unlock method per engine instance. Re-create the engine to switch between license-file and API-key authentication. | |
| `LICENSE.NO_ACTIVE_TO_DEACTIVATE` | No active license to deactivate. | The deactivation request targets a license that is not currently active. Unlock a license first. | |
| `LICENSE.NO_USER_ID` | License does not have a user ID. | User-specific entitlements require a license that carries a user id. Re-issue the license with a user id assigned. | |
| `LICENSE.PLATFORM_MISMATCH` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this platform. Current platform: "\{current}" differs from license platforms: \[\{allowed}] | Your license restricts the platforms this engine may run on. Update the license to include '\{current}' or run on one of: \{allowed}. | |
| `LICENSE.PRERELEASE_NOT_ALLOWED` | This license does not cover prerelease engine builds, and this build is \{current}. | Run a release build of the engine, or obtain a license whose config sets 'allowPrerelease' to true. | |
| `LICENSE.PRODUCT_MISMATCH` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this product. Current build product: "\{current}" differs from license product: "\{required}" | Your license is tied to a specific product. Use a build for '\{required}' or obtain a license for '\{current}'. | |
| `LICENSE.REQUEST_IN_PROGRESS` | License request already in progress. | A license fetch is in flight. Wait for it to finish before calling unlock again. | |
| `LICENSE.SERVER_ERROR` | License server reported an error: \{reason} | Server response: \{reason}. If the message is unexpected, contact IMG.LY support. | |
| `LICENSE.STILL_FETCHING` | License is still being fetched. | The license fetch has not completed. Await the unlock promise/callback before invoking entitlement-gated APIs. | |
| `LICENSE.TARGET_MISMATCH` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this build target. Current build target triplet: "\{target}" | Your license restricts which build targets may run. Update the license to include '\{target}' or run on a permitted target. | |
| `LICENSE.UNSUPPORTED_SESSION_TYPE` | Unsupported session type. | The requested session kind is not recognized. Pass a documented session type identifier. | |
| `LICENSE.VERSION_INVALID` | The License Key (API Key) you are using to access the IMG.LY SDK is invalid for this version. | The license does not cover the running engine version. Update the license tier or downgrade the engine. | |
## MEDIA
Media containers and demuxing.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `MEDIA.BLOCK_NOT_AUDIO_OR_VIDEO_FILL` | Entity is not an audio block nor a video fill. | Audio waveform/thumbnail APIs require an audio block or a block with a video fill. | |
| `MEDIA.BLOCK_NOT_A_PAGE` | Block is not a page. | Page-grid thumbnail APIs require a page block. Pass a block where api.block.getType(id) == '//ly.img.ubq/page'. | |
| `MEDIA.BLOCK_NOT_PAGE_OR_CHILD` | Block must be a page or a child of a page. | The block must live under a page in the scene tree. Reparent it or pick a page descendant. | |
| `MEDIA.BLOCK_NOT_VALID` | Block is not valid. | The block id no longer references a live block. Re-resolve the id before requesting media. | |
| `MEDIA.BLOCK_NOT_VIDEO_FILL` | Block is not a video fill. | This operation requires a block whose fill is a video. Verify api.block.getKind(id) returns 'video' before calling. | |
| `MEDIA.BLOCK_SIZE_ZERO` | Block size is zero. | Cannot generate a thumbnail for a zero-sized block. Set the block's width and height first. | |
| `MEDIA.CANVAS_SURFACE_GET_FAILED` | Could not get canvas surface. | The canvas does not expose its underlying surface. This indicates an internal renderer state issue. | |
| `MEDIA.CHANNEL_COUNT_INVALID` | The number of channels must be 1 or 2. | Mono (1) and stereo (2) are the only supported channel counts. | |
| `MEDIA.FRAME_COUNT_INVALID` | The number of frames must be greater than 0. | Pass a positive \`frameCount\`. | |
| `MEDIA.GRID_DIMENSIONS_INVALID` | Rows and columns must be greater than 0. | Pass positive \`rows\` and \`columns\` for grid-thumbnail generation. | |
| `MEDIA.IMAGE_ENCODE_FAILED` | Image encoding failed. | The encoder rejected the source image. This is usually an unsupported pixel format or zero-sized input. | |
| `MEDIA.NEGATIVE_TIME_RANGE` | A negative time range is not allowed. | Ensure end > start (both in seconds, non-negative). | |
| `MEDIA.OFFSCREEN_CANVAS_GET_FAILED` | Could not get offscreen canvas. | Skia surface has no canvas attached. The compute context may not have been initialized. | |
| `MEDIA.OFFSCREEN_SURFACE_CREATE_FAILED` | Could not create offscreen surface. | Skia could not allocate the offscreen rendering surface. Out-of-memory or unsupported pixel format is the likely cause. | |
| `MEDIA.OPERATION_UNSUPPORTED_FOR_BLOCK` | This operation is not supported for the given block. | The selected block type does not implement this media operation. Check api.block.getType(id) and call this API only on the block types it supports. | |
| `MEDIA.SAMPLES_PER_CHUNK_INVALID` | The number of samples per chunk must be greater than 0. | Pass a positive \`samplesPerChunk\`. | |
| `MEDIA.SAMPLE_COUNT_INVALID` | The number of samples must be greater than 0. | Pass a positive \`sampleCount\`. | |
| `MEDIA.SNAPSHOT_FAILED` | Could not snapshot rendered thumbnail. | Skia could not produce an image snapshot from the rendered surface. The surface may not be readable on this backend. | |
| `MEDIA.THUMBNAIL_ALLOC_FAILED` | Failed to allocate memory for thumbnail data. | The thumbnail size exceeds available memory. Reduce dimensions or free memory. | |
| `MEDIA.THUMBNAIL_HEIGHT_INVALID` | The height of the thumbnail must be greater than 0. | Pass a positive \`height\` (pixels). | |
| `MEDIA.THUMBNAIL_UPSCALE_FAILED` | Could not upscale thumbnail to requested size. | Upscaling failed mid-render. The destination size may be larger than the maximum surface size on this platform. | |
| `MEDIA.UPSCALE_SURFACE_CREATE_FAILED` | Could not create upscale surface. | Skia could not allocate the destination surface for upscaling. Out-of-memory or unsupported config is the likely cause. | |
| `MEDIA.VIDEO_FETCH_FAILED` | Failed to fetch video. | The video resource could not be retrieved. Check the URI, asset-source registrations, and network connectivity. | |
## SCENE
Scene-level operations (load, save, archive, structural validation).
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `SCENE.ARCHIVAL_REQUEST_FAILED` | Archival request failed: \{reason} | An async archival operation (save/load) was completed in error state. The underlying reason is: \{reason} | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_ADD_RESOURCE_FAILED` | Could not add the resource '\{resource}' to the archive. Adding data failed. | The engine could not fetch or write the bytes for \{resource}. Verify the resource is reachable and not larger than the archive can hold. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_BUFFER_DATA_MISSING` | Could not add the resource '\{resource}' to the archive. Its buffer holds no data. | A buffer URL names data that only this engine holds, so the archive must carry the bytes. The buffer is empty or was destroyed. Write the data again with setBufferData, or clear the reference on the block, then save. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_CHUNK_READ_FAILED` | Failed to read chunk data from data provider. | The data provider returned no bytes for an available range. The underlying source may have disconnected or returned a partial response. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_CORRUPTED_EMPTY_RESOURCE` | Corrupted archive. Some elements in the scene are referencing empty data, e.g., '\{resource}'. | The archive is internally inconsistent. Regenerate it from the original scene and verify the source has no missing assets. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_CREATE_FAILED` | Could not create archive. | Final archive assembly failed for an unspecified reason. Inspect prior log lines for the underlying failure. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_DATA_PROVIDER_RANGE_UNAVAILABLE` | Data provider range is not available. | The requested byte range cannot be served by the underlying provider. Check the resource size and the requested offset/length. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_DATA_UNAVAILABLE_FOR_URL` | Archive data is not available for URL '\{url}'. | The archive references \{url} but the data could not be retrieved. Check the URL and the asset source it resolves through. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_FETCH_FAILED` | Failed to fetch archive from URL '\{url}': \{reason} | Network or asset-source failure. Verify the URL is reachable and the host serves the archive bytes. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_INVALID` | Not a valid archive. | The supplied bytes are not a recognizable CE.SDK archive. Was the file produced by saveToArchive()? | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_LOAD_AS_BLOCKS_NOT_SCENE` | Archive contains a blocks file. This archive has to be loaded as blocks and not as a scene. | Call loadFromArchiveAsBlocks() instead of loadFromArchive() for this file. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_LOAD_AS_SCENE_NOT_BLOCKS` | Archive contains a scene file. This archive has to be loaded as a scene and not as blocks. | Call loadFromArchive() instead of loadFromArchiveAsBlocks() for this file. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_MISSING_FILE` | Archive is missing a \{kind} file. | The archive is malformed: it does not contain the expected \{kind}.\* entry at its root. The file may be truncated or corrupted. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_NO_CURRENT_RESOURCE` | No current resource. | The data provider has not selected a resource. Call seekResource() (or the equivalent) before reading. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_NO_RESOURCE_BEGUN` | No resource begun or entry not open. | Call beginResource() before writing chunks or ending the resource. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_OFFSET_EXCEEDS_RESOURCE_SIZE` | Requested offset exceeds resource size. | Clamp the requested offset to be less than the resource's reported size before reading. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_RESOURCES_TOO_LARGE` | Resources too large. Not enough memory to create archive. | Allocation for the in-memory archive failed. Reduce scene size, free memory, or use a platform with more available RAM. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_RESOURCE_ALREADY_BEGUN` | Resource already begun. | A streaming resource is already in progress. Call endResource() before beginning another. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_RESOURCE_DATA_INVALID` | Resource data is invalid. | The bytes returned by the data provider failed validation. The archive may be corrupted. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_RESOURCE_DATA_UNAVAILABLE` | Resource data is not available. | The data provider has no bytes for the current resource. The underlying source may have been moved or deleted. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_STREAMED_WRITE_FAILED` | Failed to write streamed data to archive: \{reason} | Streaming a resource into the archive failed mid-flight. The underlying writer reported: \{reason} | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_WRITER_ALREADY_INITIALIZED` | Archive already initialized. | The ArchiveBufferWriter is already in an initialized state. Construct a new writer or release the current one before re-initializing. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ARCHIVE_WRITER_NOT_INITIALIZED` | Archive not initialized. | Call initialize() on the ArchiveBufferWriter before invoking entry or directory operations. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.BLOCKS_INPUT_INVALID` | Received blocks input is not a valid serialization. | The payload does not parse as a CE.SDK blocks document. Confirm it was produced by api.block.saveToString() or saveToArchive(). | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.BLOCK_AT_INDEX_INVALID` | Block at index \{index} is invalid. Can't save list. | One of the blocks in the list was destroyed. Filter or re-resolve the ids before saving. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.COMPRESSION_SERVICE_UNAVAILABLE` | Compression service not available for detected format. | The archive is compressed with a codec this build does not support. Ensure the engine was built with the matching compression backend. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.CONTENT_EMPTY` | Received empty \{kind} content. | The serialized \{kind} payload is empty. Verify the source produced non-empty content before passing it to the engine. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.DECOMPRESS_FAILED` | Failed to decompress scene data: \{reason} | The compressed payload could not be decoded. The archive may be truncated or produced by an incompatible writer. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.DISALLOWED_SCHEMES` | Scene contains disallowed schemes in resource URLs: \{schemes} | The scene references resources via blocked URL schemes (\{schemes}). Update the policy or rewrite the scene's resource URLs. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ENTITY_INVALID` | Invalid scene entity. | The provided design-block id no longer references a valid entity. It may have been destroyed by an earlier call; re-resolve the id before use. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ENTITY_NOT_A_SCENE` | Entity is not a scene. | Pass a scene block id. Use api.scene.get() or api.block.findByType('//ly.img.ubq/scene') to obtain one. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.LOAD_FROM_URI_FAILED` | Could not load \{kind} from \{uri}. | Check that the URI is reachable and serves a valid \{kind} payload. Common causes: 404, CORS, or wrong file type. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.MEDIA_URI_NOT_FOUND` | Could not load \{kind} from \{uri}. | The \{kind} resource at \{uri} could not be resolved. Check the URI, network connectivity, and asset-source registrations. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.MEDIA_URI_PARSE_FAILED` | Could not load \{kind}: \{reason} | The \{kind} URI failed to parse. Confirm it is a well-formed absolute URI (http(s)://, file://, or a data URL). | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.MUST_EXIST` | A scene must already exist. | Create or load a scene before invoking this API. Use api.scene.create() or loadFromString(). | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.MUST_EXIST_FOR_TEMPLATE` | A scene must already exist for a template to be applied to it. | Load a scene first, then apply the template. Templates only modify existing scenes. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NOT_IMPLEMENTED` | Not implemented. | This data-provider method has no implementation on the active subclass. The caller must select a different provider or operation. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NOT_SCENE_TYPE` | Not a scene. | The root deserialized entity is not a scene. The file may have been produced by saveAsBlocks() — load it with loadBlocks() instead. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NOT_VALID` | No valid scene. | Create or load a scene before calling APIs that operate on the active scene. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NO_MODE` | Scene has no mode set. | Use api.scene.setMode(scene, mode) before requesting mode-dependent behavior. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NO_PAGES_FOR_AUDIO_EXPORT` | Scene has no pages to export audio from. | Add at least one page to the scene before exporting audio. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.NO_PAGE_FOUND` | No page found. | Add at least one page to the scene or check the current viewport's page resolution. | [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/) |
| `SCENE.NO_SCENE_FOUND` | No scene found. | The serialized payload deserialized successfully but contains no scene root. Was the file saved as 'blocks' instead of 'scene'? | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.PERSISTENCE_NO_URL` | The persistence callback answered with no URL for \{url} | Answer with the URL where you stored the resource, as a string, or answer with an error. | [Resources](https://img.ly/docs/cesdk/react-native/concepts/resources-a58d71/) |
| `SCENE.TEMP_FILE_CREATE_FAILED` | Failed to create temporary file. | The engine could not create a scratch file for archival. Check available disk space and the platform's temporary-directory permissions. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_CHUNK_WRITE_FAILED` | Failed to write chunk to ZIP entry: \{zipErrorCode} | libzip rejected writing a chunk to the current streaming entry with error code \{zipErrorCode}. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_CREATE_FAILED` | Failed to create ZIP archive. | The ZIP container could not be opened for writing. This is usually a file-system or memory issue. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_DIRECTORY_ENTRY_CLOSE_FAILED` | Failed to close ZIP directory entry: \{zipErrorCode} | libzip rejected closing a directory entry with error code \{zipErrorCode}. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_DIRECTORY_ENTRY_OPEN_FAILED` | Failed to open ZIP directory entry: \{zipErrorCode} | libzip rejected opening a directory entry with error code \{zipErrorCode}. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_ENTRY_CLOSE_FAILED` | Failed to close ZIP entry: \{zipErrorCode} | libzip rejected closing the current entry with error code \{zipErrorCode}. The entry data may be truncated. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_ENTRY_OPEN_FAILED` | Failed to open ZIP entry: \{zipErrorCode} | libzip rejected opening a new entry with error code \{zipErrorCode}. The archive state may be inconsistent. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_ENTRY_WRITE_FAILED` | Failed to write ZIP entry: \{zipErrorCode} | libzip rejected writing bytes to the current entry with error code \{zipErrorCode}. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_STREAMING_ENTRY_CLOSE_FAILED` | Failed to close ZIP entry for streaming resource: \{zipErrorCode} | libzip rejected closing a streaming entry with error code \{zipErrorCode}. The streamed bytes may be truncated. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_STREAMING_ENTRY_OPEN_FAILED` | Failed to open ZIP entry for streaming resource: \{zipErrorCode} | libzip rejected opening a streaming entry with error code \{zipErrorCode}. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_WRITER_CLOSE_FAILED` | Failed to close ZIP writer: \{zipErrorCode} | libzip reported error \{zipErrorCode} on close. The output bytes may be truncated; treat the archive as invalid. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_WRITER_CREATE_FAILED` | Failed to create ZIP writer. | The libzip writer could not be allocated. Out-of-memory or platform-resource exhaustion is the likely cause. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
| `SCENE.ZIP_WRITER_OPEN_FAILED` | Failed to open ZIP writer: \{zipErrorCode} | libzip rejected the writer initialization with error code \{zipErrorCode}. Inspect libzip's documentation for the meaning. | [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/) |
## UTILS
Generic utility failures not specific to another category.
| Code | Message | Hint | Docs |
| --- | --- | --- | --- |
| `UTILS.APNG_DATA_TOO_SMALL` | APNG data is empty or too small. | The APNG buffer is too short to contain a valid PNG signature. The source may be truncated. | |
| `UTILS.APNG_FCTL_BEFORE_ACTL` | APNG has fcTL before acTL. | fcTL chunks must follow acTL. Reorder or regenerate the APNG. | |
| `UTILS.APNG_FDAT_WITHOUT_FCTL` | APNG has fdAT with no preceding fcTL. | Each fdAT chunk must follow an fcTL declaring its frame. The animation stream is broken. | |
| `UTILS.APNG_FDAT_WITHOUT_SEQ` | APNG has an fdAT chunk without a sequence number. | fdAT chunks must include a 4-byte sequence number. The chunk is malformed. | |
| `UTILS.APNG_FRAME_INDEX_OUT_OF_RANGE` | APNG frame index out of range. | The requested frame index is past the last frame. Clamp it to \[0, frameCount). | |
| `UTILS.APNG_FRAME_NO_PIXEL_DATA` | APNG has an animation frame with no pixel data. | Each animation frame must have at least one IDAT/fdAT chunk. | |
| `UTILS.APNG_FRAME_OUT_OF_CANVAS` | APNG frame rectangle extends beyond the canvas. | fcTL coordinates must fit inside the canvas declared by IHDR. The file is malformed. | |
| `UTILS.APNG_FRAME_ZERO_DIMENSIONS` | APNG has an animation frame with zero dimensions. | Each fcTL must declare positive width and height. The frame is invalid. | |
| `UTILS.APNG_IDAT_BEFORE_IHDR` | APNG has IDAT before IHDR. | IDAT chunks must follow IHDR. The file violates PNG chunk ordering. | |
| `UTILS.APNG_INVALID_ACTL` | APNG has invalid or misplaced acTL chunk. | The acTL chunk must precede IDAT and appear exactly once. The animation chunk is malformed. | |
| `UTILS.APNG_INVALID_FCTL` | APNG has an invalid fcTL chunk. | An animation control chunk failed validation. The file may be partially corrupted. | |
| `UTILS.APNG_INVALID_IHDR` | APNG has invalid or duplicated IHDR chunk. | PNG must contain exactly one IHDR chunk at the start. The file is malformed. | |
| `UTILS.APNG_INVALID_SIGNATURE` | APNG data does not start with a valid PNG signature. | The first 8 bytes must be the PNG magic number. The source is not a PNG/APNG file. | |
| `UTILS.APNG_MISSING_ACTL` | Not an APNG: acTL chunk is missing. | This is a static PNG, not an APNG. Use it with a single-frame decode path or supply an animated file. | |
| `UTILS.APNG_MISSING_IHDR` | APNG source has no valid IHDR chunk. | Every PNG starts with IHDR. The file is empty or corrupted. | |
| `UTILS.APNG_NO_FRAMES` | APNG declares no animation frames. | The acTL reports zero frames. Regenerate the APNG with at least one fcTL/fdAT. | |
| `UTILS.APNG_ZERO_CANVAS` | APNG has zero canvas dimensions. | Canvas width and height must be > 0. The IHDR is corrupt. | |
| `UTILS.CAPTION_DATA_UNAVAILABLE` | Caption data not available. | The caption resource has no bytes registered. Ensure data is loaded before requesting captions. | |
| `UTILS.CAPTION_PARSE_EMPTY` | Failed to parse captions, no captions found. | The caption file parsed but contained no entries. Verify the source format. | |
| `UTILS.CAPTION_UNSUPPORTED_MIME` | Unsupported caption mime type: \{mimeType} | Caption format '\{mimeType}' is not recognized. Convert to a supported format (e.g. text/vtt, application/x-subrip). | |
| `UTILS.CAPTION_UTF16_INVALID_SIZE` | Failed to parse captions, unexpected file size for UTF-16BE encoded text. | UTF-16BE text must have an even byte count. The file is truncated. | |
| `UTILS.COMPRESSION_EMPTY_DATA` | Cannot decompress empty data. | The input buffer is empty. Pass at least one byte of compressed data. | |
| `UTILS.COMPRESSION_FORMAT_NONE_FOR_COMPRESS` | Cannot compress data with format None: no compression requested. | Pass a non-None compression format if compression is intended. | |
| `UTILS.COMPRESSION_FORMAT_NONE_FOR_DECOMPRESS` | Cannot decompress data with format None: data is not compressed. | The detected format is None — the data is not compressed and does not need decompression. | |
| `UTILS.COMPRESSION_FORMAT_UNSUPPORTED` | Unsupported compression format: \{format} | Compression format \{format} is not handled by this build. | |
| `UTILS.COMPRESSION_NO_MAGIC_BYTES` | Unable to detect compression format: data does not have valid compression magic bytes. | The first bytes do not match any supported compression format. The data may not be compressed. | |
| `UTILS.COMPRESSION_ZSTD_INVALID_FRAME` | Invalid zstd frame. | The zstd decoder rejected the frame header. The data may be truncated. | |
| `UTILS.ENGINE_UNKNOWN_COMPONENT_TYPE` | Component \{component} is not a known reflected type. | Component '\{component}' is not registered with the reflection system. | |
| `UTILS.ENUM_VALUE_INVALID` | Invalid enum value, expected one of: \{validValues} | The supplied string is not a member of the target enum. Pass one of: \{validValues}. | |
| `UTILS.FILE_ALLOC_FAILED` | Could not allocate an output buffer of size \{size} to load \{path} | Out-of-memory loading '\{path}' (\{size} bytes). Free memory or stream the file in chunks. | |
| `UTILS.FILE_MAP_FAILED` | Could not map file \{path} into memory: \{reason} | mmap() rejected '\{path}': \{reason}. Out-of-memory or virtual-memory limits may be the cause. | |
| `UTILS.FILE_OPEN_FAILED` | Could not open file \{path}: \{reason} | The file '\{path}' could not be opened. Reason: \{reason} | |
| `UTILS.FILE_READ_FAILED` | Could not read complete file \{path}: \{reason} | Reading '\{path}' returned an error or hit EOF prematurely. Reason: \{reason} | |
| `UTILS.FILE_SIZE_FAILED` | Could not determine file size for \{path}: \{reason} | stat() failed on '\{path}': \{reason}. The file may have been removed or is unreadable. | |
| `UTILS.FILE_TOO_LARGE` | File \{path} has size \{size} larger than the maximum supported \{max} | Loading is capped at \{max} bytes. Use streaming APIs for files larger than this. | |
| `UTILS.GIF_PARSE_FAILED` | Failed to parse GIF file: \{reason} | The GIF source could not be decoded. Underlying reason: \{reason} | |
| `UTILS.METAANY_EXPECTED_ARRAY` | Expected array, but got \{actual} | JS value must be an array. Got '\{actual}' instead. | |
| `UTILS.METAANY_ITEM_MAP_FAILED` | Couldn't map item at index \{index} > \{reason} | Array element \{index} failed conversion. Reason: \{reason} | |
| `UTILS.METAANY_MEMBER_MAP_FAILED` | Couldn't map value for member \`\{member}\` > \{reason} | Member '\{member}' failed conversion. Reason: \{reason} | |
| `UTILS.METAANY_MISSING_PROPERTY` | Expected object of type '\{type}' to have property '\{property}'. | The JS object is missing required property '\{property}'. Add it before passing across the boundary. | |
| `UTILS.METAANY_NON_STRING_TO_STRING` | Can't map non-string em::val to string. | The JavaScript value is not a string. Convert it to a string in JS before crossing the boundary. | |
| `UTILS.METAANY_RESULT_TYPE_NOT_REFLECTED` | Type of Result value for \{details} is not reflected. | The Result type returned from '\{details}' is not reflection-registered. | |
| `UTILS.METAANY_SET_FAILED` | Could not set value for \{member} on object of type \{type} | The reflected setter for '\{member}' on '\{type}' rejected the value. | |
| `UTILS.METAANY_TYPE_NEEDS_REFLECTION` | Type \{type} must have reflection info. | Register type '\{type}' with the reflection system before crossing the JS↔C++ boundary. | |
| `UTILS.METAANY_UNDEFINED` | Can't map \`undefined\` to \`\{type}\` | JavaScript \`undefined\` cannot be converted to '\{type}'. Pass a defined value of the expected type. | |
| `UTILS.METAANY_UNHANDLED_INTEGRAL` | Unhandled integral type: \{type} | The integral type '\{type}' has no MetaAny ↔ em::val mapping. | |
| `UTILS.METAANY_UNHANDLED_SEQUENCE` | Unhandled sequence container type: \{type} | Sequence container '\{type}' has no MetaAny ↔ em::val mapping. | |
| `UTILS.METAANY_UNHANDLED_TYPE_KIND` | Unhandled type kind. \{type} | Type kind for '\{type}' is not recognized by the conversion layer. | |
| `UTILS.META_TYPE_FUNCTION_UNKNOWN` | Function must be known. | The requested reflected function is not registered on this MetaType. | |
| `UTILS.META_TYPE_INVALID` | Not a valid type, no name available. | The MetaType handle does not refer to a registered reflection type. | |
| `UTILS.META_TYPE_INVOKE_FAILED` | Could not invoke \{name}. | The reflected function '\{name}' could not be invoked. Argument types or arity may not match. | |
| `UTILS.MKV_EBML_PARSE_FAILED` | Failed to parse EBML header. | The EBML header is malformed. The file may not be a Matroska container. | |
| `UTILS.MKV_INVALID_DATA` | Invalid MKV data. | The MKV demuxer rejected the source bytes. The file may be truncated or use an unsupported variant. | |
| `UTILS.MKV_NO_TRACKS` | No tracks found. | The MKV file declares no tracks. Verify it contains video/audio streams. | |
| `UTILS.MKV_SEGMENT_CREATE_FAILED` | Failed to create segment. | libwebm could not allocate a segment. Out-of-memory or unsupported MKV variant. | |
| `UTILS.MKV_SEGMENT_LOAD_FAILED` | Failed to load segment. | The MKV segment payload is unreadable. The file may be truncated mid-segment. | |
| `UTILS.MP4_AUDIO_CODEC_UNSUPPORTED` | Unsupported audio codec '\{fourcc}' (OTI=\{oti}). | MP4 audio must use the AAC (mp4a), MP3, or AMR (samr/sawb) codec. Re-encode the audio to AAC. | |
| `UTILS.MP4_AUDIO_TRACK_INDEX_OUT_OF_BOUNDS` | Audio track index \{index} is out of bounds. Valid range: 0-\{max} | Pass an audio track index within \[0, \{max}]. | |
| `UTILS.MP4_OPEN_FAILED` | Failed to open MP4 file. | The MP4 demuxer could not open the source. The file may be missing or unreadable. | |
| `UTILS.MP4_SAMPLE_OUTSIDE_FILE` | A sample of the MP4 file lies outside the file. | The file is truncated or its sample tables are damaged. Export or download the file again. | |
| `UTILS.MP4_VIDEO_CODEC_UNSUPPORTED` | Unsupported video codec '\{fourcc}' (OTI=\{oti}). | MP4 video must use the H.264 (avc1) or H.265 (hvc1) codec. Re-encode the video to H.264 or H.265, or use a WebM file for AV1, VP8, or VP9. | |
| `UTILS.PIXEL_BUFFER_BACKEND_TEXTURE_INCOMPLETE` | Backend texture is incomplete. | The Skia backend texture handle does not carry enough state for read-back. | |
| `UTILS.PIXEL_BUFFER_GL_TEXTURE_INFO_FAILED` | Failed to retrieve OpenGL texture info. | The backend texture did not expose its GL info. The compute context may not be a GL context. | |
| `UTILS.PIXEL_BUFFER_INVALID_IMAGE` | Invalid RasterImage or SkImage. | The image handle is null or not a recognized Skia/raster image. | |
| `UTILS.PIXEL_BUFFER_NOT_STREAM_FILL` | This operation is only supported for pixel stream fills. | Use a block with a pixel-stream fill type. Standard fills are not supported by this conversion API. | |
| `UTILS.PIXEL_BUFFER_NO_BACKEND_TEXTURE` | No valid backend texture. | The Skia image is not backed by a GPU texture. The current compute context may not support direct read-back. | |
| `UTILS.PIXEL_BUFFER_NO_CANVAS` | No canvas. | The Skia surface has no canvas attached. The compute context may not be initialized. | |
| `UTILS.PIXEL_BUFFER_NO_GPU_CONTEXT` | No GPU context. | The compute context lacks a GPU backend. Pixel-buffer conversion requires GPU access. | |
| `UTILS.PIXEL_BUFFER_UNSUPPORTED_FORMAT` | Unsupported pixel format. | The native pixel buffer is not 32-bit BGRA. Convert the source to kCVPixelFormatType\_32BGRA before updating the pixel-stream fill. | |
| `UTILS.REFLECTION_BLOCK_NOT_VALID` | The block with ID \{block} is not valid. It may have been deleted, e.g., when a new scene was loaded. | Resolve the block id before invoking reflection APIs. Block ids become invalid after scene reloads or block destruction. | |
| `UTILS.REFLECTION_COMPONENT_NOT_REFLECTED` | '\{component}' is not a reflected type (tried to get '\{memberPath}' member). | Register the component with the reflection system or pass an already-registered type name. | |
| `UTILS.REFLECTION_COMPONENT_NOT_SET` | Component \{component} is not set on entity \{entity}. | Verify the entity has been assigned the component before reading. Use the entity's component-list API to inspect. | |
| `UTILS.REFLECTION_ENTITY_MISSING_COMPONENT` | Entity ID \{entity}\{optionalType} doesn't have component "\{component}". | The block does not carry this component. Use a block type that supports it or attach the component first. | |
| `UTILS.REFLECTION_KEY_NOT_FOUND` | Could not find member "\{key}" | The key '\{key}' does not exist on the current type. Inspect available members and adjust. | |
| `UTILS.REFLECTION_KEY_PATH_EMPTY` | Key path must be at least 1 element but is empty. | Provide a non-empty key path (e.g. "transform/x"). | |
| `UTILS.REFLECTION_KEY_PATH_MEMBER_MISSING` | Member "\{member}" for type "\{type}" not found for given key path "\{keyPath}". Valid members for key path "\{prefix}*" are: \{members}. | Adjust '\{keyPath}' to reference one of the listed members. | |
| `UTILS.REFLECTION_MEMBER_NOT_ACCESSIBLE_BY_REF` | Could not get member "\{member}". Must access by reference, if not modifying the most nested member. Reflected members for key path "\{prefix}*" are: \{members}. | Intermediate segments of a key path require by-reference access. Mark '\{member}' as a by-reference member or address its tail directly. | |
| `UTILS.REFLECTION_MEMBER_NOT_FOUND` | Member \{member} not found on current type. | The member '\{member}' is not a reflected field on this type. Check the type's reflected members. | |
| `UTILS.REFLECTION_MEMBER_TYPE_NOT_REFLECTED` | Type of member named "\{member}" on "\{type}" is not reflected. Reflected members for key path "\{prefix}*" are: \{members}. | Reflection cannot descend into '\{member}' because its type is not registered. Reflect the type or stop the key path at '\{member}'. | |
| `UTILS.REFLECTION_NO_MEMBERS_FOR_PREFIX` | "\{member}" has no reflected members. | The intermediate type at '\{member}' has no fields to descend into. Adjust the key path. | |
| `UTILS.REFLECTION_SET_MEMBER_FAILED` | Could not set member "\{member}" of type "\{type}". | The reflected setter for '\{member}' returned false. Verify the value type matches the member. | |
| `UTILS.REFLECTION_SET_WILDCARD_TYPE_MISMATCH` | Type mismatch between "\{lhs}" and "\{rhs}": "\{lhsType}" vs. "\{rhsType}". | Wildcard set requires all members to share a type. | |
| `UTILS.REFLECTION_TYPE_NOT_REFLECTED` | \{component} is not a reflected type. | Register the type with the reflection system before accessing it dynamically. | |
| `UTILS.REFLECTION_TYPE_NO_MEMBERS` | Type "\{type}" has no reflected members. | The wildcard key path requires a type with reflected fields. Use a concrete member name or pick a different type. | |
| `UTILS.REFLECTION_UNSUPPORTED_TYPE` | Unsupported type. | The reflected type is not handled by this operation. Pass a supported type. | |
| `UTILS.REFLECTION_WILDCARD_NOT_TAIL` | Wildcard only supported at tail end of path. | Move the wildcard '*' to the last segment of the key path. | |
| `UTILS.REFLECTION_WILDCARD_SET_PARTIAL` | Could not set all members of type "\{type}". | At least one reflected member of '\{type}' rejected the assignment. Member-level setters may have failed silently. | |
| `UTILS.REFLECTION_WILDCARD_TYPE_MISMATCH` | Type mismatch between "\{lhs}" and "\{rhs}". | Wildcard get requires all matched members to share a type. Members '\{lhs}' and '\{rhs}' differ. | |
| `UTILS.REFLECTION_WILDCARD_VALUE_MISMATCH` | Value mismatch between "\{lhs}" and "\{rhs}". | Wildcard get returns a single representative value; members '\{lhs}' and '\{rhs}' currently disagree. | |
| `UTILS.SETTING_NO_ARGS` | Received no arguments. Can't determine type. | The setting's type is inferred from the value you pass, so the call cannot accept zero arguments. Pass the setting value explicitly (bool, int, float, color, or string). | |
| `UTILS.STD_EXPECTED_STRING_ERROR` | \{message} | Adapter path between \`std::expected\\` and \`Result\\`. The source returned a free-text \`std::string\` error — surfacing it through the catalog so consumers still see the original wording. Convert the producer to return a catalog id when possible. | |
| `UTILS.STORAGE_KEY_NOT_FOUND` | Key not found. | The requested storage key has no value. Write it before reading, or guard the read by checking for existence first. | |
| `UTILS.TRACKING_NOT_ENABLED` | Tracking is not enabled. | Enable tracking on the engine before invoking tracking APIs. | |
| `UTILS.URI_NON_ASCII` | Failed to parse URI: \{uri}. Contains non-ASCII byte 0x\{byte} at position \{position}. URIs must only contain ASCII characters, please percent-encode special characters. | Percent-encode special characters in '\{uri}' before parsing. Non-ASCII byte 0x\{byte} found at position \{position}. | |
| `UTILS.URI_PARSE_FAILED` | Failed to parse URI: \{uri} | The URI '\{uri}' is malformed. Confirm scheme, host, and path. | |
| `UTILS.WAV_DATA_BEFORE_FMT` | Invalid WAV file: data chunk found before fmt chunk. | WAV chunk order requires fmt before data. Re-encode the file. | |
| `UTILS.WAV_FMT_CHUNK_TOO_SMALL` | WAV fmt chunk too small: expected at least \{expected} bytes, got \{actual}. | The fmt chunk does not carry the minimum WAV header fields. | |
| `UTILS.WAV_INVALID_BITS_PER_SAMPLE` | Invalid WAV bits\_per\_sample: \{bitsPerSample} | WAV bits\_per\_sample must be one of 8/16/24/32. Got \{bitsPerSample}. | |
| `UTILS.WAV_MISSING_FMT_OR_DATA` | Invalid WAV file: missing fmt or data chunk. | Both fmt and data chunks are required. The file is missing one or both. | |
| `UTILS.WAV_NOT_WAVE` | Not a WAV file: RIFF format is not WAVE. | The RIFF container is not a WAVE file. The source is a different RIFF type or not RIFF at all. | |
| `UTILS.WAV_TRUNCATED_FMT_CHUNK` | WAV file truncated: not enough data for fmt chunk. | The fmt chunk is cut off. The file is incomplete. | |
| `UTILS.WAV_TRUNCATED_RIFF_HEADER` | WAV file truncated: not enough data for RIFF header. | The file is shorter than the 12-byte RIFF header. The source is incomplete. | |
| `UTILS.WAV_TRUNCATED_UNKNOWN_CHUNK` | WAV file truncated: not enough data to skip unknown chunk. | Parsing tried to skip an unknown chunk but ran past the buffer end. The file is incomplete. | |
| `UTILS.WAV_UNSUPPORTED_AUDIO_FORMAT` | Unsupported WAV audio format: \{audioFormat} | WAV audio format code \{audioFormat} is not handled. Re-encode as PCM (1) or IEEE float (3). | |
| `UTILS.WAV_ZERO_CHANNELS` | Invalid WAV file: num\_channels is 0. | WAV must declare at least one channel. | |
| `UTILS.WAV_ZERO_SAMPLE_RATE` | Invalid WAV file: sample\_rate is 0. | WAV must declare a positive sample rate. | |
| `UTILS.WAV_ZERO_SIZE_CHUNK` | Invalid WAV file: zero-size chunk encountered. | A chunk reports zero size, which would cause infinite parsing. The file is malformed. | |
| `UTILS.ZSTD_COMPRESS_FAILED` | Zstd compression failed: \{reason} | The zstd library reported a compression failure. \`reason\` is the value returned by \`ZSTD\_getErrorName(...)\`. | |
| `UTILS.ZSTD_DECOMPRESS_FAILED` | Zstd decompression failed: \{reason} | The zstd library reported a decompression failure. \`reason\` is the value returned by \`ZSTD\_getErrorName(...)\`. The input may be truncated or not zstd-encoded. | |
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Events"
description: "Subscribe to block creation, update, and deletion events to track changes in your CE.SDK scene."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/events-353f97/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Events](https://img.ly/docs/cesdk/react-native/concepts/events-353f97/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/events-353f97/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/events-353f97/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Exclusion Areas"
description: "An exclusion area marks a region of a page that content must stay out of, such as an envelope window or a book spine."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/exclusion-areas-c2b87b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Exclusion Areas](https://img.ly/docs/cesdk/react-native/concepts/exclusion-areas-c2b87b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/exclusion-areas-c2b87b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/exclusion-areas-c2b87b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Font Size Unit"
description: "Configure how font sizes are interpreted on a per-scene basis (Point or Pixel) with setFontSizeUnit and getFontSizeUnit."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/font-size-unit-3b2d60/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Font Size Unit](https://img.ly/docs/cesdk/react-native/concepts/font-size-unit-3b2d60/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/font-size-unit-3b2d60/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/font-size-unit-3b2d60/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Import and Export"
description: "Understand every way files move in and out of CE.SDK—importing media and design files, loading and saving native scenes, and exporting finished output."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/import-export-0ebbd8/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Import and Export](https://img.ly/docs/cesdk/react-native/concepts/import-export-0ebbd8/)
---
Understand every way files move in and out of CE.SDK—importing media and design files, loading and saving native scenes, and exporting finished output.
When developers ask whether CE.SDK "supports" a file format, the answer depends on which workflow they mean. Importing an image as content, converting a Photoshop file into an editable design, and rendering a finished PDF are three different operations with different format support. This page maps every way files come in and go out, and links to the guide for each workflow.

Everything in CE.SDK revolves around the *scene*—the block hierarchy that describes a design. Files coming in either add content to a scene or become a scene; files going out either preserve the scene for later editing or render it into final output. In React Native, the CE.SDK module embeds the native mobile editors, so these workflows behave the same as in native Android and iOS apps.
## Three Ways Files Come In
### Media Assets
Media assets are content placed *inside* a design: images, videos, audio clips and fonts. Users add them through the asset library, the device's photo library or the camera, and you provide them programmatically through the asset and block APIs.
Media assets don't change the structure of a scene—they fill blocks with content. See the [Import Media](https://img.ly/docs/cesdk/react-native/import-media/overview-84bb23/) section for upload workflows and the asset library, [Asset Concepts](https://img.ly/docs/cesdk/react-native/import-media/concepts-5e6197/) for the underlying architecture, and [File Format Support](https://img.ly/docs/cesdk/react-native/import-media/file-format-support-8cdc84/) for the exact format list.
### Native Design Files
CE.SDK persists designs in its own format, which loads back with full editability. Native files come in two variants:
- **Scene string** (`.scene`) — A serialized description of the block hierarchy. Assets are referenced by URL, not embedded, so the file is lightweight but depends on those URLs staying reachable.
- **Archive** (`.zip`) — A self-contained bundle of the scene file plus every referenced asset. Larger, but portable and usable offline.
The `.imgly` extension is used for both variants; the engine detects the format automatically when loading. In a React Native app you typically pass the scene or archive to the editor when opening it, or load it through the engine's `scene.load()` and archive-loading APIs. See [Load a Scene](https://img.ly/docs/cesdk/react-native/open-the-editor/load-scene-478833/) and [Import a Design](https://img.ly/docs/cesdk/react-native/open-the-editor/import-design-73b9c5/).
### Design Files From Other Tools
Files created in other design applications—Photoshop, InDesign, PowerPoint or PDF-producing tools—are not media assets and can't be added like an image. Instead, dedicated importer packages *convert* them into native CE.SDK scenes, preserving text, images, vector paths, positioning and colors as editable blocks:
| Source format | Package |
| --------------------- | ----------------------- |
| Photoshop (`.psd`) | `@imgly/psd-importer` |
| InDesign (`.idml`) | `@imgly/idml-importer` |
| PDF (`.pdf`) | `@imgly/pdf-importer` |
| PowerPoint (`.pptx`) | `@imgly/pptx-importer` |
The importers are JavaScript packages and don't run inside the React Native module. The typical workflow converts files on your server with Node.js, then loads the resulting scene or archive in your app. See [From InDesign](https://img.ly/docs/cesdk/react-native/open-the-editor/import-design/from-indesign-ba3988/) and [From Photoshop](https://img.ly/docs/cesdk/react-native/open-the-editor/import-design/from-photoshop-cca6bb/) for this workflow.
#### Importer Features and Limitations
Each importer translates a subset of its source format, so review converted scenes—especially complex documents—before publishing. Where a feature can't be mapped one-to-one, the importers degrade gracefully. Typical examples:
- Linked, non-embedded images aren't resolved and import as placeholders (IDML, PDF).
- Mixing multiple fonts or font sizes within a single Photoshop text layer isn't supported, and unavailable fonts are substituted depending on the configured font strategy.
- PowerPoint tables, charts, SmartArt, animations and slide masters are skipped.
The npm page of each package maintains the up-to-date list of supported features and limitations: [`@imgly/psd-importer`](https://www.npmjs.com/package/@imgly/psd-importer), [`@imgly/idml-importer`](https://www.npmjs.com/package/@imgly/idml-importer), [`@imgly/pdf-importer`](https://www.npmjs.com/package/@imgly/pdf-importer) and [`@imgly/pptx-importer`](https://www.npmjs.com/package/@imgly/pptx-importer).
For any format without a ready-made importer, you can build your own converter with the scene and block APIs—see [Create From Scratch](https://img.ly/docs/cesdk/react-native/create-templates/from-scratch-663cda/) for building a design programmatically.
## Two Ways Files Go Out
### Saving a Design
Saving preserves the scene for later editing. `engine.scene.saveToString()` produces a scene string with assets referenced by URL; `engine.scene.saveToArchive()` produces a self-contained archive with assets embedded. Both round-trip losslessly—loading a saved file restores the design exactly, with full editability.
A saved file is not viewable output: it only renders inside CE.SDK. To show a preview of a saved design elsewhere, export a thumbnail alongside it. See [Save](https://img.ly/docs/cesdk/react-native/export-save-publish/save-c8b124/) and [Create Thumbnail](https://img.ly/docs/cesdk/react-native/export-save-publish/create-thumbnail-749be1/).
### Exporting Final Output
Exporting renders the scene into a finished file for use outside CE.SDK. The editor's export callback receives the rendered result, and programmatically you can export the whole scene, a single page or any individual block with `engine.block.export()`. Output covers images, vector graphics, print-ready PDF, video and audio ([audio formats](https://img.ly/docs/cesdk/react-native/export-save-publish/export/audio-68de25/)), and raw pixel data—[File Format Support](https://img.ly/docs/cesdk/react-native/file-format-support-3c4b2a/) lists the exact formats.
Exports are flattened: text becomes pixels or paths, and the block structure is gone. An exported file can't be turned back into the original editable design. See [Export Options](https://img.ly/docs/cesdk/react-native/export-save-publish/export/overview-9ed3a8/) for configuration.
## Save vs. Export
The most common point of confusion is the difference between saving and exporting:
| | Save | Export |
| -------------- | ---------------------------------------- | --------------------------------------------- |
| Purpose | Continue editing later | Use the result outside CE.SDK |
| Output | `.scene` string, `.imgly`/`.zip` archive | Rendered files (PNG, PDF, MP4, …)|
| Re-editable | Yes, losslessly | No—content is flattened |
| Assets | Referenced by URL or embedded | Rendered into the output |
| Viewable outside CE.SDK | No | Yes |
A typical integration uses both: save the scene to your backend so users can keep editing, and export when they download or publish the result.
## Common Questions
- **Can users add a PDF or Photoshop file like an image?** Not as a media asset—the media path accepts images, video and audio only. PDF, PSD, IDML and PPTX files go through the importer packages, which convert them into editable scenes upstream of your app.
- **Why isn't my exported PDF editable when I import it back?** Exporting flattens the design. The PDF importer reconstructs an editable scene from any PDF, but it's a conversion, not a lossless round trip. To preserve editability, save the scene alongside the export.
- **What's the difference between `.scene`, `.imgly` and `.zip`?** `.scene` is always a scene string, `.zip` is always an archive, and `.imgly` is the recommended extension for either—the engine detects which one it is when loading.
- **Does a saved scene contain its images?** A scene string references assets by URL, so the design breaks if those URLs go away. An archive embeds all assets and is fully self-contained.
## Format Support Reference
For the authoritative format tables—including codec details, size limits and known limitations—see [File Format Support](https://img.ly/docs/cesdk/react-native/file-format-support-3c4b2a/).
## API Reference
| Method | Category | Purpose |
| ------------------------------ | -------- | ---------------------------------------------------------------- |
| `engine.scene.load()` | Import | Load a scene string, with automatic format detection |
| `engine.scene.saveToString()` | Save | Serialize the scene to a string with assets referenced by URL |
| `engine.scene.saveToArchive()` | Save | Bundle the scene and all assets into a self-contained archive |
| `engine.block.export()` | Export | Render a block, page or scene to a final output format |
## Next Steps
- [Import Media](https://img.ly/docs/cesdk/react-native/import-media/overview-84bb23/) — Bring images, video, audio and fonts into designs
- [Import a Design](https://img.ly/docs/cesdk/react-native/open-the-editor/import-design-73b9c5/) — Load saved scenes and archives
- [Save](https://img.ly/docs/cesdk/react-native/export-save-publish/save-c8b124/) — Persist designs for later editing
- [Export Options](https://img.ly/docs/cesdk/react-native/export-save-publish/export/overview-9ed3a8/) — Configure output formats and quality
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Pages"
description: "Pages structure scenes in CE.SDK and must share the same dimensions to ensure consistent rendering."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Pages](https://img.ly/docs/cesdk/react-native/concepts/pages-7b6bae/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/pages-7b6bae/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/pages-7b6bae/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Plugin Architecture"
description: "Understand how CE.SDK plugins fit together—what a plugin is, how it attaches to the editor or engine, and which extension surfaces it can reach."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/plugin-architecture-068fc4/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Plugin Architecture](https://img.ly/docs/cesdk/react-native/concepts/plugin-architecture-068fc4/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/plugin-architecture-068fc4/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/plugin-architecture-068fc4/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Resources"
description: "Learn how CE.SDK loads and manages external media files, including preloading for performance, handling transient data, and relocating resources when URLs change."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/resources-a58d71/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Resources](https://img.ly/docs/cesdk/react-native/concepts/resources-a58d71/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/resources-a58d71/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/resources-a58d71/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Scenes"
description: "Scenes are the root container for every design—holding pages, blocks, and camera. Learn to create, save, load, and configure scenes."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Scenes](https://img.ly/docs/cesdk/react-native/concepts/scenes-e8596d/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/scenes-e8596d/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/scenes-e8596d/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Templating"
description: "Templates enable dynamic, reusable designs with text variables and placeholder media. Learn to create, load, and personalize templates programmatically."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/templating-f94385/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Templating](https://img.ly/docs/cesdk/react-native/concepts/templating-f94385/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/templating-f94385/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/templating-f94385/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Terminology"
description: "Definitions for the core terms and concepts used throughout CE.SDK documentation, including Engine, Scene, Block, Fill, Shape, Effect, and more."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/terminology-99e82d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Terminology](https://img.ly/docs/cesdk/react-native/concepts/terminology-99e82d/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/terminology-99e82d/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/terminology-99e82d/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Undo and History"
description: "Manage undo and redo stacks in CE.SDK using multiple histories, callbacks, and API-based controls."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/concepts/undo-and-history-99479d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Undo and History](https://img.ly/docs/cesdk/react-native/concepts/undo-and-history-99479d/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/concepts/undo-and-history-99479d/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/concepts/undo-and-history-99479d/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Configuration"
description: "Learn how to configure CE.SDK to match your application's functional, visual, and performance requirements."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/configuration-2c1c3d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Configuration](https://img.ly/docs/cesdk/react-native/configuration-2c1c3d/)
---
```typescript file=@cesdk_react_native_examples/editor-guides-configuration-basics/basic_editor_solution.ts reference-only
import IMGLYEditor, {
EditorPreset,
EditorSettingsModel
} from '@imgly/editor-react-native';
export const basicEditor = async (): Promise => {
const settings = new EditorSettingsModel({
license: 'YOUR_LICENSE_KEY', // Request a license at https://img.ly/forms/contact-sales/, pass null for evaluation mode with watermark
baseUri: 'YOUR_BASE_URI',
userId: 'YOUR_USER_ID'
});
const source = require('MY_CUSTOM_SOURCE');
const preset: EditorPreset = EditorPreset.DESIGN;
const metadata = {
MY_KEY: 'MY_VALUE'
};
const result = await IMGLYEditor?.openEditor(
settings,
source,
preset,
metadata
);
};
```
In this example, we will show you how to make basic configurations for the mobile editor. The example is based on the [`Design Editor`](https://img.ly/showcases/cesdk/default-ui/ios), however, it is exactly the same for all the other [solutions](https://img.ly/docs/cesdk/react-native/prebuilt-solutions-d0ed07/).
## Configuration
The `openEditor` function allows for some further basic configuration of the editor.
### Editor Settings
All the basic configuration settings are part of the `EditorConfiguration` which is required to initialize the editor.
```javascript highlight-configuration
const settings = new EditorSettingsModel({
license: 'YOUR_LICENSE_KEY', // Request a license at https://img.ly/forms/contact-sales/, pass null for evaluation mode with watermark
baseUri: 'YOUR_BASE_URI',
userId: 'YOUR_USER_ID'
});
```
- `license` - the license to activate the [Engine](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/) with.
```javascript highlight-license
license: 'YOUR_LICENSE_KEY', // Request a license at https://img.ly/forms/contact-sales/, pass null for evaluation mode with watermark
```
- `baseUri` - the base URI used by the engine for built-in assets like emoji and fallback fonts, and by the editor for its default and demo asset sources (stickers, filters, and more). The default value points at the versioned IMG.LY CDN `https://cdn.img.ly/packages/imgly/cesdk-react-native//assets`. For production use, we recommend [downloading the assets](https://cdn.img.ly/packages/imgly/cesdk-react-native/1.84.0/imgly-assets.zip), hosting them on your own server, and setting `baseUri` to your hosted location.
```javascript highlight-baseUri
baseUri: 'YOUR_BASE_URI',
```
- `userID` - an optional unique ID tied to your application's user. This helps us accurately calculate monthly active users (MAU). Especially useful when one person uses the app on multiple devices with a sign-in feature, ensuring they're counted once. Providing this aids in better data accuracy. The default value is `nil`.
```javascript highlight-userId
userId: 'YOUR_USER_ID'
```
### Source
- `source` - is used to load in a custom source, e.g. a scene, image or video file.
```javascript highlight-source
const source = require('MY_CUSTOM_SOURCE');
```
### EditorPreset
- `preset` - is used to determine which predefined editor variant you want to use - if any.
```javascript highlight-preset
const preset: EditorPreset = EditorPreset.DESIGN;
```
### Metadata
- `metadata` - can be used to provide any custom `{ [key: string]: unknown }` to the underlying native plugin which you can use for further custom handling.
```javascript highlight-metadata
const metadata = {
MY_KEY: 'MY_VALUE'
};
```
## Full Code
```typescript
import IMGLYEditor, {
EditorPreset,
EditorSettingsModel,
} from '@imgly/editor-react-native';
export const basicEditor = async (): Promise => {
const settings = new EditorSettingsModel({
license: 'YOUR_LICENSE_KEY',
baseUri: 'YOUR_BASE_URI',
userId: 'YOUR_USER_ID',
});
const source = require('MY_CUSTOM_SOURCE');
const preset: EditorPreset = EditorPreset.DESIGN;
const metadata = {
MY_KEY: 'MY_VALUE',
};
const result = await IMGLYEditor?.openEditor(
settings,
source,
preset,
metadata,
);
};
```
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Conversion"
description: "Convert designs into different formats such as PDF, PNG, MP4, and more using CE.SDK tools."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/conversion/overview-44dc58/) - Convert designs into different formats such as PDF, PNG, MP4, and more using CE.SDK tools.
- [To Base64](https://img.ly/docs/cesdk/react-native/conversion/to-base64-39ff25/) - Convert CE.SDK exports to Base64-encoded strings for embedding in URLs, storing in databases, or transmitting via APIs.
- [To Binary Data](https://img.ly/docs/cesdk/react-native/conversion/to-blob-4e6493/) - Export design blocks to platform-native binary data for saving, uploading, or sharing.
- [To PNG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-png-f87eaf/) - Export your designs as PNG images with transparency support and configurable compression for web graphics, UI elements, and content requiring crisp edges.
- [To PDF](https://img.ly/docs/cesdk/react-native/conversion/to-pdf-eb937f/) - Convert your design or document into a high-quality, print-ready PDF format.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Convert designs into different formats such as PDF, PNG, MP4, and more using CE.SDK tools."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/conversion/overview-44dc58/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/) > [Overview](https://img.ly/docs/cesdk/react-native/conversion/overview-44dc58/)
---
CreativeEditor SDK (CE.SDK) allows you to export designs into a variety of formats, making it easy to prepare assets for web publishing, printing, storage, and other workflows.
You can trigger conversions either programmatically through the SDK’s API or manually using the built-in export options available in the UI.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Supported Input and Output Formats
CE.SDK accepts a range of input formats when working with designs, including:
| Category | Supported Formats |
| ------------- | ------------------------------------------------------------------ |
| **Images** | `.png`, `.apng`, `.jpeg`, `.jpg`, `.gif`, `.webp`, `.svg`, `.bmp` |
| **Video** | `.mp4` (H.264/AVC, H.265/HEVC), `.mov` (H.264/AVC, H.265/HEVC) |
| **Audio** | `.wav`, `.mp3`, `.m4a`, `.mp4` (AAC or MP3), `.mov` (AAC or MP3) |
| **Animation** | `.json` (Lottie) |
Animated images (`.gif` and `.apng`) import as a static first frame in design
scenes and as a looping video fill in video scenes.
> **Note:** Need to import a format not listed here? CE.SDK allows you to create custom
> importers for any file type by using our Scene and Block APIs
> programmatically.
When it comes to exporting or converting designs, the SDK supports the following output formats:
| Category | Supported Formats |
| ----------- | ------------------------------------------------------------------------------------ |
| **Images** | `.png` (with transparency), `.jpeg`, `.webp`, `.tga` |
| **Vector** | `.svg` (scalable vector graphics with text as paths) |
| **Print** | `.pdf` (supports underlayer printing and spot colors) |
| **Video** | `.mp4` (H.264 or H.265 on supported platforms with limited transparency support) |
| **Scene** | `.imgly` or `.scene` (description of the scene without any assets) |
| **Archive** | `.imgly` or `.zip` (fully self-contained archive that bundles the scene file with all assets) |
> **Note:** Our custom cross-platform C++ based rendering and layout engine ensures
> consistent output quality across devices.
Each format serves different use cases, giving you the flexibility to adapt designs for your application’s needs.
## Conversion Methods
There are two main ways to trigger a conversion:
- **Programmatically:**\
Use CE.SDK’s API methods to perform conversions directly from your code. This gives you full control over the export process, allowing you to customize settings, automate workflows, and integrate with other systems.
- **Through the UI:**\
End users can trigger exports manually through CE.SDK’s built-in export options. The UI provides an intuitive way to export designs without writing code, ideal for non-technical users.
Both methods provide access to core conversion features, ensuring you can choose the workflow that fits your project.
## Customization Options
When exporting designs, CE.SDK offers several customization options to meet specific output requirements:
- **Resolution and DPI Settings:**\
Adjust the resolution for raster exports like PNG to optimize for screen or print.
- **Output Dimensions:**\
Define custom width and height settings for the exported file, independent of the original design size.
- **File Quality:**\
For formats that support compression (such as PNG or PDF), you can control the quality level to balance file size and visual fidelity.
- **Background Transparency:**\
Choose whether to preserve transparent backgrounds or export with a solid background color.
- **Page Selection:**\
When exporting multi-page documents (e.g., PDFs), you can select specific pages or export all pages at once.
- **Video Frame Selection:**\
When exporting from a video, you can select a specific frame to export as an image, allowing for thumbnail generation or frame captures.
These options help ensure that your exported content is optimized for its intended platform, whether it's a website, a mobile app, or a print-ready document.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To Base64"
description: "Convert CE.SDK exports to Base64-encoded strings for embedding in URLs, storing in databases, or transmitting via APIs."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/conversion/to-base64-39ff25/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/) > [To Base64](https://img.ly/docs/cesdk/react-native/conversion/to-base64-39ff25/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/conversion/to-base64-39ff25/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/conversion/to-base64-39ff25/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To Binary Data"
description: "Export design blocks to platform-native binary data for saving, uploading, or sharing."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/conversion/to-blob-4e6493/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/) > [To Binary Data](https://img.ly/docs/cesdk/react-native/conversion/to-blob-4e6493/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/conversion/to-blob-4e6493/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/conversion/to-blob-4e6493/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To PDF"
description: "Convert your design or document into a high-quality, print-ready PDF format."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/conversion/to-pdf-eb937f/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/) > [To PDF](https://img.ly/docs/cesdk/react-native/conversion/to-pdf-eb937f/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/conversion/to-pdf-eb937f/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/conversion/to-pdf-eb937f/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Audio"
description: "Documentation for Audio"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/)
---
---
## Related Pages
- [Add Sound Effects](https://img.ly/docs/cesdk/react-native/create-audio/audio/add-sound-effects-9e984e/) - Learn how to add custom sound effects using audio buffers and raw PCM data
- [Add Music](https://img.ly/docs/cesdk/react-native/create-audio/audio/add-music-5b182c/) - Add background music and audio tracks to video projects using CE.SDK's audio block system.
- [Record Voiceover](https://img.ly/docs/cesdk/react-native/create-audio/audio/record-voiceover-07e8e1/) - Let users record voiceover clips directly in the editor UI.
- [Adjust Audio Volume](https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-volume-7ecc4a/) - Learn how to adjust audio volume in CE.SDK to control playback levels, mute audio, and balance multiple audio sources in video projects.
- [Fade Audio In and Out](https://img.ly/docs/cesdk/react-native/create-audio/audio/fade-a4d7e2/) - Ramp audio up at the start of a clip and down at the end using CE.SDK's audio fade API, with configurable durations and easing curves.
- [Adjust Audio Playback Speed](https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-speed-908d57/) - Learn how to adjust audio playback speed in CE.SDK to create slow-motion, time-stretched, and fast-forward audio effects.
- [Loop Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio/loop-937be7/) - Create seamless repeating audio playback for background music and sound effects using CE.SDK's audio looping system.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add Music"
description: "Add background music and audio tracks to video projects using CE.SDK's audio block system."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/add-music-5b182c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Add Music](https://img.ly/docs/cesdk/react-native/create-audio/audio/add-music-5b182c/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/add-music-5b182c/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/add-music-5b182c/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add Sound Effects"
description: "Learn how to add custom sound effects using audio buffers and raw PCM data"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/add-sound-effects-9e984e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Add Sound Effects](https://img.ly/docs/cesdk/react-native/create-audio/audio/add-sound-effects-9e984e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/add-sound-effects-9e984e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/add-sound-effects-9e984e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Adjust Audio Playback Speed"
description: "Learn how to adjust audio playback speed in CE.SDK to create slow-motion, time-stretched, and fast-forward audio effects."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-speed-908d57/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Adjust Speed](https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-speed-908d57/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/adjust-speed-908d57/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/adjust-speed-908d57/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Adjust Audio Volume"
description: "Learn how to adjust audio volume in CE.SDK to control playback levels, mute audio, and balance multiple audio sources in video projects."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-volume-7ecc4a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Adjust Volume](https://img.ly/docs/cesdk/react-native/create-audio/audio/adjust-volume-7ecc4a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/adjust-volume-7ecc4a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/adjust-volume-7ecc4a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Fade Audio In and Out"
description: "Ramp audio up at the start of a clip and down at the end using CE.SDK's audio fade API, with configurable durations and easing curves."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/fade-a4d7e2/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Fade In and Out](https://img.ly/docs/cesdk/react-native/create-audio/audio/fade-a4d7e2/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/fade-a4d7e2/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/fade-a4d7e2/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Loop Audio"
description: "Create seamless repeating audio playback for background music and sound effects using CE.SDK's audio looping system."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/loop-937be7/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Loop](https://img.ly/docs/cesdk/react-native/create-audio/audio/loop-937be7/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/loop-937be7/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/loop-937be7/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Record Voiceover"
description: "Let users record voiceover clips directly in the editor UI."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-audio/audio/record-voiceover-07e8e1/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Audio](https://img.ly/docs/cesdk/react-native/create-audio/audio-2f700b/) > [Record Voiceover](https://img.ly/docs/cesdk/react-native/create-audio/audio/record-voiceover-07e8e1/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-audio/audio/record-voiceover-07e8e1/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-audio/audio/record-voiceover-07e8e1/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Compositions"
description: "Combine and arrange multiple elements to create complex, multi-page, or layered design compositions."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition-db709c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/create-composition/overview-5b19c5/) - Combine and arrange multiple elements to create complex, multi-page, or layered design compositions.
- [Multi-Page Layouts](https://img.ly/docs/cesdk/react-native/create-composition/multi-page-4d2b50/) - Create and manage multi-page designs in CE.SDK for documents like brochures, presentations, and catalogs with multiple pages in a single scene.
- [Create a Collage](https://img.ly/docs/cesdk/react-native/create-composition/collage-f7d28d/) - Create collages by applying layout templates and transferring content between scenes.
- [Design a Layout](https://img.ly/docs/cesdk/react-native/create-composition/layout-b66311/) - Create structured compositions using scene layouts, positioning systems, and hierarchical block organization for collages, magazines, and multi-page documents.
- [Add a Background](https://img.ly/docs/cesdk/react-native/create-composition/add-background-375a47/) - Add backgrounds to designs using fills for pages and shapes, and the background color property for text blocks.
- [Positioning and Alignment](https://img.ly/docs/cesdk/react-native/create-composition/position-and-align-cc6b6a/) - Precisely position, align, and distribute objects using guides, snapping, and alignment tools.
- [Group and Ungroup Objects](https://img.ly/docs/cesdk/react-native/create-composition/group-and-ungroup-62565a/) - Group multiple design elements together so they move, scale, and transform as a single unit; ungroup to edit them individually.
- [Layer Management](https://img.ly/docs/cesdk/react-native/create-composition/layer-management-18f07a/) - Organize design elements using a layer stack for precise control over stacking and visibility.
- [Lock Design](https://img.ly/docs/cesdk/react-native/create-composition/lock-design-0a81de/) - Protect design elements from unwanted modifications using CE.SDK's scope-based permission system. Control which properties users can edit at both global and block levels.
- [Blend Modes](https://img.ly/docs/cesdk/react-native/create-composition/blend-modes-ad3519/) - Apply blend modes to elements to control how colors and layers interact visually.
- [Programmatic Creation](https://img.ly/docs/cesdk/react-native/create-composition/programmatic-a688bf/) - Documentation for Programmatic Creation
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add a Background"
description: "Add backgrounds to designs using fills for pages and shapes, and the background color property for text blocks."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/add-background-375a47/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Add a Background](https://img.ly/docs/cesdk/react-native/create-composition/add-background-375a47/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/add-background-375a47/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/add-background-375a47/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Blend Modes"
description: "Apply blend modes to elements to control how colors and layers interact visually."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/blend-modes-ad3519/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Blend Modes](https://img.ly/docs/cesdk/react-native/create-composition/blend-modes-ad3519/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/blend-modes-ad3519/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/blend-modes-ad3519/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create a Collage"
description: "Create collages by applying layout templates and transferring content between scenes."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/collage-f7d28d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Create a Collage](https://img.ly/docs/cesdk/react-native/create-composition/collage-f7d28d/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/collage-f7d28d/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/collage-f7d28d/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Group and Ungroup Objects"
description: "Group multiple design elements together so they move, scale, and transform as a single unit; ungroup to edit them individually."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/group-and-ungroup-62565a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Group and Ungroup Objects](https://img.ly/docs/cesdk/react-native/create-composition/group-and-ungroup-62565a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/group-and-ungroup-62565a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/group-and-ungroup-62565a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Layer Management"
description: "Organize design elements using a layer stack for precise control over stacking and visibility."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/layer-management-18f07a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Layers](https://img.ly/docs/cesdk/react-native/create-composition/layer-management-18f07a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/layer-management-18f07a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/layer-management-18f07a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Design a Layout"
description: "Create structured compositions using scene layouts, positioning systems, and hierarchical block organization for collages, magazines, and multi-page documents."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/layout-b66311/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Design a Layout](https://img.ly/docs/cesdk/react-native/create-composition/layout-b66311/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/layout-b66311/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/layout-b66311/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Lock Design"
description: "Protect design elements from unwanted modifications using CE.SDK's scope-based permission system. Control which properties users can edit at both global and block levels."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/lock-design-0a81de/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Lock Design](https://img.ly/docs/cesdk/react-native/create-composition/lock-design-0a81de/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/lock-design-0a81de/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/lock-design-0a81de/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Multi-Page Layouts"
description: "Create and manage multi-page designs in CE.SDK for documents like brochures, presentations, and catalogs with multiple pages in a single scene."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/multi-page-4d2b50/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Multi-Page Layouts](https://img.ly/docs/cesdk/react-native/create-composition/multi-page-4d2b50/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/multi-page-4d2b50/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/multi-page-4d2b50/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Combine and arrange multiple elements to create complex, multi-page, or layered design compositions."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/overview-5b19c5/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Overview](https://img.ly/docs/cesdk/react-native/create-composition/overview-5b19c5/)
---
In CreativeEditor SDK (CE.SDK), a *composition* is an arrangement of multiple design elements—such as images, text, shapes, graphics, and effects—combined into a single, cohesive visual layout. Unlike working with isolated elements, compositions allow you to design complex, multi-element visuals that tell a richer story or support more advanced use cases.
All composition processing is handled entirely on the client side, ensuring fast, secure, and efficient editing without requiring server infrastructure.
You can use compositions to create a wide variety of projects, including social media posts, marketing materials, collages, and multi-page exports like PDFs. Whether you are building layouts manually through the UI or generating them dynamically with code, compositions give you the flexibility and control to design at scale.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Working with Multiple Pages and Artboards
CE.SDK supports working with multiple artboards or canvases within a single document, enabling you to design multi-page layouts or create several design variations within the same project.
Typical multi-page use cases include:
- Designing multi-page marketing brochures.
- Exporting designs as multi-page PDFs.
- Building multiple versions of a design for different audiences or platforms.
## Working with Elements
You can easily arrange and manage elements within a composition:
- **Positioning and Aligning:** Move elements precisely and align them to each other or to the canvas.
- **Guides and Snapping:** Use visual guides and automatic snapping to align objects accurately.
- **Grouping:** Group elements for easier collective movement and editing.
- **Layer Management:** Control the stacking order and organize elements in layers.
- **Locking:** Lock elements to prevent accidental changes during editing.
## UI vs. Programmatic Creation
### Using the UI
The CE.SDK UI provides drag-and-drop editing, alignment tools, a layer panel, and snapping guides, making it easy to visually build complex compositions. You can group, align, lock, and arrange elements directly through intuitive controls.
### Programmatic Creation
You can also build compositions programmatically by using CE.SDK’s APIs. This is especially useful for:
- Automatically generating large volumes of designs.
- Creating data-driven layouts.
- Integrating CE.SDK into a larger automated workflow.
## Exporting Compositions
CE.SDK compositions can be exported in several formats:
| Category | Supported Formats |
| ----------- | ------------------------------------------------------------------------------------ |
| **Images** | `.png` (with transparency), `.jpeg`, `.webp`, `.tga` |
| **Vector** | `.svg` (scalable vector graphics with text as paths) |
| **Print** | `.pdf` (supports underlayer printing and spot colors) |
| **Video** | `.mp4` (H.264 or H.265 on supported platforms with limited transparency support) |
| **Scene** | `.imgly` or `.scene` (description of the scene without any assets) |
| **Archive** | `.imgly` or `.zip` (fully self-contained archive that bundles the scene file with all assets) |
> **Note:** Our custom cross-platform C++ based rendering and layout engine ensures
> consistent output quality across devices.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Positioning and Alignment"
description: "Precisely position, align, and distribute objects using guides, snapping, and alignment tools."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/position-and-align-cc6b6a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Position and Align](https://img.ly/docs/cesdk/react-native/create-composition/position-and-align-cc6b6a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/position-and-align-cc6b6a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/position-and-align-cc6b6a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Programmatic Creation"
description: "Documentation for Programmatic Creation"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-composition/programmatic-a688bf/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Compositions](https://img.ly/docs/cesdk/react-native/create-composition-db709c/) > [Programmatic Creation](https://img.ly/docs/cesdk/react-native/create-composition/programmatic-a688bf/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-composition/programmatic-a688bf/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-composition/programmatic-a688bf/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create a local Maven repository for offline builds"
description: "Download CE.SDK Android artifacts for a specific version and resolve them from a local Maven repository."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-offline-maven-repository-0d42fd/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Offline Maven Repository](https://img.ly/docs/cesdk/react-native/create-offline-maven-repository-0d42fd/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-offline-maven-repository-0d42fd/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create a precompiled XCFramework for offline builds"
description: "Compiling CE.SDK Swift packages and other project dependencies to a binary XCFramework to support easy building in airgapped environments."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-prebuilt-xcframework-c67971/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Prebuilt XCFramework](https://img.ly/docs/cesdk/react-native/create-prebuilt-xcframework-c67971/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-prebuilt-xcframework-c67971/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Templates"
description: "Learn how to create, import, and manage reusable templates to streamline design creation in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates-3aef79/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/)
---
---
## Related Pages
- [Overview](https://img.ly/docs/cesdk/react-native/create-templates/overview-4ebe30/) - Learn how to create, import, and manage reusable templates to streamline design creation in CE.SDK.
- [Create From Scratch](https://img.ly/docs/cesdk/react-native/create-templates/from-scratch-663cda/) - Build reusable design templates programmatically using CE.SDK's APIs. Create scenes, add text and graphic blocks, configure placeholders and variables, apply editing constraints, and save templates for reuse.
- [Import Templates](https://img.ly/docs/cesdk/react-native/create-templates/import-e50084/) - Load and import design templates into CE.SDK from URLs, archives, and serialized strings.
- [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/) - Use variables and placeholders to inject dynamic data into templates at design or runtime.
- [Lock the Template](https://img.ly/docs/cesdk/react-native/create-templates/lock-131489/) - Restrict editing access to specific elements or properties in a template to enforce design rules.
- [Edit or Remove Templates](https://img.ly/docs/cesdk/react-native/create-templates/edit-or-remove-38a8be/) - Modify existing templates and manage template lifecycle by loading, editing, saving, and removing templates from asset sources.
- [Add to Template Library](https://img.ly/docs/cesdk/react-native/create-templates/add-to-template-library-8bfbc7/) - Save and organize templates in an asset source for users to browse and apply from the template library.
- [Overview](https://img.ly/docs/cesdk/react-native/use-templates/overview-ae74e1/) - Learn how to browse, apply, and dynamically populate templates in CE.SDK to streamline design workflows.
- [Template Library](https://img.ly/docs/cesdk/react-native/use-templates/library-b3c704/) - Learn how to provide a set of predefined templates in the CreativeEditor SDK.
- [Apply a Template](https://img.ly/docs/cesdk/react-native/use-templates/apply-template-35c73e/) - Learn how to apply template scenes via API in the CreativeEditor SDK.
- [Generate From Template](https://img.ly/docs/cesdk/react-native/use-templates/generate-334e15/) - Learn how to generate finished designs from templates by loading, populating variables, and exporting to images, PDFs, or videos.
- [Replace Content](https://img.ly/docs/cesdk/react-native/use-templates/replace-content-4c482b/) - Learn how to dynamically replace content within templates using CE.SDK's placeholder and variable systems.
- [Use Templates Programmatically](https://img.ly/docs/cesdk/react-native/use-templates/programmatic-9349f3/) - Work with templates programmatically through CE.SDK's engine APIs to load existing templates, build new templates from scratch, modify template structures, and populate templates with dynamic data for batch processing and automation.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Dynamic Content"
description: "Use variables and placeholders to inject dynamic data into templates at design or runtime."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/)
---
---
## Related Pages
- [Text Variables](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/text-variables-7ecb50/) - Define dynamic text elements that can be populated with custom values during design generation.
- [Placeholders](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/placeholders-d9ba8a/) - Use placeholders to mark editable image, video, or text areas within a locked template layout.
- [Set Editing Constraints](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/set-editing-constraints-c892c0/) - Learn how to control editing capabilities in CE.SDK templates using the Scope system to lock positions, prevent transformations, and create guided editing experiences
- [Form-Based Editing](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/form-based-editing-a8a779/) - Build custom form interfaces for template customization using CE.SDK variables and placeholders
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Form-Based Editing"
description: "Build custom form interfaces for template customization using CE.SDK variables and placeholders"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/form-based-editing-a8a779/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/) > [Form-Based Editing](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/form-based-editing-a8a779/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/add-dynamic-content/form-based-editing-a8a779/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/add-dynamic-content/form-based-editing-a8a779/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Placeholders"
description: "Use placeholders to mark editable image, video, or text areas within a locked template layout."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/placeholders-d9ba8a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/) > [Placeholders](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/placeholders-d9ba8a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/add-dynamic-content/placeholders-d9ba8a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/add-dynamic-content/placeholders-d9ba8a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Set Editing Constraints"
description: "Learn how to control editing capabilities in CE.SDK templates using the Scope system to lock positions, prevent transformations, and create guided editing experiences"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/set-editing-constraints-c892c0/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/) > [Set Editing Constraints](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/set-editing-constraints-c892c0/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/add-dynamic-content/set-editing-constraints-c892c0/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/add-dynamic-content/set-editing-constraints-c892c0/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Text Variables"
description: "Define dynamic text elements that can be populated with custom values during design generation."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/text-variables-7ecb50/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Dynamic Content](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content-53fad7/) > [Text Variables](https://img.ly/docs/cesdk/react-native/create-templates/add-dynamic-content/text-variables-7ecb50/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/add-dynamic-content/text-variables-7ecb50/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/add-dynamic-content/text-variables-7ecb50/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add to Template Library"
description: "Save and organize templates in an asset source for users to browse and apply from the template library."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/add-to-template-library-8bfbc7/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Add to Template Library](https://img.ly/docs/cesdk/react-native/create-templates/add-to-template-library-8bfbc7/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/add-to-template-library-8bfbc7/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/add-to-template-library-8bfbc7/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Edit or Remove Templates"
description: "Modify existing templates and manage template lifecycle by loading, editing, saving, and removing templates from asset sources."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/edit-or-remove-38a8be/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Edit or Remove Templates](https://img.ly/docs/cesdk/react-native/create-templates/edit-or-remove-38a8be/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/edit-or-remove-38a8be/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/edit-or-remove-38a8be/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create From Scratch"
description: "Build reusable design templates programmatically using CE.SDK's APIs. Create scenes, add text and graphic blocks, configure placeholders and variables, apply editing constraints, and save templates for reuse."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/from-scratch-663cda/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Create From Scratch](https://img.ly/docs/cesdk/react-native/create-templates/from-scratch-663cda/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/from-scratch-663cda/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/from-scratch-663cda/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Import Templates"
description: "Load and import design templates into CE.SDK from URLs, archives, and serialized strings."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/import-e50084/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Import Templates](https://img.ly/docs/cesdk/react-native/create-templates/import-e50084/)
---
---
## Related Pages
- [From Scene File](https://img.ly/docs/cesdk/react-native/create-templates/import/from-scene-file-52a01e/) - Load and import design templates from scene files in CE.SDK
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "From Scene File"
description: "Load and import design templates from scene files in CE.SDK"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/import/from-scene-file-52a01e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Import Templates](https://img.ly/docs/cesdk/react-native/create-templates/import-e50084/) > [From Scene File](https://img.ly/docs/cesdk/react-native/create-templates/import/from-scene-file-52a01e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/import/from-scene-file-52a01e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/import/from-scene-file-52a01e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Lock the Template"
description: "Restrict editing access to specific elements or properties in a template to enforce design rules."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/lock-131489/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Lock the Template](https://img.ly/docs/cesdk/react-native/create-templates/lock-131489/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-templates/lock-131489/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-templates/lock-131489/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Learn how to create, import, and manage reusable templates to streamline design creation in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-templates/overview-4ebe30/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Use Templates](https://img.ly/docs/cesdk/react-native/create-templates-3aef79/) > [Overview](https://img.ly/docs/cesdk/react-native/create-templates/overview-4ebe30/)
---
In CE.SDK, a *template* is a reusable, structured design that defines editable areas and constraints for end users. Templates can be based on static visuals or video compositions and are used to guide content creation, enable mass personalization, and enforce design consistency.
Unlike a regular editable design, a template introduces structure through placeholders and constraints, allowing you to define which elements users can change and how. Templates support both static output formats (like PNG, PDF) and videos (like MP4), and can be created or applied using either the CE.SDK UI or API.
Templates are a core part of enabling design automation, personalization, and streamlined workflows in any app that includes creative functionality.
[Explore Demos](https://img.ly/showcases/cesdk?tags=android%2Cios)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Why Use Templates?
Templates are a powerful tool for:
- Maintaining **brand consistency** across all user-generated designs.
- **Scaling** asset creation for campaigns, catalogs, or print products.
- Providing a **guided experience** where users adapt content without starting from scratch.
They are ideal for use cases like:
- Personalized marketing campaigns
- Dynamic social media ads
- Product catalogs and e-commerce visuals
- Custom print materials and photo books
## Ways to Create Templates
You can create templates from scratch or by importing an existing template.
**From Scratch:** Start a new project and design a scene with the intent of turning it into a template. You can define variables, placeholders, and constraints directly in the editor.
**Import Existing Designs:** If you already have assets created in other tools, you can import them as templates.
| Format | Description |
| -------- | --------------------------------------------------------------- |
| `.idml` | InDesign (via `@imgly/idml-importer`) |
| `.psd` | Photoshop (via `@imgly/psd-importer`) |
| `.pdf` | PDF (via `@imgly/pdf-importer`) |
| `.pptx` | PowerPoint (via `@imgly/pptx-importer`) |
| `.imgly` | CE.SDK Native (scene or archive, detected automatically) |
| `.scene` | CE.SDK Native (scene extension) |
| `.zip` | CE.SDK Native (archive extension) |
Non-native design files are converted into editable CE.SDK scenes by dedicated
importer packages rather than uploaded as media assets.
> **Note:** The `.idml`, `.psd`, `.pdf` and `.pptx` importers ship as separate packages
> that you install in addition to CE.SDK. These importer packages run only in
> the browser and in Node.js. They are not available on any other platform,
> including Android, iOS, Flutter and React Native.
> **Note:** Need to import a format not listed here? CE.SDK allows you to create custom
> importers for any file type by using our Scene and Block APIs to generate
> scenes programmatically.
These imported designs can then be adapted into editable, structured templates inside CE.SDK.
## Dynamic Content in Templates
Templates support dynamic content to enable data-driven generation of assets. CE.SDK provides several mechanisms:
- **Text Variables**: Bind text elements to dynamic values (e.g., user names, product SKUs).
- **Image Placeholders**: Reserve space for images to be inserted later.
- **Video Placeholders**: Reserve space for videos, enabling dynamic insertion of video clips in a templated layout.
This makes it easy to generate hundreds or thousands of personalized variations from a single design.
## Controlling Template Editing
Templates in CE.SDK offer powerful tools for controlling the editing experience:
- **Editing Constraints**: Lock specific properties such as position, style, or content of elements.
- **Locked Templates**: Prevent any edits outside allowed fields to protect design integrity.
- **Fully Editable Templates**: Allow unrestricted editing for power users or advanced workflows.
- **Form-Based Editing**: Build a custom editing interface for users to fill in variables and placeholders via input forms (a ready-made UI is not currently provided, but can be built using our APIs).
These options let you strike a balance between creative freedom and design control.
## Working with Templates Programmatically and Through the UI
You can manage templates using both the UI and API:
- **UI Integration**: Users can select, apply, and edit templates directly inside the CE.SDK interface.
- **Programmatic Access**: Use the SDK’s APIs to create, apply, or modify templates as part of an automated workflow.
- **Asset Library Integration**: Templates can appear in the asset library, allowing users to browse and pick templates visually.
- The Asset Library's appearance and behavior can be fully customized to fit your app’s needs.
## Managing Templates
Templates are saved and reused just like any other CE.SDK asset:
- **Save Templates** to a *Template Library*.
- **Edit or Remove** existing templates from your asset library.
- Templates are saved as Scene (`.scene`) or Archive (`.zip`) files and can be loaded across all platforms supported by CE.SDK (Web, Mobile, Server, Desktop)
## Default and Premium Templates
- **Default Templates**: CE.SDK may include a small number of starter templates depending on your configuration.
- **Premium Templates**: IMG.LY offers a growing collection of professionally designed templates available for licensing.
- Templates can be imported, customized, and used directly within your app.
Check your license or speak with our team for details on accessing premium templates.
## Templates as Assets
Templates are treated as **assets** in CE.SDK. That means:
- They can be included in local or remote asset libraries.
- They can be shared, versioned, and indexed using the same systems as images or videos.
- You can apply your own metadata, tags, and search capabilities to them.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Videos"
description: "Learn how to create and customize videos in CE.SDK using scenes, assets, and time-based editing."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video-c41a08/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/)
---
---
## Related Pages
- [Create Videos Overview](https://img.ly/docs/cesdk/react-native/create-video/overview-b06512/) - Learn how to create and customize videos in CE.SDK using scenes, assets, and time-based editing.
- [Timeline Editor](https://img.ly/docs/cesdk/react-native/create-video/timeline-editor-912252/) - Use the timeline editor to arrange and edit video clips, audio, and animations frame by frame.
- [Control Audio and Video](https://img.ly/docs/cesdk/react-native/create-video/control-daba54/) - Learn to play, pause, seek, and preview audio and video content in CE.SDK using playback controls and solo mode.
- [Trim](https://img.ly/docs/cesdk/react-native/edit-video/trim-4f688b/) - Documentation for Trim
- [Force Trim](https://img.ly/docs/cesdk/react-native/edit-video/force-trim-3c1e8a/) - Enforce minimum and maximum video durations in the editor UI.
- [Split Video and Audio](https://img.ly/docs/cesdk/react-native/edit-video/split-464167/) - Learn how to split video and audio clips at specific time points in CE.SDK, creating two independent segments from a single clip.
- [Join and Arrange Video Clips](https://img.ly/docs/cesdk/react-native/edit-video/join-and-arrange-3bbc30/) - Combine multiple video clips into sequences and organize them on the timeline using tracks and time offsets in CE.SDK.
- [Apply Transitions](https://img.ly/docs/cesdk/react-native/create-video/apply-transitions-146026/) - Documentation for Apply Transitions
- [Edit Captions](https://img.ly/docs/cesdk/react-native/edit-video/edit-captions-ed9c17/) - Documentation for the editor's caption authoring surface
- [Update Caption Presets](https://img.ly/docs/cesdk/react-native/create-video/update-caption-presets-e9c385/) - Extend video captions with custom caption styles using simple content.json updates
- [Add Watermark](https://img.ly/docs/cesdk/react-native/edit-video/add-watermark-762ce6/) - Add text and image watermarks to videos using CE.SDK for copyright protection, branding, and content attribution with timeline management and visibility controls.
- [Annotation](https://img.ly/docs/cesdk/react-native/edit-video/annotation-e9cbad/) - Documentation for Annotation
- [Redact Sensitive Content in Videos](https://img.ly/docs/cesdk/react-native/edit-video/redaction-cf6d03/) - Redact sensitive video content using blur, pixelization, or solid overlays. Essential for privacy protection when obscuring faces, license plates, or personal information.
- [Record Reaction](https://img.ly/docs/cesdk/react-native/create-video/record-reaction-502c3b/) - Record reactions to a base video and compose them into an editable video scene.
- [Lock Design](https://img.ly/docs/cesdk/react-native/create-video/lock-design-e92ce4/) - Documentation for Lock Design
- [Programmatic Creation](https://img.ly/docs/cesdk/react-native/create-video/programmatic-2b243c/) - Documentation for Programmatic Creation
- [Programmatic Editing](https://img.ly/docs/cesdk/react-native/edit-video/programmatic-8429af/) - Edit video scenes with CE.SDK Engine APIs.
- [Limitations](https://img.ly/docs/cesdk/react-native/create-video/limitations-6a740d/) - Understand video resolution limits, duration constraints, codec support, and browser-specific restrictions in CE.SDK.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Apply Transitions"
description: "Documentation for Apply Transitions"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/apply-transitions-146026/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Apply Transitions](https://img.ly/docs/cesdk/react-native/create-video/apply-transitions-146026/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/apply-transitions-146026/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/apply-transitions-146026/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Control Audio and Video"
description: "Learn to play, pause, seek, and preview audio and video content in CE.SDK using playback controls and solo mode."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/control-daba54/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Control Audio and Video](https://img.ly/docs/cesdk/react-native/create-video/control-daba54/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/control-daba54/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/control-daba54/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Limitations"
description: "Understand video resolution limits, duration constraints, codec support, and browser-specific restrictions in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/limitations-6a740d/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Limitations](https://img.ly/docs/cesdk/react-native/create-video/limitations-6a740d/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/limitations-6a740d/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/limitations-6a740d/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Lock Design"
description: "Documentation for Lock Design"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/lock-design-e92ce4/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Lock Design](https://img.ly/docs/cesdk/react-native/create-video/lock-design-e92ce4/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/lock-design-e92ce4/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/lock-design-e92ce4/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Videos Overview"
description: "Learn how to create and customize videos in CE.SDK using scenes, assets, and time-based editing."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/overview-b06512/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Overview](https://img.ly/docs/cesdk/react-native/create-video/overview-b06512/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/overview-b06512/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/overview-b06512/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Programmatic Creation"
description: "Documentation for Programmatic Creation"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/programmatic-2b243c/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Programmatic Creation](https://img.ly/docs/cesdk/react-native/create-video/programmatic-2b243c/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/programmatic-2b243c/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/programmatic-2b243c/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Record Reaction"
description: "Record reactions to a base video and compose them into an editable video scene."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/record-reaction-502c3b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Record Reaction](https://img.ly/docs/cesdk/react-native/create-video/record-reaction-502c3b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/record-reaction-502c3b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/record-reaction-502c3b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Timeline Editor"
description: "Use the timeline editor to arrange and edit video clips, audio, and animations frame by frame."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/timeline-editor-912252/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Timeline Editor](https://img.ly/docs/cesdk/react-native/create-video/timeline-editor-912252/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/timeline-editor-912252/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/timeline-editor-912252/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Update Caption Presets"
description: "Extend video captions with custom caption styles using simple content.json updates"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/create-video/update-caption-presets-e9c385/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Update Caption Presets](https://img.ly/docs/cesdk/react-native/create-video/update-caption-presets-e9c385/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/create-video/update-caption-presets-e9c385/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/create-video/update-caption-presets-e9c385/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add Watermark"
description: "Add text and image watermarks to protect images, indicate ownership, or add branding using CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/add-watermark-679de0/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/add-watermark-679de0/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/add-watermark-679de0/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Annotation"
description: "Documentation for Annotation"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/annotation-142604/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/annotation-142604/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/annotation-142604/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Remove Background"
description: "Remove image backgrounds to isolate subjects or prepare assets for compositing and reuse."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/remove-bg-9dfcf7/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Plugins](https://img.ly/docs/cesdk/react-native/plugins-693c48/) > [Background Removal](https://img.ly/docs/cesdk/react-native/edit-image/remove-bg-9dfcf7/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/remove-bg-9dfcf7/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/remove-bg-9dfcf7/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Replace Colors"
description: "Documentation for Replace Colors"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/replace-colors-6ede17/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/replace-colors-6ede17/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/replace-colors-6ede17/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Transform"
description: "Crop, resize, rotate, scale, or flip images using CE.SDK's built-in transformation tools."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform-9d189b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform-9d189b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform-9d189b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Crop"
description: "Cut out specific areas of an image to focus on key content or change aspect ratio."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/crop-f67a47/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform/crop-f67a47/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform/crop-f67a47/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Flip"
description: "Documentation for Flip"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/flip-035e9f/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform/flip-035e9f/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform/flip-035e9f/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Move Images"
description: "Position images precisely on the canvas using absolute or percentage-based coordinates."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/move-818dd9/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
Image positioning in CreativeEditor SDK (CE.SDK) allows you to precisely control where images appear on the canvas. You can move images using absolute pixel coordinates or percentage-based positioning for responsive layouts, making it essential for creating precise layouts and dynamic compositions.
You can position images both through the built-in user interface and programmatically using the SDK's APIs, providing flexibility for different workflow requirements.
[Launch Web Demo](https://img.ly/showcases/cesdk)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Positioning Methods
CE.SDK supports several approaches to image positioning:
- **Absolute Positioning**: Use precise pixel coordinates for exact placement
- **Percentage Positioning**: Position relative to parent container for responsive designs
- **UI Drag & Drop**: Interactive positioning through direct manipulation
- **Group Movement**: Move multiple elements together while maintaining alignment
## Applying Positioning
### UI-Based Positioning
You can move images directly in the CE.SDK user interface by dragging them to new positions. Users can drag and drop elements anywhere on the canvas, making it easy to adjust layouts visually and interactively.
### Programmatic Positioning
Developers can position images programmatically, using the SDK's API. This allows for precise coordinate control, animated movements, and integration with layout systems or template constraints.
## Combining with Other Transforms
Image positioning works seamlessly with other transformation operations like rotation, scaling, and cropping. You can chain multiple transformations to create complex layouts while maintaining precise control over element placement.
## Guides
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Resize"
description: "Change image dimensions by setting explicit width and height values using absolute units, percentage-based sizing, or auto-sizing modes."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/resize-407242/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform/resize-407242/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform/resize-407242/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Rotate Images"
description: "Rotate images to adjust orientation, correct crooked photos, or create creative effects using CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/rotate-5f39c9/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform/rotate-5f39c9/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform/rotate-5f39c9/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Scale"
description: "Documentation for Scale"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-image/transform/scale-ebe367/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-image/transform/scale-ebe367/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-image/transform/scale-ebe367/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Add Watermark"
description: "Add text and image watermarks to videos using CE.SDK for copyright protection, branding, and content attribution with timeline management and visibility controls."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/add-watermark-762ce6/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Add Watermark](https://img.ly/docs/cesdk/react-native/edit-video/add-watermark-762ce6/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/add-watermark-762ce6/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/add-watermark-762ce6/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Annotation"
description: "Documentation for Annotation"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/annotation-e9cbad/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Annotation](https://img.ly/docs/cesdk/react-native/edit-video/annotation-e9cbad/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/annotation-e9cbad/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/annotation-e9cbad/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Edit Captions"
description: "Documentation for the editor's caption authoring surface"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/edit-captions-ed9c17/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Edit Captions](https://img.ly/docs/cesdk/react-native/edit-video/edit-captions-ed9c17/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/edit-captions-ed9c17/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Force Trim"
description: "Enforce minimum and maximum video durations in the editor UI."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/force-trim-3c1e8a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Force Trim](https://img.ly/docs/cesdk/react-native/edit-video/force-trim-3c1e8a/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/force-trim-3c1e8a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/force-trim-3c1e8a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Join and Arrange Video Clips"
description: "Combine multiple video clips into sequences and organize them on the timeline using tracks and time offsets in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/join-and-arrange-3bbc30/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Join and Arrange](https://img.ly/docs/cesdk/react-native/edit-video/join-and-arrange-3bbc30/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/join-and-arrange-3bbc30/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/join-and-arrange-3bbc30/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Programmatic Editing"
description: "Edit video scenes with CE.SDK Engine APIs."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/programmatic-8429af/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Programmatic Editing](https://img.ly/docs/cesdk/react-native/edit-video/programmatic-8429af/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/programmatic-8429af/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/programmatic-8429af/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Redact Sensitive Content in Videos"
description: "Redact sensitive video content using blur, pixelization, or solid overlays. Essential for privacy protection when obscuring faces, license plates, or personal information."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/redaction-cf6d03/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Redaction](https://img.ly/docs/cesdk/react-native/edit-video/redaction-cf6d03/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/redaction-cf6d03/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/redaction-cf6d03/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Split Video and Audio"
description: "Learn how to split video and audio clips at specific time points in CE.SDK, creating two independent segments from a single clip."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/split-464167/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Split](https://img.ly/docs/cesdk/react-native/edit-video/split-464167/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/split-464167/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/split-464167/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Crop Videos"
description: "Cut out specific areas of a video to focus on key content or change aspect ratio."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/crop-8b1741/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/transform/crop-8b1741/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/transform/crop-8b1741/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Flip Videos"
description: "Flip videos horizontally or vertically to create mirror effects and symmetrical designs."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/flip-a603b0/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
Video flipping in CreativeEditor SDK (CE.SDK) allows you to mirror video content horizontally or vertically. This transformation is useful for creating symmetrical designs, correcting orientation issues, or achieving specific visual effects in your video projects.
You can flip videos both through the built-in user interface and programmatically using the SDK's APIs, providing flexibility for different workflow requirements.
[Launch Web Demo](https://img.ly/showcases/cesdk)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Available Flip Operations
CE.SDK supports two types of video flipping:
- **Horizontal Flip**: Mirror the video along its vertical axis, creating a left-right reflection
- **Vertical Flip**: Mirror the video along its horizontal axis, creating a top-bottom reflection
These operations can be applied individually or combined to achieve the desired visual effect.
## Applying Flips
### UI-Based Flipping
You can apply flips directly in the CE.SDK user interface. The editor provides intuitive controls for horizontally and vertically flipping videos, making it easy for users to quickly mirror content without writing code.
### Programmatic Flipping
Developers can also apply flips programmatically, using the SDK's API. This allows for dynamic video adjustments based on application logic, user input, or automated processes.
## Combining with Other Transforms
Video flipping works seamlessly with other transformation operations like rotation, scaling, and cropping. You can chain multiple transformations to create complex visual effects while maintaining video quality.
## Guides
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Move Videos"
description: "Position video elements precisely on the canvas using absolute or percentage-based coordinates."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/move-aa9d89/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
Video positioning in CreativeEditor SDK (CE.SDK) allows you to precisely control where video elements appear on the canvas. You can move videos using absolute pixel coordinates or percentage-based positioning for responsive layouts, making it essential for creating precise video layouts and dynamic compositions.
You can position videos both through the built-in user interface and programmatically using the SDK's APIs, providing flexibility for different workflow requirements.
[Launch Web Demo](https://img.ly/showcases/cesdk)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Positioning Methods
CE.SDK supports several approaches to video positioning:
- **Absolute Positioning**: Use precise pixel coordinates for exact placement
- **Percentage Positioning**: Position relative to parent container for responsive designs
- **UI Drag & Drop**: Interactive positioning through direct manipulation
- **Group Movement**: Move multiple video elements together while maintaining alignment
## Applying Positioning
### UI-Based Positioning
You can move videos directly in the CE.SDK user interface by dragging them to new positions. Users can drag and drop video elements anywhere on the canvas, making it easy to adjust video layouts visually and interactively.
### Programmatic Positioning
Developers can position videos programmatically, using the SDK's API. This allows for precise coordinate control, animated video movements, and integration with layout systems or template constraints.
## Combining with Other Transforms
Video positioning works seamlessly with other transformation operations like rotation, scaling, and cropping. You can chain multiple transformations to create complex video layouts while maintaining precise control over element placement.
## Guides
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Overview"
description: "Learn how CE.SDK applies geometric and crop transformations in video scenes, when to use them, and how they relate to the dedicated transform guides."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/overview-22ed11/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/transform/overview-22ed11/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Resize Videos"
description: "Change the dimensions of video elements to fit specific layout requirements."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/resize-b1ce14/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
Video resizing in CreativeEditor SDK (CE.SDK) allows you to change the dimensions of video elements to match specific layout requirements. Unlike scaling, resizing allows independent control of width and height dimensions, making it ideal for fitting videos into predefined spaces or responsive layouts.
You can resize videos both through the built-in user interface and programmatically using the SDK's APIs, providing flexibility for different workflow requirements.
[Launch Web Demo](https://img.ly/showcases/cesdk)
[Get Started](https://img.ly/docs/cesdk/react-native/get-started/overview-e18f40/)
## Resize Methods
CE.SDK supports several approaches to video resizing:
- **Absolute Dimensions**: Set specific pixel dimensions for precise control
- **Percentage-based Resizing**: Size relative to parent container for responsive designs
- **UI Resize Handles**: Interactive resize controls in the editor interface
- **Aspect Ratio Constraints**: Maintain or ignore aspect ratios during resize operations
## Applying Resizing
### UI-Based Resizing
You can resize videos directly in the CE.SDK user interface using resize handles. Users can drag edge and corner handles to adjust dimensions independently or proportionally, making it easy to fit videos into specific layouts visually.
### Programmatic Resizing
Developers can apply resizing programmatically, using the SDK's API. This allows for precise dimension control, automated layout adjustments, and integration with responsive design systems or template constraints.
## Combining with Other Transforms
Video resizing works seamlessly with other transformation operations like rotation, cropping, and positioning. You can chain multiple transformations to create complex layouts while maintaining video quality and performance.
## Guides
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Rotate Videos"
description: "Rotate video elements to adjust orientation and create dynamic compositions."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/rotate-eaf662/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/transform/rotate-eaf662/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/transform/rotate-eaf662/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Scale Videos"
description: "Scale video elements uniformly or non-uniformly to fit designs and layouts."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/transform/scale-f75c8a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/transform/scale-f75c8a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/transform/scale-f75c8a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Trim"
description: "Documentation for Trim"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/edit-video/trim-4f688b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Create and Edit Videos](https://img.ly/docs/cesdk/react-native/create-video-c41a08/) > [Trim](https://img.ly/docs/cesdk/react-native/edit-video/trim-4f688b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/edit-video/trim-4f688b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/edit-video/trim-4f688b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Engine Interface"
description: "Understand CE.SDK's architecture and learn when to use direct Engine access for automation workflows"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/engine-interface-6fb7cf/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Engine](https://img.ly/docs/cesdk/react-native/engine-interface-6fb7cf/)
---
The Creative Engine is the powerhouse behind CE.SDK's cross-platform capabilities. While the UI components provide ready-to-use editing experiences, the Engine interface gives you direct programmatic control over all creative operations—from simple batch processing to complex automated workflows.
## Client-Side vs Server-Side Processing
Understanding when to use client-side versus server-side processing is crucial for building efficient creative automation workflows. Each approach offers distinct advantages depending on your use case requirements.
### Client-Side Processing (Mobile Device)
Client-side processing runs the Engine directly in the user's device — but importantly, this doesn't mean visible to the user. The Engine operates headlessly in the background, making it perfect for automation tasks that enhance user experience without interrupting their workflow.
**Common Implementation Patterns:**
**Hidden Engine Instances**: Run a second, invisible Engine instance alongside your main UI for background processing. While users edit in the primary interface, the hidden instance can validate designs, generate previews, or prepare export-ready assets.
**Underlying Engine Access**: Access the Engine API directly from prebuilt UI components for custom automation within existing workflows.
**Dedicated Engine Packages**: Use platform-specific Engine packages for specialized client-side automation without any UI overhead.
**Ideal Client-Side Use Cases:**
- **Design Validation**: Check for empty placeholders, low-resolution images, or brand guideline violations in real-time
- **Thumbnail Generation**: Create preview images for design galleries or version history
- **Effect Previews**: Generate quick previews of filters or effects before applying them to the main design
- **Auto-Save Optimization**: Compress and optimize scenes for storage while maintaining editability
- **Real-Time Feedback**: Provide instant visual feedback for design rules or constraints
### Server-Side Processing
Server-side processing moves the Engine to your backend infrastructure, unlocking powerful capabilities for resource-intensive operations and scalable workflows.
**Key Advantages:**
- **Enhanced Resources**: Access to more CPU, memory, and storage than client devices
- **Secure Asset Access**: Process private assets without exposing them to client-side code
- **Background Operations**: Handle long-running tasks without affecting user experience
- **Scheduled Automation**: Trigger design generation based on events, schedules, or external APIs
**Ideal Server-Side Use Cases:**
- **High-Resolution Exports**: Generate print-quality assets that would be too resource-intensive for client devices
- **Bulk Generation**: Create thousands of design variations for marketing campaigns or product catalogs
- **Data Pipeline Integration**: Connect to databases, APIs, or file systems for automated content generation
- **Multi-Format Output**: Export designs in multiple formats and resolutions simultaneously
- **Workflow Orchestration**: Coordinate complex multi-step automation processes
**Hybrid Workflows**: Often, the most effective approach combines both client and server-side processing. Users can design and preview on the client with instant feedback, while heavy processing happens on the server in the background.
## Engine-Powered Use Cases
The Engine interface unlocks [powerful automation scenarios](https://img.ly/docs/cesdk/react-native/automation/overview-34d971/) that can scale creative workflows:
### Batch Processing
Process multiple designs simultaneously with consistent results. Whether you're applying filters to hundreds of images or generating variations of a marketing template, the Engine handles bulk operations efficiently both client-side and server-side.
### Auto-Resize
Automatically adapt designs to different aspect ratios and platforms. The Engine intelligently repositions elements, adjusts text sizes, and maintains visual hierarchy across formats—from Instagram stories to LinkedIn posts.
### Data Merge
Connect external data sources (CSV, JSON, APIs) to templates for personalized content generation. Perfect for creating thousands of product cards, personalized certificates, or location-specific campaigns.
### Product Variations
Generate multiple versions of product designs with different colors, sizes, or configurations. Ideal for e-commerce platforms needing to showcase product options without manual design work.
### Design Generation
Create entirely new designs programmatically based on rules, templates, or AI inputs. The Engine can compose layouts, select appropriate fonts, and arrange elements according to your design guidelines.
### Multiple Image Generation
Efficiently process and export designs in various formats and resolutions. Generate web-optimized previews alongside print-ready high-resolution files in a single workflow.
### Actions
Implement complex multi-step operations as reusable actions. Chain together filters, transformations, and exports to create sophisticated automated workflows that can be triggered programmatically.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Equal-Distance Snapping"
description: "Snap a dragged block to equal spacing with its siblings and show the size of each gap."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/equal-distance-snapping-e9d15a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/equal-distance-snapping-e9d15a/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/equal-distance-snapping-e9d15a/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Export Counting"
description: "Learn which operations count as an export in CE.SDK, when export events are recorded, and what data they contain."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-counting-613923/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Concepts](https://img.ly/docs/cesdk/react-native/concepts-c9ff51/) > [Export Counting](https://img.ly/docs/cesdk/react-native/export-counting-613923/)
---
Some CE.SDK plans use usage-based pricing that meters exports. This page defines exactly which operations count as an export, when an export is recorded, and which data is collected along with it. For an overview of licensing options, see [Licensing](https://img.ly/docs/cesdk/react-native/licensing-8aa063/). For a broader look at data collection and privacy, see [Security](https://img.ly/docs/cesdk/react-native/security-777bfd/).
## What Counts as an Export
CE.SDK records one export event per call to an export API. This applies to:
- Exporting a block to an image format such as PNG, JPEG, WebP or TGA
- Exporting to PDF or SVG
- Exporting raw pixel data through the export API
- Exporting with a color mask
- Exporting a video
Each call produces exactly one event, regardless of the content being exported. The engine doesn't distinguish between a "final" export and any other use of the export API. For example, if you call the export API to generate a thumbnail of a design programmatically, that call counts as an export like any other.
## What Doesn't Count
The following operations never record an export event:
- **Live rendering in the editor.** The canvas preview your users see while editing isn't an export.
- **Saving scenes.** Saving a scene to a string or archive—including autosaves and drafts—isn't an export. Only the export APIs count.
- **Built-in thumbnail APIs.** The engine's thumbnail generation APIs, such as video and audio thumbnail sequences and the page thumbnails shown in the editor UI, don't go through the export pipeline and aren't counted.
- **Audio-only exports.** Exporting audio doesn't currently record an export event.
## When an Export Is Counted
The moment an export is recorded differs between still and video exports:
- **Images and PDFs** are counted after the export completes successfully. A failed export—for example due to an invalid block or an encoding error—isn't counted.
- **Videos** are counted when encoding starts. A video export that fails or is canceled during encoding still counts.
An export is counted when the export API call executes—not when a file is downloaded, uploaded or attached to a business event. There is no built-in option to defer counting to a later point such as a checkout. If you want exports to align with a business event, structure your integration so the export API is only called at that point.
## Multi-Page Documents
- **PDF:** Exporting multiple pages in a single call produces one PDF file and one export event. The event includes the number of pages exported and the dimensions of the largest page.
- **Image formats:** Each page requires its own export call, so exporting a multi-page document as images produces one event per page.
## Multiple Formats
Each export call is counted separately. Exporting the same design once as a PDF and once as a PNG produces two export events, one per format.
## Development, Staging and Production
CE.SDK doesn't distinguish between environments. A license key can be used across development, staging and production, and exports are counted the same way in all of them.
## Server-Side Exports and Renderer
The same counting rules apply on every platform. Exports performed with the Node.js SDK or other server-side integrations are counted under the same definition as client-side exports.
The [CE.SDK Renderer](#broken-link-7f3e9a) uses the same export counting and additionally sends periodic heartbeats to track the number of active instances, as described in the [Security](https://img.ly/docs/cesdk/react-native/security-777bfd/) documentation.
## What Data Is Collected
An export event contains only technical metadata—never your content. Image export events include the media type, format, resolution and page count. Video export events include the media type, format, resolution, frame rate and duration. Events are associated with the user ID (if provided by your integration), device ID and session ID described in the [Security](https://img.ly/docs/cesdk/react-native/security-777bfd/) documentation.
The user ID is transmitted exactly as your integration provides it and is used solely to deduplicate users when counting monthly active users. It doesn't need to be a real identifier: if you want to keep your internal user IDs private, pass a hashed or otherwise opaque value instead—deduplication works just as well, as long as the value is unique and stable per user.
Export events are only sent when tracking is enabled for your license. Enterprise licenses with offline validation can opt out of tracking entirely; [contact our sales team](https://img.ly/forms/contact-sales/) to explore these options.
## Export Counts and Billing
Export events are the technical metering primitive. How those counts map to your bill—which tiers apply and how usage is aggregated—is defined by your plan and contract, not by the SDK. If you have questions about how exports are billed under your agreement, [contact our sales team](https://img.ly/forms/contact-sales/).
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Create Thumbnail"
description: "Generate thumbnail preview images from CE.SDK scenes by exporting with target dimensions for galleries, file browsers, and design management interfaces."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/create-thumbnail-749be1/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Create Thumbnail](https://img.ly/docs/cesdk/react-native/export-save-publish/create-thumbnail-749be1/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/create-thumbnail-749be1/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/create-thumbnail-749be1/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Export"
description: "Explore export options, supported formats, and configuration features for sharing or rendering output."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/)
---
---
## Related Pages
- [Options](https://img.ly/docs/cesdk/react-native/export-save-publish/export/overview-9ed3a8/) - Explore export options, supported formats, and configuration features for sharing or rendering output.
- [Export for Social Media](https://img.ly/docs/cesdk/react-native/export-save-publish/for-social-media-0e8a92/) - Export images and videos with platform-specific dimensions, formats, and quality settings for Instagram, TikTok, YouTube, and other social media platforms.
- [To MP4](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-mp4-c998a8/) - Export video compositions as MP4 files with configurable encoding options, progress tracking, and resolution control.
- [For Audio Processing](https://img.ly/docs/cesdk/react-native/export-save-publish/export/audio-68de25/) - Learn how to export audio in WAV or MP4 format from any block type in CE.SDK for React Native.
- [To PDF](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-pdf-95e04b/) - Export your designs as PDF documents with options for print compatibility, underlayer generation, and output control.
- [To JPEG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-jpeg-6f88e9/) - Export CE.SDK designs to JPEG format with configurable quality settings for photographs, web images, and social media content.
- [To PNG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-png-f87eaf/) - Export your designs as PNG images with transparency support and configurable compression for web graphics, UI elements, and content requiring crisp edges.
- [To WebP](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-webp-aef6f4/) - Export your CE.SDK designs to WebP format for optimized web delivery with lossy and lossless compression options.
- [To Raw Data](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-raw-data-abd7da/) - Export designs to uncompressed RGBA pixel data for custom image processing, GPU uploads, and advanced graphics workflows.
- [Compress](https://img.ly/docs/cesdk/react-native/export-save-publish/export/compress-29105e/) - Reduce file sizes when exporting images by configuring compression and quality settings for PNG, JPEG, and WebP formats.
- [With a Color Mask](https://img.ly/docs/cesdk/react-native/export-save-publish/export/with-color-mask-4f868f/) - Learn how to export design blocks with color masking to remove specific colors and generate alpha masks for print workflows and compositing
- [Pre-Export Validation](https://img.ly/docs/cesdk/react-native/export-save-publish/pre-export-validation-3a2cba/) - Documentation for Pre-Export Validation
- [Partial Export](https://img.ly/docs/cesdk/react-native/export-save-publish/export/partial-export-89aaf6/) - Learn how to export specific blocks, groups, and page elements instead of entire scenes using CE.SDK's programmatic export API.
- [Size Limits](https://img.ly/docs/cesdk/react-native/export-save-publish/export/size-limits-6f0695/) - Understand and configure limits on exported file dimensions or data size.
- [Create Thumbnail](https://img.ly/docs/cesdk/react-native/export-save-publish/create-thumbnail-749be1/) - Generate thumbnail preview images from CE.SDK scenes by exporting with target dimensions for galleries, file browsers, and design management interfaces.
- [Thumbnail Previews](https://img.ly/docs/cesdk/react-native/export-save-publish/thumbnail-previews-dcf031/) - Generate timeline filmstrips, page storyboards, and audio waveforms with the CE.SDK thumbnail sequence APIs, which stream each frame and sample chunk as it becomes ready.
- [Export for Printing](https://img.ly/docs/cesdk/react-native/export-save-publish/for-printing-bca896/) - Export designs from CE.SDK as print-ready PDFs with professional output options including high compatibility mode, underlayers for special media, and scene DPI configuration.
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "For Audio Processing"
description: "Learn how to export audio in WAV or MP4 format from any block type in CE.SDK for React Native."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/audio-68de25/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [For Audio Processing](https://img.ly/docs/cesdk/react-native/export-save-publish/export/audio-68de25/)
---
Export audio from pages, video blocks, audio blocks, and tracks to WAV or MP4 format for external processing, transcription, or analysis.
The `exportAudio` API allows you to extract audio from any block that contains audio content. This is particularly useful when integrating with external audio processing services like speech-to-text transcription, audio enhancement, or music analysis platforms.
Audio can be exported from multiple block types:
- **Page blocks** - Export the complete mixed audio timeline
- **Video blocks** - Extract audio tracks from videos
- **Audio blocks** - Export standalone audio content
- **Track blocks** - Export audio from specific timeline tracks
## Export Audio
Export audio from any block using the `exportAudio` API:
```typescript
const page = engine.scene.getCurrentPage();
const audioBlob = await engine.block.exportAudio(page, {
mimeType: 'audio/wav',
sampleRate: 48000,
numberOfChannels: 2
});
console.log(`Exported ${audioBlob.size} bytes`);
```
### Export Options
Configure your audio export with these options:
- **`mimeType`** - `'audio/wav'` (uncompressed) or `'audio/mp4'` (compressed AAC)
- **`sampleRate`** - Audio quality in Hz (default: 48000)
- **`numberOfChannels`** - 1 for mono or 2 for stereo
- **`timeOffset`** - Start time in seconds (default: 0)
- **`duration`** - Length to export in seconds (0 = entire duration)
- **`onProgress`** - Callback receiving `(rendered, encoded, total)` for progress tracking
## Find Audio Sources
To find blocks with audio in your scene:
```typescript
// Find audio blocks
const audioBlocks = engine.block.findByType('audio');
// Find video blocks with audio
const videoFills = engine.block.findByType('//ly.img.ubq/fill/video');
const videosWithAudio = videoFills.filter(block => {
try {
return engine.block.getAudioInfoFromVideo(block).length > 0;
} catch {
return false;
}
});
```
## Working with Multi-Track Video Audio
Videos can contain multiple audio tracks (e.g., different languages). CE.SDK provides APIs to inspect and extract specific tracks.
### Check audio track count
```typescript
const videoFillId = engine.block.findByType('//ly.img.ubq/fill/video')[0];
const trackCount = engine.block.getAudioTrackCountFromVideo(videoFillId);
console.log(`Video has ${trackCount} audio track(s)`);
```
### Get track information
```typescript
const audioTracks = engine.block.getAudioInfoFromVideo(videoFillId);
audioTracks.forEach((track, index) => {
console.log(`Track ${index}:`, {
channels: track.channels,
sampleRate: track.sampleRate,
language: track.language || 'unknown',
label: track.label || `Track ${index}`
});
});
```
### Extract a specific track
```typescript
// Create audio block from track 0 (first track)
const audioBlockId = engine.block.createAudioFromVideo(videoFillId, 0);
// Export just this track's audio
const trackAudioBlob = await engine.block.exportAudio(audioBlockId, {
mimeType: 'audio/wav'
});
```
### Extract all tracks
```typescript
// Create audio blocks for all tracks
const audioBlockIds = engine.block.createAudiosFromVideo(videoFillId);
// Export each track
for (let i = 0; i < audioBlockIds.length; i++) {
const trackBlob = await engine.block.exportAudio(audioBlockIds[i]);
console.log(`Track ${i}: ${trackBlob.size} bytes`);
}
```
## Complete Workflow: Audio to Captions
A common workflow is to export audio, send it to a transcription service, and use the returned captions in your scene.
### Step 1: Export Audio
```typescript
const page = engine.scene.getCurrentPage();
const audioBlob = await engine.block.exportAudio(page, {
mimeType: 'audio/wav',
sampleRate: 48000,
numberOfChannels: 2
});
```
### Step 2: Send to Transcription Service
Send the audio to a service that returns SubRip (SRT) format captions:
```typescript
async function transcribeAudio(audioBlob: Blob): Promise {
const formData = new FormData();
formData.append('audio', audioBlob, 'audio.wav');
formData.append('format', 'srt');
const response = await fetch('https://api.transcription-service.com/transcribe', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
body: formData
});
// Returns SRT format text
return await response.text();
}
const srtContent = await transcribeAudio(audioBlob);
```
### Step 3: Import Captions from SRT
Use the built-in API to create caption blocks from the SRT response:
```typescript
// Create a file from the SRT text
const srtFile = new File([srtContent], 'captions.srt', {
type: 'application/x-subrip'
});
// Create object URL and import captions
const uri = URL.createObjectURL(srtFile);
const captions = await engine.block.createCaptionsFromURI(uri);
URL.revokeObjectURL(uri);
// Add captions to page
const page = engine.scene.getCurrentPage();
const captionTrack = engine.block.create('//ly.img.ubq/captionTrack');
captions.forEach(caption => {
engine.block.appendChild(captionTrack, caption);
});
engine.block.appendChild(page, captionTrack);
// Center the first caption as a reference point
engine.block.alignHorizontally([captions[0]], 'Center');
engine.block.alignVertically([captions[0]], 'Center');
```
### Other Processing Services
Audio export also supports these workflows:
- **Audio enhancement** - Noise removal, normalization
- **Music analysis** - Tempo, key, beat detection
- **Language detection** - Identify spoken language
- **Speaker diarization** - Identify who spoke when
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Compress"
description: "Reduce file sizes when exporting images by configuring compression and quality settings for PNG, JPEG, and WebP formats."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/compress-29105e/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Compress](https://img.ly/docs/cesdk/react-native/export-save-publish/export/compress-29105e/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/compress-29105e/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/compress-29105e/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Options"
description: "Explore export options, supported formats, and configuration features for sharing or rendering output."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/overview-9ed3a8/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Overview](https://img.ly/docs/cesdk/react-native/export-save-publish/export/overview-9ed3a8/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/overview-9ed3a8/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/overview-9ed3a8/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Partial Export"
description: "Learn how to export specific blocks, groups, and page elements instead of entire scenes using CE.SDK's programmatic export API."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/partial-export-89aaf6/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Partial Export](https://img.ly/docs/cesdk/react-native/export-save-publish/export/partial-export-89aaf6/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/partial-export-89aaf6/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/partial-export-89aaf6/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Size Limits"
description: "Understand and configure limits on exported file dimensions or data size."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/size-limits-6f0695/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Size Limits](https://img.ly/docs/cesdk/react-native/export-save-publish/export/size-limits-6f0695/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/size-limits-6f0695/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/size-limits-6f0695/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To JPEG"
description: "Export CE.SDK designs to JPEG format with configurable quality settings for photographs, web images, and social media content."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-jpeg-6f88e9/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To JPEG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-jpeg-6f88e9/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-jpeg-6f88e9/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/to-jpeg-6f88e9/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To MP4"
description: "Export video compositions as MP4 files with configurable encoding options, progress tracking, and resolution control."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-mp4-c998a8/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To MP4](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-mp4-c998a8/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-mp4-c998a8/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/to-mp4-c998a8/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To PDF"
description: "Export your designs as PDF documents with options for print compatibility, underlayer generation, and output control."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-pdf-95e04b/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To PDF](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-pdf-95e04b/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-pdf-95e04b/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/to-pdf-95e04b/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To PNG"
description: "Export your designs as PNG images with transparency support and configurable compression for web graphics, UI elements, and content requiring crisp edges."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-png-f87eaf/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To PNG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-png-f87eaf/) > [Conversion](https://img.ly/docs/cesdk/react-native/conversion-c3fbb3/) > [To PNG](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-png-f87eaf/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-png-f87eaf/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/to-png-f87eaf/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To Raw Data"
description: "Export designs to uncompressed RGBA pixel data for custom image processing, GPU uploads, and advanced graphics workflows."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-raw-data-abd7da/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To Raw Data](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-raw-data-abd7da/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-raw-data-abd7da/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/to-raw-data-abd7da/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "To WebP"
description: "Export your CE.SDK designs to WebP format for optimized web delivery with lossy and lossless compression options."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-webp-aef6f4/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [To WebP](https://img.ly/docs/cesdk/react-native/export-save-publish/export/to-webp-aef6f4/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/to-webp-aef6f4/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "With a Color Mask"
description: "Learn how to export design blocks with color masking to remove specific colors and generate alpha masks for print workflows and compositing"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/export/with-color-mask-4f868f/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [With a Color Mask](https://img.ly/docs/cesdk/react-native/export-save-publish/export/with-color-mask-4f868f/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/export/with-color-mask-4f868f/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/export/with-color-mask-4f868f/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Export for Printing"
description: "Export designs from CE.SDK as print-ready PDFs with professional output options including high compatibility mode, underlayers for special media, and scene DPI configuration."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/for-printing-bca896/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [For Printing](https://img.ly/docs/cesdk/react-native/export-save-publish/for-printing-bca896/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/for-printing-bca896/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/for-printing-bca896/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Export for Social Media"
description: "Export images and videos with platform-specific dimensions, formats, and quality settings for Instagram, TikTok, YouTube, and other social media platforms."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/for-social-media-0e8a92/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [For Social Media](https://img.ly/docs/cesdk/react-native/export-save-publish/for-social-media-0e8a92/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/for-social-media-0e8a92/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/for-social-media-0e8a92/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Pre-Export Validation"
description: "Documentation for Pre-Export Validation"
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/pre-export-validation-3a2cba/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Pre-Export Validation](https://img.ly/docs/cesdk/react-native/export-save-publish/pre-export-validation-3a2cba/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/pre-export-validation-3a2cba/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/pre-export-validation-3a2cba/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Save"
description: "Save design progress locally or to a backend service to allow for later editing or publishing."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/save-c8b124/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Save](https://img.ly/docs/cesdk/react-native/export-save-publish/save-c8b124/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/save-c8b124/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/save-c8b124/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Store Custom Metadata"
description: "Attach, retrieve, and manage custom key-value metadata on design blocks in CE.SDK."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/store-custom-metadata-337248/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Store Custom Metadata](https://img.ly/docs/cesdk/react-native/export-save-publish/store-custom-metadata-337248/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/store-custom-metadata-337248/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/store-custom-metadata-337248/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "Thumbnail Previews"
description: "Generate timeline filmstrips, page storyboards, and audio waveforms with the CE.SDK thumbnail sequence APIs, which stream each frame and sample chunk as it becomes ready."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/export-save-publish/thumbnail-previews-dcf031/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Guides](https://img.ly/docs/cesdk/react-native/guides-8d8b00/) > [Export Media Assets](https://img.ly/docs/cesdk/react-native/export-save-publish/export-82f968/) > [Thumbnail Previews](https://img.ly/docs/cesdk/react-native/export-save-publish/thumbnail-previews-dcf031/)
---
> **CE.SDK for React Native is built on top of the native iOS and Android SDKs.** You configure and customize the editor in Swift and Kotlin, so this topic is documented on the native side.
>
> - [Read this topic in the iOS documentation](https://img.ly/docs/cesdk/ios/export-save-publish/thumbnail-previews-dcf031/)
> - [Read this topic in the Android documentation](https://img.ly/docs/cesdk/android/export-save-publish/thumbnail-previews-dcf031/)
---
## More Resources
- **[React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md)** - Browse all React Native documentation
- **[Complete Documentation](https://img.ly/docs/cesdk/react-native/llms-full.txt)** - Full documentation in one file (for LLMs)
- **[Web Documentation](https://img.ly/docs/cesdk/react-native/)** - Interactive documentation with examples
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
---
---
title: "File Format Support"
description: "See which image, video, audio, font, and template formats CE.SDK supports for import and export."
platform: react-native
url: "https://img.ly/docs/cesdk/react-native/file-format-support-3c4b2a/"
---
> This is one page of the CE.SDK React Native documentation. For a complete overview, see the [React Native Documentation Index](https://img.ly/docs/cesdk/react-native.md). For all docs in one file, see [llms-full.txt](https://img.ly/docs/cesdk/react-native/llms-full.txt).
**Navigation:** [Compatibility & Security](https://img.ly/docs/cesdk/react-native/compatibility-fef719/) > [File Format Support](https://img.ly/docs/cesdk/react-native/file-format-support-3c4b2a/)
---
CreativeEditor SDK (CE.SDK) supports a wide range of modern file types for importing assets and exporting final content. Whether you're working with images, videos, audio, documents, or fonts, CE.SDK provides a client-side editing environment with excellent media compatibility and performance—optimized for modern client-side hardware.
This guide outlines supported formats, codecs, and known limitations across media types.
## Importing Media
| Category | Supported Formats |
| ------------- | ------------------------------------------------------------------ |
| **Images** | `.png`, `.apng`, `.jpeg`, `.jpg`, `.gif`, `.webp`, `.svg`, `.bmp` |
| **Video** | `.mp4` (H.264/AVC, H.265/HEVC), `.mov` (H.264/AVC, H.265/HEVC) |
| **Audio** | `.wav`, `.mp3`, `.m4a`, `.mp4` (AAC or MP3), `.mov` (AAC or MP3) |
| **Animation** | `.json` (Lottie) |
Animated images (`.gif` and `.apng`) import as a static first frame in design
scenes and as a looping video fill in video scenes.
> **Note:** Need to import a format not listed here? CE.SDK allows you to create custom
> importers for any file type by using our Scene and Block APIs
> programmatically.
### SVG Limitations
CE.SDK uses Skia for SVG parsing and rendering. While most SVG files render correctly, there are some important limitations to be aware of:
### Text Elements
- SVG text elements are not supported - any text in SVG files will not be rendered.
- Convert text to paths in your vector editor before exporting if text is needed.
### Styling Limitations
- CSS styles included in SVGs are not supported - use presentation attributes instead.
- RGBA color syntax is not supported - use `fill-opacity` and `stroke-opacity` attributes.
- When exporting SVGs from design tools, choose the "presentation attributes" option.
### Unsupported SVG Elements
The following SVG elements are not supported:
- Animation elements (``)
- Foreign object (``)
- Text-related elements (``, ``, ``)
- Script elements (`