liftbox

Changelog

Notable changes in each release.

The project follows Semantic Versioning. The source of this page is CHANGELOG.md.

1.3.1 (2026-11-04)

  • More npm keywords, such as image viewer, slideshow and video, so the package shows up in more searches. No code changes.

1.3.0 (2026-11-04)

  • Renamed from @esdrassantos06/gallery to liftbox, with docs at liftbox.digital. Install liftbox and change the imports to liftbox and liftbox/styles.css. The API, class names and --eg-* variables are unchanged.
  • Image slides take sources for a <picture>: AVIF or WebP versions by type and other crops by media, with src and srcSet as the fallback. Sources wait their turn like the image. New ImageSource type.
  • useLightboxHash takes names, one per slide, to put #prefix-harbour in the URL instead of #prefix-3. Numbered links keep opening.
  • Docs: a comparison with other React lightboxes and a migration guide from lightGallery.

1.2.0 (2026-11-02)

  • captionPosition="slide": lay each caption over the bottom of its own image, as wide as the image, moving with the slide. New slideCaption class name.
  • New built-in icons from Mynaui Icons (MIT). Same 24px grid and 1.5px stroke, so --eg-icon-size and custom icons work as before.
  • Fix: the caption covered the controls of videos, iframes and custom players such as Video.js. Those slides now fit above the caption.
  • The open and close flight now clips the image to its thumbnail, so thumbnails cropped with object-fit: cover grow into the full image without a jump.
  • Faster image loading: the current image is fetched first at high priority, neighbors wait until it loads and then follow at low priority, and the slide's thumbnail shows as a placeholder until the full image arrives. New --eg-placeholder-size variable (cover by default).
  • Adaptive preloading: with Save-Data or on 2G only the current image is fetched, and on 3G or devices with 2 GB of memory or less preload is capped at 1.
  • Thousands of slides: the thumbnail strip renders only what is in view past 100 slides, the grids past 200 (the list gets data-virtual), and the pager shows a window of 12 dots with smaller edge dots when there are more. Grids are memoized, so they no longer re-render when the page changes slide.
  • Videos: only the current video fetches metadata, neighbors use preload="none". Grids and the thumbnail strip show thumbnail, poster or the YouTube poster, and never load a video file as an image. New previewOf(slide) export with the same rule.
  • Load status and natural sizes are kept for the 300 most recently seen slides.
  • Fix: a malformed download URL now reaches download.onError instead of throwing.

1.1.0 (2026-11-02)

  • Fix: in right-to-left layouts the counter read "12 / 1" and English captions moved their full stop to the start. The counter and caption now take their direction from their own text (dir="auto").

  • Toolbar overflow: on narrow screens the buttons that do not fit move into an accessible "More options" menu (menu button pattern), zoom first; close stays visible. On by default, toolbarOverflow={false} turns it off.

  • idle: fade the top bar, arrows, caption, thumbnails and pager out after a pause, back on any input; never while a control has keyboard focus or the pointer.

  • Right-to-left: dir, or the inherited direction, mirrors arrows, swipes, arrow keys, thumbnails, pager and toolbar.

  • Pinch to close: a pinch from fit released under the fitted size closes the viewer, unless it zoomed in first. On by default, pinchToClose={false} turns it off. A zoomed or pinched image now flies back to its thumbnail from where it is on screen.

  • flip: flip horizontally and vertically, composing with rotation and zoom.

  • share: Web Share with a copy-link fallback and no third-party scripts.

  • pager: accessible pager dots next to or instead of the thumbnail strip.

  • New labels, icons, class names (menu, menuItem, pager, pagerDot) and --eg-menu-* and --eg-pager-* variables for all of the above.

  • The counter no longer wraps when the toolbar is full.

  • Optional MasonryGrid, JustifiedGrid and UniformGrid with responsive columns or row height, lazy srcset thumbnails without layout shift and a ref that plugs into getThumbnail, plus a GalleryFilter with aria-pressed toggle buttons and a live count. Each works with or without the lightbox, and they are tree-shaken away when unused.

1.0.0 (2026-11-02)

First release.

  • Accessible lightbox: thumbnail flight on open and close, keyboard, swipe and flick navigation, slide, fade and zoom transitions, captions, preloading with srcset, focus trap and return, scroll lock.
  • Thumbnail strip, zoom (wheel, double click or tap, pinch, pan, buttons, keys), fullscreen, image loading and error states.
  • Video files with sources and caption tracks, YouTube through youtube-nocookie.com, Vimeo, iframe slides and a slideshow with a progress bar.
  • useLightboxHash for deep links with back-button close, rotation and downloads.
  • Works with custom players such as Video.js 10: the slideshow drives any native <video> in the current slide, and drags and keys that content handles are left to it ([data-eg-no-gestures], event.preventDefault()).
  • Fully themeable through --eg-* variables, labels, icons, classNames and render.
Edit this page on GitHub

On this page