Dynamic Zone in Components
A
Alexandre Retourne
It could be great to add context or let the users create their contents with little constraints. For example, a grid could have differents components inside like download cards or profile cards. Making a grid component for each variation is not optimal so it would make the UI clearer with fewer components. Lastly, the front-end developer could develop a component manager from front-end and it would manage all content to build the website like legos. The developer would maintain the content builder from strapi POV and the users can immediately use the news components or make change on already launched content.
Marco Autiero
Calling all users who upvoted or commented on this feature request — we need your help! 🙌
We're working to better understand the real-world use cases behind your interest in having Dynamic Zones inside components.
👉 What challenges are you trying to solve?
👉 What use cases would this unlock for you?
You can help us in any of these ways:
- reply right here with a quick description of your use case
- email me directly at marco.autiero@strapi.io
- book a quick call with me, grab a time slot here https://calendar.app.google/i9vPxD6ALK9DhkBM9 , and let’s talk it through!
And for those happy to have a call and share their story, I’ll send you an exclusive Strapi t-shirt as a thank-you! 👕🎉
Your insights will directly shape how we design and prioritize this feature. Let’s build it together. ❤
Igor Zinchenko
just take ACF for wordpress and make everything the same on UI...
Eric Ferreira
Still need this. Our client wanted a website builder with different types of pages/components, both at the root, and then within tabs. The tab page needs to be itself a component type in the dynamic zone, then it can also contain other components (another dynamic zone in a repeatable component, a tab). Annoyingly, this is impossible in strapi.
Marco Autiero
Calling all users who upvoted or commented on this feature request — we need your help! 🙌
We're working to better understand the real-world use cases behind your interest in having Dynamic Zones inside components.
👉 What challenges are you trying to solve?
👉 What use cases would this unlock for you?
You can help us in any of these ways:
- reply right here with a quick description of your use case
- email me directly at marco.autiero@strapi.io
- book a quick call with me, grab a time slot here https://calendar.app.google/i9vPxD6ALK9DhkBM9 , and let’s talk it through!
And for those happy to have a call and share their story, I’ll send you an exclusive Strapi t-shirt as a thank-you! 👕🎉
Your insights will directly shape how we design and prioritize this feature. Let’s build it together. ❤
Anthony Rubio
Marco Autiero was already announced for Q2 2024
M
Michael Rossi 365
Marco Autiero Sorry but many people have moved on to Payload CMS which actually supports this. This has been an issue that hasn't been made a priority yet its been asked for since Strapi V3 (2020). It's awkward that 5 years later the Strapi Team is still trying to understand it use cases.
The post on this thread by da_kicks_87 on September 30, 2023, explains a common use case clearly.
K
K Martini
Marco Autiero I waited for this feature for 2 years. By now I dropped Strapi and regretting using it in one of my client's website. Now another 2 years later I got the notification, and it gets ask how this could be used?
I agree with Michael Rossi 365 that it got explained more than enough.
Andrei Wilkens
Marco Autiero we also waited forever for this, so we could have some dynamic grid components with subcomponents, so we dont have to create a seperate component for each permutation of possible combinations.
we are still using strapi, but i have eyed with migration to payload aswell, as this is a real pain, and creates a LOT of bloat with not neccecary components as they are not flexible enough.
S
Santiago Santana
It's too late. The team always told users, "You are doing it wrong. Don't nest. You really don't need that flexibility."
I will never use Strapi again. Unfortunately, every other CMS provides more flexibility in nesting than Strapi does, and their teams do not tell users they are doing it wrong when they attempt to build something more complex than a blog with posts
If the database model does not allow something that users want, saying, "sorry, we got the model wrong, we'll try to fix it in the next major update," is better than telling users, "you are doing it wrong"
Eric Ferreira
Marco Autiero still need this. Our client wanted a website builder with different types of pages/components, both at the root, and then within tabs. The tab page needs to be itself a component type in the dynamic zone, then it can also contain other components (another dynamic zone in a repeatable component, a tab). Annoyingly, this is impossible in strapi.
Marco Autiero
Thank you all for your comments and feedback.
I’d like to take a moment to clarify a few things, especially for those expressing frustration about the delay in delivering this feature.
Strapi is the leading open-source headless CMS, trusted by thousands of developers each month. With that reach comes a high volume of feedback and feature requests, hundreds every month. Over the past several months, our team has released a wide range of new features and enhancements that addressed many important community needs. If these updates didn’t resolve your specific pain points, it might have felt like no progress was being made, but I assure you, we’ve been actively working to improve the platform.
We’re a team of about 60 people, doing our best to balance innovation, technical maintenance, and the diverse priorities of a global community. Like any organization, we work within resource constraints and have to make difficult decisions about what to build next. Sometimes this means delays, not because we don’t value a request, but because we’re making trade-offs to support the greatest number of users.
If you’ve felt overlooked or frustrated, we hear you, and we’re sorry. Our commitment remains strong, and our active gathering of feedback, both here and through other channels, reflects that commitment.
Thank you again for your passion, your patience, and for helping shape the future of Strapi. And if you're a former user or customer who’s moved on, we’d still love to hear from you, your experience matters just as much.
B
Braeuer Luisa
Marco Autiero We use Dynamic Zones to build many of our pages, aiming to give editors as much flexibility as possible when creating content. Recently, we received a request to add a slider component that can be used within those pages. The idea is to allow editors to create slides of different types (e.g. text only, text with image, text with video, video only, etc.) and to sort them—similar to how a Dynamic Zones works.
Currently, however, the slider exists at the top-level of the page structure, rather than inside the Dynamic Zone component where it’s actually rendered. This causes confusion for editors and always needs instructions.
We’ve started receiving more requests like this, and it's become clear that we would benefit from the ability to nest Dynamic Zones within components we use inside other Dynamic Zones. Editors are frequently limited by the current setup and are frustrated over the lack of customization.
Thanks a lot <3
sc tester
Hey Marco Autiero ,
We use a Dynamic Zone as a page builder to compose pages from reusable components. One of our main pain points is that we can’t structure components like a Collapsible or a Section to accept nested content via other components.
For example, a Collapsible should be able to contain rich text, images, or other blocks — but right now we have to hardcode variants like CollapsibleRichText, CollapsibleWithImage, etc. Same with layout components like Section, where we’d like to wrap arbitrary components and still control background settings, spacing, and layout behavior.
In fact, this limitation affects almost all of our components — we frequently need to insert a button, link, or other small component inside a larger one, but that’s not possible in a clean way.
Supporting Dynamic Zones inside components would drastically improve flexibility and maintainability in our content model.
Manuel Sommerhalder
Marco Autiero Accordion/Tabs Content. I want to reuse some content components from the "root" dynamic zone within an accordion, not just a field. A client site does not only have a text inside their accordion content but reused components from the normal content area which should be able to be selected by the user dynamically.
D
Davomyan
Anyone know a cms/tool that handles this already I can use seperately next to Strapi? I am creating a game where character skills, buffs and debuffs need to be created with dynamic zones and components with complex mechanics, I can't do that right now in Strapi, but I'm willing to use another tool or cms only for character creation, then request via strapi that cms' endpoints to gather the data and store it in memory
K
Kris Lunde
Davomyan Check out Directus (https://directus.io) which I know can do it, or Payload CMS (https://payloadcms.com) which I'm pretty sure can.
J
Julien Moulin
It’s been long time since the request for dynamic zones within components was raised, and the Strapi team has yet to address it. Given this limitation, we’ve implemented an alternative system using page templates as collections. Although this approach may not be the most optimal, it is a viable solution for managing flexible content structures.
Our implementation involves:
- Template Collections: Each template (e.g., one-column, two-column) is defined as its own collection type. This allows us to create flexible layouts without relying on dynamic zones inside components.
- Centralized Page Management: A dedicated page in the admin panel lists all available templates. From this interface, users can view, edit, and create new pages based on the predefined templates.
- Template Selection Modal: When creating a new page, users are presented with a modal to select a template. Each template is visually represented for better usability.
- Routing and Rendering: On the frontend, the system dynamically selects and renders the appropriate layout based on the page type, ensuring modular and maintainable code.
While this solution requires more manual setup, it provides the flexibility needed to manage different page structures within Strapi’s current limitations. I hope this approach helps others facing the same challenge. If anyone has further suggestions or improvements, feel free to contact me (materazu on github) ! 😊
Ekrem Mehmet Güven
If you're working with Next.js, you absolutely need to check out Payload CMS. It’s literally built on top of Next.js, turning it into a full-stack framework. With features like conditional fields and nested blocks, it’s a game-changer for managing complex content structures. Super customizable, developer-friendly, and perfect for modern web projects. Trust me, it’s worth a look! 😊
Douwe Pausma
Ekrem Mehmet Güven I've heard of Payload, it looks amazing. I wish I knew about it sooner when I built our website. We can't afford to move to payload right now. Even though I do like Strapi, I am sad I can't make my colleagues work lives better by improving their content-editing experience.
Ekrem Mehmet Güven
Douwe Pausma Migrations are always a headache! maybe try Payload on your next project? Their docs are straightforward, and once you get the hang of it, you’ll see how easily your current setup could map over later—without touching the frontend. It’s one of those "learn once, simplify forever" tools. Low risk, high reward. 😉
Tjerk Dames
Hey Aurélien Georget 👋
Since v5 is out, could you give us a short update on the ETA ?
This feature gets more important to us from day to day. I would like to know if its worth waiting, or if we should move to another headless cms :) If you recommend moving, perhaps you could also recommend another headless cms supporting this feature since you might know more ones than I do.
Thanks in advance.
D
Davomyan
Tjerk Dames
I'm pretty sure we're never getting this, Derrick's response:
"indefinite hold AFAIK
It's not a "no" but right now we have may more important stuff on our to-do list and the performance problems that come from this (even if you could deal with it) we would not be happy with.
It would require a metric ton of refactoring for basically the entire internal API to be able to have this and with very little gain. "
I don't think the team at Strapi understands how giga important this feature is lol
Tjerk Dames
Davomyan Do you know another headless CMS that has this feature ?
Ekrem Mehmet Güven
Tjerk Dames If nested blocks/content flexibility is critical, check out Payload CMS. It supports nested blocks out of the box, has a clean TypeScript API, and integrates effortlessly with modern frameworks. Migration is straightforward since it’s backend-focused—your frontend stays intact. Worth a look if deadlines are tight!
Tjerk Dames
Ekrem Mehmet Güven Looks like a great tool so far. Can it work with solid start too, do you know ?
Ekrem Mehmet Güven
Tjerk Dames The Payload admin panel is built with Next.js. If you want to make changes to the admin panel, you need to write React components, but most of the time, this won't be necessary. For the frontend, you can use any technology you want—it could even be vanilla JavaScript. Additionally, Payload provides local API support for direct database operations, which you can use in server components.
D
Davomyan
I'm begging you guys please focus on this Q1 2025
Douwe Pausma
This would be a huge help, I currently have to create a lot of specific components to solve an issue that for example a "columns" component would. Adding Dynamic Zone's in components would declutter my Strapi alot!
Maybe a way to limit performance issues, is by setting a max depth for nesting components?
Koen Cornelis
This is a pretty big problem for us as well, as the lack of this functionality is really impactful on a content editor's workflow. Basically, if we hadn't made a lot of stuff in strapi already i'd be vehemently arguing to switch to another CMS.
I hope this comes soon, but if this is such a big deal: can you at least make conditional fields a thing. I can work around this problem in a lot of use cases if we get conditional fields.
That'd allow me to show a specific component depending on the type of field a user wants to see.
Load More
→