> ## Documentation Index
> Fetch the complete documentation index at: https://cloudinary.com/documentation/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloudinary Image & Video Release Notes: December 18, 2025


## Cloudinary Image

### Automatic image enhancements

The new `auto_enhance` effect uses AI to automatically enhance an image by optimizing its quality based on the detected quality. If an image is already high quality, only minor adjustments are made. Otherwise, more aggressive enhancements are applied to improve the overall appearance, including noise reduction and detail enhancement.

![Photo of escalators with the auto_enhance effect applied](https://res.cloudinary.com/demo/image/upload/c_scale,w_800/e_auto_enhance/docs/escalator-200.jpg "with_image: false")

```nodejs
cloudinary.image("docs/escalator-200.jpg", {transformation: [
  {width: 800, crop: "scale"},
  {effect: "auto_enhance"}
  ]})
```

```react
new CloudinaryImage("docs/escalator-200.jpg").addTransformation(
  "c_scale,w_800/e_auto_enhance"
);
```

```vue
new CloudinaryImage("docs/escalator-200.jpg").addTransformation(
  "c_scale,w_800/e_auto_enhance"
);
```

```angular
new CloudinaryImage("docs/escalator-200.jpg").addTransformation(
  "c_scale,w_800/e_auto_enhance"
);
```

```js
new CloudinaryImage("docs/escalator-200.jpg").addTransformation(
  "c_scale,w_800/e_auto_enhance"
);
```

```python
CloudinaryImage("docs/escalator-200.jpg").image(transformation=[
  {'width': 800, 'crop': "scale"},
  {'effect': "auto_enhance"}
  ])
```

```php
(new ImageTag('docs/escalator-200.jpg'))
	->addTransformation("c_scale,w_800/e_auto_enhance");
```

```java
cloudinary.url().transformation(new Transformation()
  .width(800).crop("scale").chain()
  .effect("auto_enhance")).imageTag("docs/escalator-200.jpg");
```

```ruby
cl_image_tag("docs/escalator-200.jpg", transformation: [
  {width: 800, crop: "scale"},
  {effect: "auto_enhance"}
  ])
```

```csharp
cloudinary.Api.UrlImgUp.Transform(new Transformation()
  .Width(800).Crop("scale").Chain()
  .Effect("auto_enhance")).BuildImageTag("docs/escalator-200.jpg")
```

```dart
cloudinary.image('docs/escalator-200.jpg').transformation(Transformation()
	.addTransformation("c_scale,w_800/e_auto_enhance"));
```

```swift
imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()
  .setWidth(800).setCrop("scale").chain()
  .setEffect("auto_enhance")).generate("docs/escalator-200.jpg")!, cloudinary: cloudinary)
```

```android
MediaManager.get().url().transformation(new Transformation()
  .width(800).crop("scale").chain()
  .effect("auto_enhance")).generate("docs/escalator-200.jpg");
```

```flutter
cloudinary.image('docs/escalator-200.jpg').transformation(Transformation()
	.addTransformation("c_scale,w_800/e_auto_enhance"));
```

```kotlin
cloudinary.image {
	publicId("docs/escalator-200.jpg")
	 addTransformation("c_scale,w_800/e_auto_enhance") 
}.generate()
```

```jquery
$.cloudinary.image("docs/escalator-200.jpg", {transformation: [
  {width: 800, crop: "scale"},
  {effect: "auto_enhance"}
  ]})
```

```react_native
new CloudinaryImage("docs/escalator-200.jpg").addTransformation(
  "c_scale,w_800/e_auto_enhance"
);
```

  
  

> **NOTE**:
>
> :title=Notes and limitations:

> * There is a [special transformation count](transformation_counts#special_effect_calculations) for the auto enhance effect.

> * The auto enhance effect is not supported for [fetched](fetch_remote_images#fetch_and_deliver_remote_files) images.
**[Learn more](transformation_reference#e_auto_enhance)**

### Generative remove effect supports NSFW check

The generative remove effect (`e_gen_remove` in URLs) now supports a Not Safe For Work (NSFW) check. Cloudinary checks content that's generated in place of the removed object for appropriateness. If the NSFW check detects something inappropriate, the system blurs the delivered image. 

You can [contact support](https://support.cloudinary.com/hc/en-us/requests/new) to disable this check if you believe it's too sensitive.

**[Learn more](generative_ai_transformations#generative_remove)**

### JPEGmini add-on sunset

The JPEGmini Image Optimization add-on is now fully deprecated and **disabled**. Any transformation URL that includes `q_jpegmini` will return an HTTP 400 error.  

If you're an existing subscriber to this add-on, you should replace jpegmini usage with the [automatic quality](transformation_reference#q_auto) transformation (`q_auto`) to optimize image quality.

[Contact support](https://support.cloudinary.com/hc/en-us/requests/new) with any questions or requests for guidance.

## Cloudinary Video

### Advanced video player with custom controls for React Native

The React Native SDK now includes the `CLDVideoLayer` component, a comprehensive full-screen video player with customizable controls and advanced features.

![React Native video layer example](https://cloudinary-res.cloudinary.com/image/upload/v1762951507/docs/react-native-video-example-2.png "thumb: w_200,dpr_2, width: 200, popup: true")

Key features include:

* **Flexible Button Positioning**: Place custom buttons anywhere on the video overlay using compass-style positioning (North, South, East, West, and combinations)
* **Horizontal/Vertical Button Layouts**: Control how you arrange multiple buttons in button groups
* **Share Functionality**: Built-in sharing capabilities with customizable share handlers
* **Playback Speed Control**: Customizable playback speeds (0.5x, 1x, 1.25x, 1.5x, 2x, and more)
* **Subtitle Support**: Automatic HLS subtitle parsing and custom subtitle language configuration
* **Quality Selection**: Automatic HLS quality detection and manual quality selection options
* **Full Screen Support**: Landscape-optimized full screen mode with custom callbacks
* **Bottom Button Bar**: Additional button bar positioned below the seekbar
* **Title and Subtitle Display**: Show video titles and subtitles with customizable positioning

**[Learn more](react_native_video_player#advanced_video_player_with_custom_controls)**

## Asset and account management

### Node.js SDK support for deleting and restoring assets by asset ID

The Node.js SDK now supports deleting and restoring assets by asset ID, enabling you to manage assets using their immutable identifiers for more consistent and reliable control.

**[Learn more](admin_api#resources)**

### Cloudinary VS Code extension on Open VSX

The Cloudinary VS Code Extension is now available on the [Open VSX Registry](https://open-vsx.org/extension/cloudinary/cloudinary) (in addition to the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=cloudinary.cloudinary)). 

This ensures compatibility with open-source VSCode-forked IDEs, such as Cursor, Windsurf and any other IDE that supports Open VSX, and allows for automatic updates directly through the marketplace.

**[Learn more](cloudinary_vscode_extension#installation)**

### Cloudinary Media Inspector enhancements

The [Cloudinary Media Inspector Summary tab](media_inspector_browser_extension#summary_tab) now includes an **Original vs Derived** section, which shows you a comparison of the original asset stored in Cloudinary with the delivered, derived asset. This allows you to see how much your delivered assets are being optimized and the performance benefits you're gaining from using Cloudinary.

Image Summary

Video Summary

**Learn more**: 

* [Media Inspector overview and setup](media_inspector_browser_extension)
* [Media Inspector for image optimization](media_optimization#analyze_media_to_improve_optimization) 
* [Media Inspector for video optimization](video_optimization#analyze_media_to_improve_optimization)

## Docs and demo apps

### New Media Library Widget API reference

The Media Library widget embeds a compact version of the Cloudinary Media Library directly into your web application, providing most of the asset management capabilities including browse, search, select, upload, and organize. 

The new [Media Library Widget API reference](media_library_widget_api_reference) provides comprehensive documentation for all widget methods, configuration options, callbacks, and events with practical code examples.

**[Learn more](media_library_widget_api_reference)**

