
Mega Menu Builder is a Strapi v5 custom field for building reusable nested navigation: configure depth, edit labels and URLs in a tree UI, and store structured JSON for your frontend.
released May 8, 2026
npm install @_ns/strapi-plugin-mega-menu
Reusable nested mega menu custom field for Strapi v5.
Add the plugin to your Strapi application:
npm install @_ns/strapi-plugin-mega-menuor
yarn add @_ns/strapi-plugin-mega-menuThen rebuild the admin panel:
npm run buildor
yarn buildQuick start (development):
npm run developor
yarn developFor local plugin development inside src/plugins/mega-menu, Strapi auto-loads the plugin.
The plugin is available as a Custom Field in Content-Type Builder.
mega-menumega-menu-builderjson{
"items": [
{
"id": "node_1776858560893_5eb921",
"url": "/products",
"title": "Products",
"children": [
{
"id": "node_1776858589836_cb32c9",
"url": "/electronics",
"title": "Electronics",
"children": [
{
"id": "node_1776858590572_88bfd9",
"url": "/laptops",
"title": "Laptops",
"children": [
{
"id": "node_1776858810835_f60e77",
"url": "/model1",
"title": "Model 1",
"children": []
},
{
"id": "node_1776858844971_6ed20e",
"url": "/model2",
"title": "Model 2",
"children": []
}
]
}
]
}
]
}
],
"maxDepth": 4
}The plugin is configured to be used from the custom field flow.
No separate plugin page is required for editor usage.
The plugin does not require extra code-based setup in src/admin/app.*.
Configuration is done directly from the custom field UI.
1 to 4)title (menu label)url (target path/link)children (nested items array)Mega Menu Builder.Fetch the content entry and render megaMenu.items recursively on your frontend.
const renderMenu = (nodes = []) =>
nodes.map((node) => ({
label: node.title,
href: node.url,
children: renderMenu(node.children || []),
}));
// Example usage with API response
const menuTree = renderMenu(response.data.megaMenu?.items || []);maxDepth can be used as a UI guard if you allow menu editing on frontend.
Menu item payload constraints:
title: required, trimmed, max 120 charsurl: required, trimmed, max 2048 chars>= 5.0.0>= 20.0.0Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.
Submit
