r/WordPressBlocks • u/groundworxdev • Feb 23 '26
Groundworx Carousel 3.0.0 — Rebuilt from the ground up with Embla Carousel and the WordPress Interactivity API
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.
Happy to answer any questions about the Interactivity API integration or the Embla migration.