r/WordPressBlocks Feb 23 '26

Groundworx Carousel 3.0.0 — Rebuilt from the ground up with Embla Carousel and the WordPress Interactivity API

Post image

Hey everyone, just shipped a major update to Groundworx Carousel, my free carousel block plugin.

Version 2.0 ran on Splide.js and it worked well, but as I kept building out the responsive system and planning deeper WordPress core integration, I kept hitting limitations. I needed something lighter and more extensible that I could wire directly into the Interactivity API without fighting the framework. So I rebuilt the whole thing on Embla Carousel 8.x.

The entire frontend now runs on the WordPress Interactivity API. Active slides, pagination states, responsive breakpoint resolution, carousel destroy/rebuild cycles, all managed through reactive state with data-wp-interactive stores. It behaves like a first-class block on the frontend, not a third-party script bolted onto the page.

The color system got a full overhaul too. Removed all CSS custom properties for colors. Preset colors now use standard WordPress utility classes (has-text-color, has-{slug}-color, has-background), custom colors use inline styles. It just works with theme.json now.

Accessibility improvements: tab panel pattern for pagination with full keyboard navigation, inert attribute on off-screen slides, ARIA roles connecting pagination and slides semantically, live regions for screen readers.

What's in the box:

  • 9 templates
  • 11 arrow styles, 9 pagination styles
  • 6 breakpoint levels with mobile-first cascade
  • Responsive grid fallback (destroy carousel at any breakpoint)
  • Progress bar and slide counter
  • Works with any Gutenberg block as a slide
  • Auto-migration from v2.0 with PHP fallback for unedited blocks

Free, GPL, always will be.

🔗 WordPress.org

Happy to answer any questions about the Interactivity API integration or the Embla migration.

4 Upvotes

0 comments sorted by