Skip to main content

Image

On the frontend, the Image component shows a responsive optimized image with progressive loading (lazy load).

On the Admin, it allows to upload a new image, opening a modal that allows you to set the alternate text (ALT) and SEO-friendly name (for the image URL).

In order to boost performance and SEO, upon upload, React Bricks will:

  • Create responsive optimized images
  • Create the srcSet to be used on the frontend for the optimal image selection
  • Create a light blurred placeholder for the progressive loading
  • Save them on a global CDN
  • Enforce the SEO-friendly name via proper rewrite rules

Properties

Here's the Typescript interface for the props of the Image component:

interface ImageProps {
propName: string
alt: string
maxWidth?: number
noLazyLoad?: boolean
aspectRatio?: number
containerClassName?: string
containerStyle?: object
imageClassName?: string
imageStyle?: object
noWrapper?: boolean
}

Properties definition

PropertyDefinition
propNameThe prop of the Brick component corresponding to this image.
altThe fallback alternate text for the image when it isn't provided via the upload modal
maxWidthThis is the maximum width in pixel at which your image will be displayed. It is used to calculate the responsive images for normal and retina displays.
The default value is 800.
noLazyLoadSet to true to avoid the lazy load behaviour. Default is false.
aspectRatioIf you set an aspect ratio, the user will have a fixed-ratio selection mask to crop the uploaded image.
containerClassNameOptional className to apply to the image container (a thin wrapper created by React Bricks).
containerStyleOptional style object to apply to the image container.
imageClassNameOptional className to apply to the <img> tag.
imageStyleOptional style object to apply to the <img> tag.
noWrapperOptional flag to avoid the wrapping <div> around the image. Default is false. When set to true, the containerClassName and containerStyle do not apply.

Usage example

<Image propName="image" alt="Product" maxWidth="420" aspectRatio="1.33" />