CINXE.COM
<!doctype html><html lang="en" class="lightTheme"><head><meta charSet="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><script defer src="https://assets.canny.io/d11d61df5af60cacd837c9d0d00a8dcfafcd9ccf/SubdomainBundle.js"></script><link href="https://assets.canny.io/d11d61df5af60cacd837c9d0d00a8dcfafcd9ccf/SubdomainBundle.css" media="screen, projection" rel="stylesheet" type="text/css"/><title data-rh="true">Developer Experience | Strapi</title><meta data-rh="true" name="description" content="Give feedback to the Strapi team so we can make more informed product decisions. Powered by Canny."/><meta data-rh="true" property="og:image" content="https://strapi.canny.io/api/og/company?v=dW5kZWZpbmVk"/><meta data-rh="true" property="og:description" content="Give feedback to the Strapi team so we can make more informed product decisions. Powered by Canny."/><meta data-rh="true" property="og:title" content="Developer Experience | Strapi"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:site" content="@cannyHQ"/><meta data-rh="true" name="twitter:title" content="Developer Experience | Strapi"/><meta data-rh="true" name="twitter:description" content="Give feedback to the Strapi team so we can make more informed product decisions. Powered by Canny."/><meta data-rh="true" name="twitter:image" content="https://strapi.canny.io/api/og/company?v=dW5kZWZpbmVk"/><meta data-rh="true" property="fb:app_id" content="1606018679610384"/><meta data-rh="true" name="google-site-verification" content="hutYg6OBDqx9fLFmeEqY4o0gjWPw2rkFt3-Sp2wbMQc"/><link data-rh="true" href="https://widget.intercom.io" rel="preconnect"/><link data-rh="true" href="https://js.intercomcdn.com" rel="preconnect"/><link data-rh="true" href="https://api-iam.intercom.io" rel="preconnect"/><link data-rh="true" href="https://canny.io/images/a89a07311f28f26319bfef2cc7d20c08.png" rel="icon"/><link data-rh="true" href="https://canny.io/images/c10da7fa9b0d090bab66799c326e1c91.png" rel="apple-touch-icon"/><link data-rh="true" href="https://feedback.strapi.io/developer-experience" rel="canonical"/></head><body class="prelod"><div data-iframe-height="true" id="content"><div><div class="subdomainContainer"><div class="modalContainer"><div class="toastContainer"><div class="publicContainer"><div class="publicNav"><div class="contentContainer"><div class="contentInnerContainer"><div class="publicNavContent"><div class="mainNav"><a class="company" href="/"><div class="logoContainer"><div class="companyLogo"><img fetchpriority="auto" alt="Strapi logo" src="https://canny.io/images/c10da7fa9b0d090bab66799c326e1c91.png"/></div><div class="companyName">Strapi</div></div></a><div class="rightContainer"><a style="background:#4945ff" class="createLink" href="/developer-experience/create"><span class="icon icon-pencil"></span><div class="uppercaseHeader">Create</div></a><div class="authButtons"><button class="buttonV2 primary medium outlined" type="button"><span class="buttonLabel">Log in</span></button><button class="buttonV2 primary medium contained" type="button"><span class="buttonLabel">Sign up</span></button></div></div></div><div class="secondaryNav"><a class="link roadmap" href="/"><span class="subdomainHomeIcons rotate"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map subdomainHomeIcon"><polygon points="3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21"></polygon><line x1="9" x2="9" y1="3" y2="18"></line><line x1="15" x2="15" y1="6" y2="21"></line></svg></span><div class="text">Roadmap</div></a><a style="border-bottom-color:#4945ff" class="link feedback hideOnMobile activeLink" href="/developer-experience"><span class="subdomainHomeIcons"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lightbulb subdomainHomeIcon" style="stroke:#4945ff"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"></path><path d="M9 18h6"></path><path d="M10 22h4"></path></svg></span><div class="text" style="color:#4945ff">Feedback</div></a><div class="link boards hide" style="border-bottom-color:#4945ff"><span class="subdomainHomeIcons"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lightbulb subdomainHomeIcon" style="stroke:#4945ff"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"></path><path d="M9 18h6"></path><path d="M10 22h4"></path></svg></span><div class="publicNavBoardDropdown"><div class="dropdownContainer controlled"><div class="selection split"><a style="color:#4945ff" class="option" href="/developer-experience"><div class="optionContent"><div>Developer Experience</div><div class="uppercaseHeader count">106</div></div></a><div class="icon-chevron-down"></div></div></div></div></div></div></div></div></div></div><div class="boardHome"><div class="contentContainer"><div class="contentInnerContainer"><div class="subdomainSidebarContainer"><div class="sidebarContainer"><ul class="boardList boardListContainer"><h3 class="textV2 header headingXs">Boards</h3><a class="" href="/customization"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Content Editing XP</p></li></a><a class="" href="/developer-experience"><li class="boardItem active"><p class="textV2 boardName bodyMd regular-weight">Developer Experience</p></li></a><a class="" href="/documentation"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Documentation</p></li></a><a class="" href="/feature-requests"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Feature Requests</p></li></a><a class="" href="/cloud"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Strapi Cloud</p></li></a><a class="" href="/plugin-requests"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Plugin Requests</p></li></a><a class="" href="/security"><li class="boardItem"><p class="textV2 boardName bodyMd regular-weight">Security</p></li></a></ul><div class="cannyAttribution desktopOnly"><div class="firstLine"><a href="https://canny.io/powered-by-canny?utm_source=feedback_subdomain&utm_medium=powered&utm_campaign=strapi&company=Strapi" rel="noopener" target="_blank" class="attribution">Powered by Canny</a></div></div></div><div class="mainContainer"><div class="boardContent"><header class="boardHeader"><div class="nameSection"><h1 class="textV2 headingMd">Developer Experience</h1></div><div class="boardDescription"><div class="markdown"></div></div></header><form class="createPostFormV2 open createPostFormV2 fileForm"><div class="createPostFormSection postForm first"><div class="textInput title focused"><div class="inputContainer"><input type="text" aria-label="Title" placeholder="Short, descriptive title" value=""/></div></div><label for="details" class="descriptionLabel"><p class="textV2 bodyMd medium-weight">Description</p></label><div class="autoResizeTextarea details" style="height:38px"><span class="inputContainer"><textarea aria-label="Details" id="details" placeholder="Any additional details…" rows="1"></textarea></span></div><div class="dropdowns"><div class="dropdownContainer"><p class="textV2 bodyMd medium-weight">Category</p><div class="dropdownV2Wrapper dropdown createPostFormV2CategorySelect"><div class="labelWrapper verticalPlacement"><div class="dropdownV2 singleSelect withBorder"><div class="dropdownWrapperV2"><div class="dropdownHeadWrapper" aria-required="false" aria-label="toggle menu" aria-activedescendant="" aria-controls="downshift-3059-menu" aria-expanded="false" aria-haspopup="listbox" aria-labelledby="downshift-3059-label" id="downshift-3059-toggle-button" role="combobox" tabindex="0"><div class="leftWrapper"><span class="dropdownPlaceholder">Select a category</span></div><span class="rightIcons"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down toggleIcon" aria-label="toggle icon"><path d="m6 9 6 6 6-6"></path></svg></span></div><ul class="selectOptions dropdownOptions-bottom" id="downshift-3059-menu" role="listbox" aria-labelledby="downshift-3059-label" style="max-width:200px"><ul class="optionsList"><li class="groupTitle"></li><ul><li class="selectOption" tabindex="-1" role="option" aria-selected="false" id="downshift-3059-item-0"><span class="optionLeftWrapper"><span class="optionText"><div class="categoryOption">Dynamic Applications</div></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check suffixIcon" aria-label="check icon"><path d="M20 6 9 17l-5-5"></path></svg></li><li class="selectOption" tabindex="-1" role="option" aria-selected="false" id="downshift-3059-item-1"><span class="optionLeftWrapper"><span class="optionText"><div class="categoryOption">Uncategorized</div></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check suffixIcon" aria-label="check icon"><path d="M20 6 9 17l-5-5"></path></svg></li></ul></ul></ul></div></div></div></div></div></div></div><footer class="footer"><div class="ctaSection"><div class="fileInput"><div class="" style="border-style:solid"><div class="gUKhu2OV"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-paperclip "><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg></div></div><input type="file" accept="image/png,image/jpeg,image/jpeg,image/gif,image/webp,image/svg+xml,text/plain,application/rtf,text/rtf,text/csv,text/markdown,application/x-yaml,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.oasis.opendocument.text,application/vnd.oasis.opendocument.spreadsheet,application/vnd.oasis.opendocument.presentation,application/x-iwork-keynote-sffkey,application/json,application/xml,text/xml,video/mp4,video/x-msvideo,video/avi,video/quicktime,video/x-ms-wmv,video/x-flv"/></div><button class="buttonV2 primary medium outlined" type="button"><span class="buttonLabel">Cancel</span></button><button aria-disabled="false" class="tintButton buttonV2 primary medium contained" type="submit" style="background:#4945ff;border-color:#4945ff"><span class="buttonLabel">Create Post</span></button></div></footer></form><div class="postListContainer"><div class="postList"><div class="topContainer"><div class="postListMenu"><div class="menu"><label><span class="text">Showing</span><div class="dropdown"><button class="selector" role="combobox" aria-activedescendant="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-sort-trending" aria-controls="2655da71-ed3a-d8da-f0ed-7993be5d24be" aria-expanded="false" aria-haspopup="listbox"><div class="selectedName">Trending</div><div class="icon-chevron-down" aria-hidden="true"></div></button><div class="dropdownContent hidden" id="2655da71-ed3a-d8da-f0ed-7993be5d24be" role="listbox"><div class="sorts" role="none"><div class="uppercaseHeader">Sort</div><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-sort-trending" role="option" aria-selected="true" class="" href="/developer-experience?category=dynamic-applications&sort=trending"><div class="option selected"><div class="dot" style="background-color:#4945ff"></div>Trending</div></a><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-sort-top" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&sort=top"><div class="option"><div class="dot" style="background-color:#4945ff"></div>Top</div></a><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-sort-new" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&sort=new"><div class="option"><div class="dot" style="background-color:#4945ff"></div>New</div></a></div><div class="filters" role="none"><div class="uppercaseHeader">Filter</div><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-status-candidate" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&status=candidate"><div class="option"><div class="dot" style="background-color:#4945ff"></div>Candidate</div></a><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-status-planned" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&status=planned"><div class="option"><div class="dot" style="background-color:#4945ff"></div>Planned</div></a><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-status-in-progress" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&status=in-progress"><div class="option"><div class="dot" style="background-color:#4945ff"></div>In Progress</div></a><a id="filterSortDropdown-2655da71-ed3a-d8da-f0ed-7993be5d24be-status-complete" role="option" aria-selected="false" class="" href="/developer-experience?category=dynamic-applications&status=complete"><div class="option"><div class="dot" style="background-color:#4945ff"></div>Complete</div></a></div></div></div></label><label><span class="text">posts in</span><div class="dropdown"><button class="selector" role="combobox" aria-activedescendant="__all__" aria-controls="d4006126-0eb5-f0a4-74ec-c236997b7741" aria-expanded="false" aria-haspopup="listbox"><div class="selectedName">All Categories</div><div class="icon-chevron-down" aria-hidden="true"></div></button><div class="dropdownContent hidden" id="d4006126-0eb5-f0a4-74ec-c236997b7741" role="listbox"><div class="categories" role="none"><a role="option" aria-selected="true" id="__all__" class="" href="/developer-experience?sort=top"><div class="option">All Categories</div></a><a role="option" aria-selected="false" id="categoryDropdown-d4006126-0eb5-f0a4-74ec-c236997b7741-635bf3ac54d0d145100aea4b" class="" href="/developer-experience?category=dynamic-applications&sort=top"><div class="option">Dynamic Applications<!-- --> (<!-- -->7<!-- -->)</div></a></div></div></div></label></div><div class="searchContainer"><div class="searchBar"><div class="searchInputContents"><div class="textInput searchInput"><div class="inset"><div class="icon icon-search"></div></div><div class="inputContainer"><input type="text" placeholder="Search…" value=""/></div></div></div></div></div></div></div><div class="posts"><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/field-permissions-via-users-permission-plugin"><div class="postTitle"><span>field permissions (via Users & Permission Plugin)</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">request to have the same permission controls like the Administration Panel role management for (Users & Permission Plugin)</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">6</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">7</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/need-previous-component-data-in-lifecycle-hook"><div class="postTitle"><span>Need previous component data in lifecycle hook</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">I need to get previous component data for a collection-type in lifecycle hook before the component data gets updated. I tried getting the previous component data using 4 different methods in the beforeUpdate lifecycle hook, but in all 4 cases it returns me the updated component data rather than the previous component data before it gets updated. I listed the 4 methods I used and attached a screenshot of what I tried. My collection-type is called tass and my component is called kickoutFlag just for some context. Please can anyone tell me how I can get previous component data before it is updated in a lifecycle hook? strapi.requestContext.get(); Using entityService api using strapi.query using strapi.db.query</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">2</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/advanced-control-of-when-webhooks-fire"><div class="postTitle"><span>Advanced control of when webhooks fire</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">For detailed information see Internal TID4413 In this specific use-case the user would like webhooks to not fire if the only update made was to a private field. Basically adding a short of logic filter lifecycle for webhooks that could prevent a webhook from firing.</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">1</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/adding-firebase-support"><div class="postTitle"><span>Adding firebase support</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">It will be better if we add firebase support to strapi where user can connect to firebase db and store their data in it, it will help many small scale startups to create a simple and easy dashboard</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">1</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/switch-users-permissions-to-passportjs"><div class="postTitle"><span>Switch Users-Permissions to Passport.js</span></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">1</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/export-relations-component"><div class="postTitle"><span>Export Relations component</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">I developed a plugin which allow to have lots of different types in one field, and I want to be really similar to all strapi, but I need to copy Relations component from content manager. It will be really nice if I can import Relations component from @strapi/content-manager</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">1</span></button></div><div class="postListItemV2"><a target="_blank" class="postLink postListItemBody" href="/developer-experience/p/runtiva"><div class="postTitle"><span>Runtiva</span></div><div class="postDetails"><div class="truncate" style="-webkit-line-clamp:2">Sports App</div></div><div class="metaInfo"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square "><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="count">0</span></div></a><button class="postVotesV2"><div class="background"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up chevron"><path d="m18 15-6-6-6 6"></path></svg><span class="score">1</span></button></div></div></div></div></div><div class="cannyAttribution mobileOnly"><div class="firstLine"><a href="https://canny.io/powered-by-canny?utm_source=feedback_subdomain&utm_medium=powered&utm_campaign=strapi&company=Strapi" rel="noopener" target="_blank" class="attribution">Powered by Canny</a></div></div></div></div></div></div></div></div></div></div><iframe width="0" height="0" id="canny-product-seen-frame" sandbox="allow-same-origin allow-scripts" scrolling="no" src="https://product-seen.canny.io/product-seen.html" style="border:0;display:none"></iframe><div id="fb-root"></div></div></div></div><script>window.__data = {"actionItemQueries":{"count":0,"postActionsCount":0,"draftActionsCount":0,"draftActionsCountPerSource":{},"updatedAt":null,"items":{},"queries":{}},"asanaSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null},"asanaTaskSuggestions":{},"automations":{"error":null,"lastUpdated":null,"loading":true,"data":null},"azureDevopsSettings":null,"azureDevopsWorkItemSuggestions":{},"boards":{"allLoaded":true,"allLoading":false,"error":null,"items":{"customization":{"_id":"6137b82c9feae77a40da0ce4","activePostCount":140,"postCount":159,"urlName":"customization","name":"Content Editing XP","created":"2021-09-07T19:06:20.483Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"👉 Let us know more about the problem it would solve by describing as much as possible the use case ","detailsField":"Details","detailsPlaceholder":"Insert how would this help a user's problem","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"boardFields":[],"categories":[],"uncategorized":{"subscribed":false}},"developer-experience":{"_id":"6137b8420e9e821bdf031dd7","activePostCount":106,"postCount":119,"urlName":"developer-experience","name":"Developer Experience","created":"2021-09-07T19:06:42.513Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"boardFields":[],"categories":[{"_id":"635bf3ac54d0d145100aea4b","created":"2022-10-28T15:22:20.266Z","index":0,"name":"Dynamic Applications","parentID":null,"postCount":7,"urlName":"dynamic-applications"}],"uncategorized":{"subscribed":false}},"documentation":{"_id":"6137bef7277d3f5e2499cfea","activePostCount":32,"postCount":34,"urlName":"documentation","name":"Documentation","created":"2021-09-07T19:35:19.746Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":true,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"categories":[{"_id":"6137c0a16ef1490755e0a6f1","created":"2021-09-07T19:42:25.297Z","name":"Developer Docs","parentID":null,"postCount":26,"urlName":"developer-docs"},{"_id":"6137c0a765a92726bfbca325","created":"2021-09-07T19:42:31.528Z","name":"User Guide","parentID":null,"postCount":4,"urlName":"user-guide"},{"_id":"6137c0ac7d76d05f1ef9858e","created":"2021-09-07T19:42:36.958Z","name":"Resource Center","parentID":null,"postCount":1,"urlName":"resource-center"}],"uncategorized":{"subscribed":false},"boardFields":[]},"feature-requests":{"_id":"6179767c0178b95c34c70015","activePostCount":368,"postCount":386,"urlName":"feature-requests","name":"Feature Requests","created":"2021-10-27T15:55:40.138Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":true,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"boardFields":[],"categories":[],"uncategorized":{"subscribed":false}},"cloud":{"_id":"6137b8144ac867740fa46ccc","activePostCount":16,"postCount":26,"urlName":"cloud","name":"Strapi Cloud","created":"2021-09-07T19:05:56.565Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"categories":[],"uncategorized":{"subscribed":false},"boardFields":[]},"plugin-requests":{"_id":"61ddc0fc3f733345a8172cff","activePostCount":235,"postCount":247,"urlName":"plugin-requests","name":"Plugin Requests","created":"2022-01-11T17:40:12.961Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":true,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"categories":[],"uncategorized":{"subscribed":false},"boardFields":[]},"security":{"_id":"6137b81c02e22c01a93b25cb","activePostCount":17,"postCount":19,"urlName":"security","name":"Security","created":"2021-09-07T19:06:04.609Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"categories":[{"_id":"6137c0fe0e9e821bdf03546a","created":"2021-09-07T19:43:58.387Z","name":"Authentication (Logins)","parentID":null,"postCount":10,"urlName":"authentication-logins"},{"_id":"6137c10d23d1881bed19a423","created":"2021-09-07T19:44:13.412Z","name":"Permissions System","parentID":null,"postCount":4,"urlName":"permissions-system"}],"uncategorized":{"subscribed":false},"boardFields":[]}},"lastUpdated":1732799997217},"changelog":null,"changelogEntries":{},"changelogEntryQueries":{},"clickupRules":null,"clickupTaskSuggestions":{},"company":{"error":null,"lastUpdated":1732799997179,"loading":false,"notFound":false,"_id":"60df9525a0120a64742b512b","authRedirectEnabled":false,"boardCount":7,"creatorID":"6076fa6ee326c327f6cdc318","faviconURL":"https:\u002F\u002Fcanny.io\u002Fimages\u002Fa89a07311f28f26319bfef2cc7d20c08.png","logoURL":"https:\u002F\u002Fcanny.io\u002Fimages\u002Fc10da7fa9b0d090bab66799c326e1c91.png","tintColor":"#4945ff","name":"Strapi","subdomain":"strapi","created":"2021-07-02T22:37:25.027Z","__v":0,"ogImageURL":"https:\u002F\u002Fcanny.io\u002Fimages\u002Fog\u002F60df9525a0120a64742b512b\u002F359774284.jpg","enableGlobalPostSearch":true,"authRedirectURL":"","showChangelog":true,"showRoadmap":true,"theme":"light","viewerIsMember":false,"viewerHasThirdPartyMemberships":false,"azure":null,"changelog":{"allowIdentified":false,"domains":["strapi.io"],"enableEmailSubscriptions":false,"private":true,"viewerHasAccess":false,"hasPublishedEntries":false},"primaryDomain":"feedback.strapi.io","features":{"adminRoles":true,"advancedAnalytics":false,"categories":true,"customEmailDomain":false,"customStatuses":true,"disableUserSubmissions":true,"internalComments":true,"liveSupport":true,"postETAs":true,"postOwners":true,"prioritizationRoadmap":true,"privateBoards":true,"privateChangelog":true,"privateComments":true,"removeBranding":false,"tags":true,"unlistedBoards":true,"userProfiles":true,"userSegmentation":true,"customDomain":true,"customPostFields":true,"exportComments":false,"postAutomation":true,"commentSearch":true,"moderationTools":true,"customRoles":false,"autoResponse":true,"privateVotes":true,"voteWeights":true,"summarizeComments":true,"privateAuthors":true,"translateContent":true,"shareRoadmaps":true,"changelogEmailSubscriptions":true,"deduplication":true,"supportExtraction":true,"reviewSources":true,"customAccess":true,"fileAttachments":true},"privateDomains":[],"okta":null,"featureAllowlist":[],"gaPropertyID":"G-26RRSW4MNF","statuses":[{"_id":"6194db0cfdece21ce286aa24","createdBy":null,"showInPublicRoadmap":false,"color":"#a6a6a6","companyID":"60df9525a0120a64742b512b","name":"open","order":0,"type":"Initial","urlName":"open","created":"2021-11-17T10:35:56.175Z","__v":0},{"_id":"6194db0cfdece21ce286aa25","createdBy":null,"showInPublicRoadmap":false,"color":"#85b5b5","companyID":"60df9525a0120a64742b512b","name":"candidate","order":1,"type":"Active","urlName":"candidate","created":"2021-11-17T10:35:56.176Z","__v":0},{"_id":"6194db0cfdece21ce286aa26","createdBy":null,"showInPublicRoadmap":true,"color":"#1fa0ff","companyID":"60df9525a0120a64742b512b","name":"planned","order":2,"type":"Active","urlName":"planned","created":"2021-11-17T10:35:56.176Z","__v":0},{"_id":"6194db0cfdece21ce286aa27","createdBy":null,"showInPublicRoadmap":true,"color":"#c17aff","companyID":"60df9525a0120a64742b512b","name":"in progress","order":3,"type":"Active","urlName":"in-progress","created":"2021-11-17T10:35:56.176Z","__v":0},{"_id":"6194db0cfdece21ce286aa28","createdBy":null,"showInPublicRoadmap":true,"color":"#6cd345","companyID":"60df9525a0120a64742b512b","name":"complete","order":4,"type":"Complete","urlName":"complete","created":"2021-11-17T10:35:56.176Z","__v":0},{"_id":"6194db0cfdece21ce286aa5c","createdBy":null,"showInPublicRoadmap":false,"color":"#ed2b2b","companyID":"60df9525a0120a64742b512b","name":"closed","order":5,"type":"Closed","urlName":"closed","created":"2021-11-17T10:35:56.293Z","__v":0}],"oidc":null,"autopilot":{"additionalCredits":0,"additionalCreditLimit":0,"additionalCreditsDisabled":false,"creditLimit":500,"creditsPerPurchase":100,"planLimit":500,"resets":"2024-12-08T12:00:00.000Z","unlimitedAdditionalCredits":false,"usedCredits":0},"billingData":{"status":"active","isFree":false},"members":[{"_id":"6076ebe0b4d0a10cea20f17d","lastSeen":"2023-10-10T07:38:19.465Z","roleID":"60df9525a0120a64742b5132"},{"_id":"6076fa6ee326c327f6cdc318","lastSeen":"2024-11-05T15:38:15.329Z","roleID":"60df9525a0120a64742b5130"},{"_id":"6079a22c517c44720be71b63","lastSeen":"2024-10-15T09:35:44.892Z","roleID":"60df9525a0120a64742b5132"},{"_id":"60870852506ebc2a01dddb3b","lastSeen":"2024-11-23T01:30:13.428Z","roleID":"60df9525a0120a64742b5132"},{"_id":"608848bfd458b64227b11a52","lastSeen":"2024-09-30T12:03:50.687Z","roleID":"60df9525a0120a64742b5130"},{"_id":"609e3e9b6196347f985ff355","roleID":"60df9525a0120a64742b5132"},{"_id":"6126a70e9ca7ae1738782f59","lastSeen":"2024-11-28T10:48:00.625Z","roleID":"60df9525a0120a64742b5130"},{"_id":"612f45ffb919006116d2d3f2","lastSeen":"2024-11-28T10:45:47.815Z","roleID":"60df9525a0120a64742b5132"},{"_id":"61fbc2c95371b31e0e6622ed","lastSeen":"2024-11-18T11:27:24.201Z","roleID":"60df9525a0120a64742b5131"},{"_id":"642efad70201c009ca7dc133","lastSeen":"2024-11-07T11:02:43.281Z","roleID":"60df9525a0120a64742b5132"},{"_id":"6463d45f648848092129a27c","lastSeen":"2024-05-28T12:27:50.807Z","roleID":"60df9525a0120a64742b5132"},{"_id":"64e630126c0865e4a12d4831","lastSeen":"2024-10-22T13:05:11.740Z","roleID":"60df9525a0120a64742b5131"}]},"cookies":{"__canny__browserTheme":undefined,"__canny__experimentID":undefined,"__canny__locale":undefined,"omitNonEssentialCookies":undefined,"__canny__requestID":"6152ad51-8f27-1134-030a-540bbb4a9053","__host":"feedback.strapi.io"},"customFields":null,"customPostFields":{"error":null,"lastUpdated":null,"loading":true,"data":null},"dashboardActivity":null,"discordSettings":null,"freshdeskSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null},"githubIssueSuggestions":{},"gongSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null},"gsuiteGroups":null,"helpscoutSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null},"inboxItemQueries":{},"issueSuggestions":{},"jiraRules":{"error":null,"lastUpdated":null,"loading":true,"data":null},"linearIssueSuggestions":{},"linearSettings":null,"mentionSuggestions":{},"notifications":{"error":null,"lastUpdated":1732799997144,"loading":false,"loadingMore":false,"count":0,"hasNextPage":false,"items":[],"lastUpdate":1732799997179,"pages":1},"postDraft":{},"posts":{"6137b8420e9e821bdf031dd7":{"field-permissions-via-users-permission-plugin":{"_id":"6440de7906dbc3f2c6fc2bb8","authorID":"6440cbd606dbc3f2c6e9e245","commentCount":6,"details":"request to have the same permission controls like the Administration Panel role management for (Users & Permission Plugin)","score":7,"status":"open","boardID":"6137b8420e9e821bdf031dd7","title":"field permissions (via Users & Permission Plugin)","urlName":"field-permissions-via-users-permission-plugin","created":"2023-04-20T06:40:57.923Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":true,"lowEngagement":false,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined},"need-previous-component-data-in-lifecycle-hook":{"_id":"63efa740cbd1e3452f364492","authorID":"63efa3c1382dde45122faa48","commentCount":0,"details":"I need to get previous component data for a collection-type in lifecycle hook before the component data gets updated. \n\nI tried getting the previous component data using 4 different methods in the beforeUpdate lifecycle hook, but in all 4 cases it returns me the updated component data rather than the previous component data before it gets updated. I listed the 4 methods I used and attached a screenshot of what I tried.\n\nMy collection-type is called tass and my component is called kickoutFlag just for some context.\n\nPlease can anyone tell me how I can get previous component data before it is updated in a lifecycle hook?\n\n1. strapi.requestContext.get();\n\n2. Using entityService api\n\n3. using strapi.query\n\n4. using strapi.db.query","score":2,"status":"open","boardID":"6137b8420e9e821bdf031dd7","title":"Need previous component data in lifecycle hook","urlName":"need-previous-component-data-in-lifecycle-hook","created":"2023-02-17T16:11:44.311Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":false,"moderateEngagement":true,"votesHidden":false},"filteredScore":undefined},"advanced-control-of-when-webhooks-fire":{"_id":"64c27ec7d0e781288a4ec8d6","authorID":"6076fa6ee326c327f6cdc318","commentCount":0,"details":"For detailed information see Internal TID4413\n\nIn this specific use-case the user would like webhooks to not fire if the only update made was to a private field. Basically adding a short of logic filter lifecycle for webhooks that could prevent a webhook from firing.","score":1,"status":"open","boardID":"6137b8420e9e821bdf031dd7","title":"Advanced control of when webhooks fire","urlName":"advanced-control-of-when-webhooks-fire","created":"2023-07-27T14:27:19.799Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":true,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined},"adding-firebase-support":{"_id":"64d1255edd0aad099c261558","authorID":"64d1255c8ce3710a9b2192c5","commentCount":0,"details":"It will be better if we add firebase support to strapi where user can connect to firebase db and store their data in it, it will help many small scale startups to create a simple and easy dashboard","score":1,"status":"open","boardID":"6137b8420e9e821bdf031dd7","title":"Adding firebase support","urlName":"adding-firebase-support","created":"2023-08-07T17:09:50.147Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":true,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined},"switch-users-permissions-to-passportjs":{"_id":"6605e8107f6029ffb0c23bdf","authorID":"6076fa6ee326c327f6cdc318","boardID":"6137b8420e9e821bdf031dd7","commentCount":0,"details":"","score":1,"status":"open","title":"Switch Users-Permissions to Passport.js","urlName":"switch-users-permissions-to-passportjs","created":"2024-03-28T21:58:40.348Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":true,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined},"export-relations-component":{"_id":"6710d289fb43558c47e393c5","authorID":"6280b177fbaf880b5dcf7e47","boardID":"6137b8420e9e821bdf031dd7","commentCount":0,"details":"I developed a plugin which allow to have lots of different types in one field, and I want to be really similar to all strapi, but I need to copy Relations component from content manager. It will be really nice if I can import Relations component from @strapi\u002Fcontent-manager","score":1,"status":"open","title":"Export Relations component","urlName":"export-relations-component","created":"2024-10-17T09:02:01.051Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":true,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined},"runtiva":{"_id":"671f512d939cc88ce5ac2db9","authorID":"645a68fcb78bb10984e64639","boardID":"6137b8420e9e821bdf031dd7","commentCount":0,"details":"Sports App","score":1,"status":"open","title":"Runtiva","urlName":"runtiva","created":"2024-10-28T08:54:05.397Z","viewerVote":0,"board":{"_id":"6137b8420e9e821bdf031dd7","urlName":"developer-experience","name":"Developer Experience"},"boardCommentsArePrivate":false,"voteSettings":{"highEngagement":false,"lowEngagement":true,"moderateEngagement":false,"votesHidden":false},"filteredScore":undefined}}},"postsActivity":{},"postQueries":{"{\"currentBoard\":\"developer-experience\",\"boardURLNames\":\"developer-experience\",\"categories\":\"dynamic-applications\",\"sort\":\"top\"}":{"lastUpdated":1732799997315,"loading":false,"queryParams":{"currentBoard":{"_id":"6137b8420e9e821bdf031dd7","activePostCount":106,"postCount":119,"urlName":"developer-experience","name":"Developer Experience","created":"2021-09-07T19:06:42.513Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"boardFields":[],"categories":[{"_id":"635bf3ac54d0d145100aea4b","created":"2022-10-28T15:22:20.266Z","index":0,"name":"Dynamic Applications","parentID":null,"postCount":7,"urlName":"dynamic-applications"}],"uncategorized":{"subscribed":false}},"board":{"_id":"6137b8420e9e821bdf031dd7","activePostCount":106,"postCount":119,"urlName":"developer-experience","name":"Developer Experience","created":"2021-09-07T19:06:42.513Z","settings":{"access":"public","allowIdentified":false,"domain":null,"indexed":true,"privateAuthors":false,"privateVotes":false,"segmentURLName":null,"showCreateForm":true,"showVoterNames":false,"verifiedBy":"email"},"strings":{"createCTA":"Create Post","createHeading":"Create a Post","description":"","detailsField":"Details","detailsPlaceholder":"Any additional details…","formCTA":"Share your feedback...","titleField":"Title","titlePlaceholder":"Short, descriptive title"},"boardFields":[],"categories":[{"_id":"635bf3ac54d0d145100aea4b","created":"2022-10-28T15:22:20.266Z","index":0,"name":"Dynamic Applications","parentID":null,"postCount":7,"urlName":"dynamic-applications"}],"uncategorized":{"subscribed":false}},"category":"dynamic-applications","sort":"top"},"hasNextPage":false,"loadingMore":false,"posts":[{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"field-permissions-via-users-permission-plugin","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"need-previous-component-data-in-lifecycle-hook","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"advanced-control-of-when-webhooks-fire","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"adding-firebase-support","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"switch-users-permissions-to-passportjs","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"export-relations-component","filteredScore":undefined,"viewerInFilteredVoters":undefined},{"boardID":"6137b8420e9e821bdf031dd7","postURLName":"runtiva","filteredScore":undefined,"viewerInFilteredVoters":undefined}]}},"postSuggestions":{},"queueItemQueries":{"count":0,"postsCount":0,"draftsCount":0,"draftsCountPerSource":{},"updatedAt":null,"items":{},"queries":{}},"sharedRoadmap":null,"sharedRoadmapPosts":null,"reduxAsyncConnect":{"loaded":true,"loadState":{}},"referralSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null},"roadmap":null,"roadmaps":null,"roadmapPosts":{},"routing":{"locationBeforeTransitions":{"pathname":"\u002Fdeveloper-experience","search":"?category=dynamic-applications&sort=top","hash":"","state":undefined,"action":"POP","key":null,"query":{"category":"dynamic-applications","sort":"top"}}},"thirdPartyCompanies":{},"thirdPartyCompanyFeatureRequestsQueries":{"updatedAt":null,"queries":{}},"tpcForFilters":{"companyNames":{},"accountOwnerNames":{},"queries":{},"lastUpdated":null},"thirdPartyCompanyPosts":{},"thirdPartyCompanyQueries":{},"userPosts":{},"userQueries":{},"users":{},"userReactions":{},"userSuggestions":{},"viewer":{"error":null,"lastUpdated":1732799997146,"loading":false,"loggedOut":true},"voteQueries":{},"voters":{},"zoomSettings":{"error":null,"lastUpdated":null,"loading":true,"data":null}};</script><script>document.body.classList.remove('preload');</script></body></html>