Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							16df33b078 
							
						 
					 
					
						
						
							
							feat: add lifecycle trend graphs ( #10077 )  
						
						... 
						
						
						
						Adds lifecycle trend graphs to the insights page.
The graphs are each placed within their own boxes. The boxes do not have
any more information in them yet.
Also, because the data returned from the API is still all zeroes, I've
used mock data that matches the sketches.
Finally, the chart configuration and how it's split into a
LifecycleChart that lazy loads a LifecycleChartComponent is based on the
LineChart and LineChartComponent that we use elsewhere on the insights
page.
Light mode:
<img width="1562" alt="image"
src="https://github.com/user-attachments/assets/6dd11168-be24-42d4-aa97-a7a55651fa0e "
/>
We might want to tweak some colors in dark mode, but maybe not? 🤷🏼  
 
						
					 
					
						2025-06-05 08:35:14 +02:00 
						 
				 
			
				
					
						
							
							
								Tymoteusz Czech 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							37548c3436 
							
						 
					 
					
						
						
							
							feat: rename health to technical debt ( #10063 )  
						
						... 
						
						
						
						On insights and project status, we would like to show "technica debt"
instead of "health". New value is that of `1/health`, or simplified:
`healthy flags / total flags` 
						
					 
					
						2025-06-04 11:01:17 +02:00 
						 
				 
			
				
					
						
							
							
								Gastón Fournier 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							5019f4fcbc 
							
						 
					 
					
						
						
							
							chore!: removing userId strategy for new installations of Unleash ( #9800 )  
						
						... 
						
						
						
						This removes a strategy that was already deprecated, but only for new
installations.
I tested starting with an installation with this strategy being used and
then updating, and I was still able to edit the strategy, so this should
not impact current users.
On a fresh install the strategy is no longer available.
---------
Co-authored-by: Nuno Góis <github@nunogois.com> 
						
					 
					
						2025-06-04 09:30:13 +02:00 
						 
				 
			
				
					
						
							
							
								Christopher Kolstad 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							8050f25add 
							
						 
					 
					
						
						
							
							chore(adminapi)!: Remove feature variant endpoints ( #10071 )  
						
						... 
						
						
						
						BREAKING CHANGE: This removes the
GET /api/admin/projects/{project}/features/{featureName}/variants 
PATCH /api/admin/projects/{project}/features/{featureName}/variants 
PUT /api/admin/projects/{project}/features/{featureName}/variants
endpoints
Users should move to environment or strategy specific variant methods
rather than feature level variant methods. 
						
					 
					
						2025-06-04 09:09:52 +02:00 
						 
				 
			
				
					
						
							
							
								Mateusz Kwasniewski 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							0819b2cf32 
							
						 
					 
					
						
						
							
							chore: remove link flags ( #10076 )  
						
						
						
					 
					
						2025-06-03 13:47:24 +02:00 
						 
				 
			
				
					
						
							
							
								Mateusz Kwasniewski 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							280c9c3f64 
							
						 
					 
					
						
						
							
							chore: remove flag cleanup reminder ( #10074 )  
						
						
						
					 
					
						2025-06-03 13:13:51 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c24c58c51c 
							
						 
					 
					
						
						
							
							chore!: remove deprecated get metrics traffic ( #10064 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3370/remove-get-apiadminmetricstrafficperiod-deprecated-in-680 
Removes GET `/api/admin/metrics/traffic/{period}` which was deprecated
in v6.8.
Also cleans up related code.
For OSS this means switching to `/traffic` using an expand and contract
approach. We can drop the `/traffic-search` endpoint in Enterprise after
this is merged. 
					
						2025-06-03 10:24:48 +01:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							f7c667e410 
							
						 
					 
					
						
						
							
							Feat(1-3760)/filters per analytics section ( #10039 )  
						
						... 
						
						
						
						Splits the insights page into separate sections with their own separate
filters. Each filter is sticky to the top of the page, similar to how
the previous filters worked.
In doing this, I have also moved around a lot of code. Refer to the
inline comments for more specific examples, but on a high level, this
PR:
- Moves the flag check from InsightsCharts into Insights itself. Because
the old Insights had filters and state, and the new one does not, it
made sense to fork off higher up in the tree. Because the new version
doesn't have state, I have also simplified it and removed an
intermediate component (InsightsCharts) that doesn't feel necessary
anymore.
- Because InsightsCharts isn't used anymore, I've moved the
LegacyInsightsCharts file back into InsightsCharts. However, I'm happy
to move it back if we think that's useful.
- Instead of all charts living in InsightsCharts, I've split each
section into its own file in the new sections directory. Because the
sections have separate filters, they don't share any state anymore, so
there's nothing they share.
- I'm reusing the existing hook and endpoint. As it stands, the
performance insights use **most** of the data from that payload (but not
all of it). The user insights use some of it. Flag lifecycle insights
doesn't use anything, but I've wired it up to make the filters work. I
expect that we'll iterate on the API endpoints etc later.
 
						
					 
					
						2025-06-03 10:47:30 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							6d70265edd 
							
						 
					 
					
						
						
							
							chore: clean up project related tech debt ( #10065 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3581/remove-project-related-legacy-code 
Identified some clean up opportunities during deprecated endpoint
removal, mostly related to project insights. 
					
						2025-06-03 09:21:55 +01:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							b26e0469be 
							
						 
					 
					
						
						
							
							fix: case sensitive icon has wrong fill color in dark mode ( #10068 )  
						
						... 
						
						
						
						The case sensitive buttons looked off in dark mode because we'd
forgotten to properly target the path element. We didn't notice, because
they looked right in light mode.
## Before:
Dark:
<img width="267" alt="image"
src="https://github.com/user-attachments/assets/2c91953c-9dbd-4dff-943e-ef35105d3863 "
/>
<img width="291" alt="image"
src="https://github.com/user-attachments/assets/02ba40d2-92ca-4237-abd6-a1c1dda301d4 "
/>
Light:
<img width="275" alt="image"
src="https://github.com/user-attachments/assets/028b4980-463b-4e42-833d-edba26364f62 "
/>
<img width="318" alt="image"
src="https://github.com/user-attachments/assets/f1a38dc1-5e4c-4309-801e-3b5b6635a96c "
/>
## After:
Dark:
<img width="421" alt="image"
src="https://github.com/user-attachments/assets/0bc38579-319b-472a-8877-7320a99403ab "
/>
<img width="366" alt="image"
src="https://github.com/user-attachments/assets/836cba98-7998-403f-b8f3-e989845086a2 "
/>
Light:
<img width="429" alt="image"
src="https://github.com/user-attachments/assets/85abd5f4-d6b9-4b62-930f-b17f1085172c "
/>
<img width="313" alt="image"
src="https://github.com/user-attachments/assets/661eab6f-7717-4b0c-9a35-0a075de1a10e "
/> 
						
					 
					
						2025-06-02 08:36:59 +00:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							895cb1aab3 
							
						 
					 
					
						
						
							
							fix: regexes in flag naming patterns will now break when necessary ( #10067 )  
						
						... 
						
						
						
						This prevents the regex pattterns from causing overflows in chrome and
pushing the create button off screen (firefox already handled it
🤷 ).
We don't provide the *best* experience when you have super long flag
patterns, but we can potentially look into that later. For now, this
fixes the immediate issue.
Before the fix:
Chrome:
<img width="1519" alt="image"
src="https://github.com/user-attachments/assets/5bcb717c-67f0-4c7b-9ac1-29e9bdaf568e "
/>
Firefox:
<img width="1385" alt="image"
src="https://github.com/user-attachments/assets/19f38233-f6cd-45f0-9766-76b954f2eed4 "
/>
After the fix:
Chrome:
<img width="1383" alt="image"
src="https://github.com/user-attachments/assets/3d9bb6dd-b31c-45aa-9c4e-baa96ba1c16b "
/>
Firefox is the same 
						
					 
					
						2025-06-02 06:53:51 +00:00 
						 
				 
			
				
					
						
							
							
								Tymoteusz Czech 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							016d82a797 
							
						 
					 
					
						
						
							
							feat: update configuration menu ( #10041 )  
						
						... 
						
						
						
						Updated "Configure" navigation, with all interactions including expanding/collapsing size of the menu. 
						
					 
					
						2025-05-29 11:26:26 +00:00 
						 
				 
			
				
					
						
							
							
								renovate[bot] 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							e67e60a363 
							
						 
					 
					
						
						
							
							chore(deps): update dependency typescript to v5.8.3 ( #7480 )  
						
						... 
						
						
						
						This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [typescript](https://www.typescriptlang.org/ )
([source](https://redirect.github.com/microsoft/TypeScript )) | [`5.6.3`
-> `5.8.3`](https://renovatebot.com/diffs/npm/typescript/5.6.3/5.8.3 ) |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
| [typescript](https://www.typescriptlang.org/ )
([source](https://redirect.github.com/microsoft/TypeScript )) | [`5.4.5`
-> `5.8.3`](https://renovatebot.com/diffs/npm/typescript/5.4.5/5.8.3 ) |
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
### Release Notes
<details>
<summary>microsoft/TypeScript (typescript)</summary>
###
[`v5.8.3`](https://redirect.github.com/microsoft/TypeScript/compare/v5.8.2...68cead182cc24afdc3f1ce7c8ff5853aba14b65a )
[Compare
Source](https://redirect.github.com/microsoft/TypeScript/compare/v5.8.2...v5.8.3 )
###
[`v5.8.2`](https://redirect.github.com/microsoft/TypeScript/compare/v5.7.3...beb69e4cdd61b1a0fd9ae21ae58bd4bd409d7217 )
[Compare
Source](https://redirect.github.com/microsoft/TypeScript/compare/v5.7.3...v5.8.2 )
###
[`v5.7.3`](https://redirect.github.com/microsoft/TypeScript/releases/tag/v5.7.3 ):
TypeScript 5.7.3
[Compare
Source](https://redirect.github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3 )
For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/ ).
- [fixed issues query for Typescript 5.7.0
(Beta)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.0%22+is%3Aclosed+ ).
- [fixed issues query for Typescript 5.7.1
(RC)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.1%22+is%3Aclosed+ ).
- [fixed issues query for Typescript 5.7.2
(Stable)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.2%22+is%3Aclosed+ ).
- [fixed issues query for Typescript 5.7.3
(Stable)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.2%22+is%3Aclosed+ ).
Downloads are available on
[npm](https://www.npmjs.com/package/typescript )
###
[`v5.7.2`](https://redirect.github.com/microsoft/TypeScript/releases/tag/v5.7.2 ):
TypeScript 5.7
[Compare
Source](https://redirect.github.com/microsoft/TypeScript/compare/v5.6.3...v5.7.2 )
For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/ ).
- [fixed issues query for Typescript 5.7.0
(Beta)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.0%22+is%3Aclosed+ ).
- [fixed issues query for Typescript 5.7.1
(RC)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.1%22+is%3Aclosed+ ).
- [fixed issues query for Typescript 5.7.2
(Stable)](https://redirect.github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.7.2%22+is%3Aclosed+ ).
Downloads are available on:
-   [npm](https://www.npmjs.com/package/typescript )
</details>
---
### Configuration
📅  **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).
🚦  **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕  **Ignore**: Close this PR and you won't be reminded about these
updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjAuMSIsInVwZGF0ZWRJblZlciI6IjQwLjExLjkiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nuno Góis <github@nunogois.com> 
						
					 
					
						2025-05-29 10:49:07 +00:00 
						 
				 
			
				
					
						
							
							
								Mateusz Kwasniewski 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							08e6c77d9c 
							
						 
					 
					
						
						
							
							feat: prepopulate new user ( #10057 )  
						
						
						
					 
					
						2025-05-29 12:08:46 +02:00 
						 
				 
			
				
					
						
							
							
								renovate[bot] 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							83abd2bff8 
							
						 
					 
					
						
						
							
							chore(deps): update dependency @tanstack/react-virtual to v3.13.9 ( #10049 )  
						
						... 
						
						
						
						This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@tanstack/react-virtual](https://tanstack.com/virtual )
([source](https://redirect.github.com/TanStack/virtual/tree/HEAD/packages/react-virtual ))
| [`3.13.2` ->
`3.13.9`](https://renovatebot.com/diffs/npm/@tanstack%2freact-virtual/3.13.2/3.13.9 )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
### Release Notes
<details>
<summary>TanStack/virtual (@​tanstack/react-virtual)</summary>
###
[`v3.13.9`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3139 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.8...@tanstack/react-virtual@3.13.9 )
##### Patch Changes
- Updated dependencies
\[[`9e33cdb`](9e33cdb1c8https://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.9
###
[`v3.13.8`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3138 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.7...@tanstack/react-virtual@3.13.8 )
##### Patch Changes
- Updated dependencies
\[[`60719f6`](60719f61b5https://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.8
###
[`v3.13.7`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3137 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.6...@tanstack/react-virtual@3.13.7 )
##### Patch Changes
- Updated dependencies
\[[`e2d93c2`](e2d93c2dcdhttps://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.7
###
[`v3.13.6`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3136 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.5...@tanstack/react-virtual@3.13.6 )
##### Patch Changes
- Updated dependencies
\[[`042616f`](042616f39chttps://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.6
###
[`v3.13.5`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3135 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.4...@tanstack/react-virtual@3.13.5 )
##### Patch Changes
- Updated dependencies
\[[`51656d9`](51656d94a2https://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.5
###
[`v3.13.4`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3134 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.13.3...@tanstack/react-virtual@3.13.4 )
##### Patch Changes
- Updated dependencies
\[[`514b62d`](514b62d049f03d8142c0https://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.4
###
[`v3.13.3`](https://redirect.github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3133 )
[Compare
Source](https://redirect.github.com/TanStack/virtual/compare/v3.13.2...@tanstack/react-virtual@3.13.3 )
##### Patch Changes
- Updated dependencies
\[[`02ef309`](02ef3097dehttps://redirect.github.com/tanstack/virtual-core )[@​3](https://redirect.github.com/3 ).13.3
</details>
---
### Configuration
📅  **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).
🚦  **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕  **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4zMy42IiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> 
						
					 
					
						2025-05-28 23:13:37 +00:00 
						 
				 
			
				
					
						
							
							
								renovate[bot] 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a9dba46c2c 
							
						 
					 
					
						
						
							
							chore(deps): update dependency @tanstack/react-table to v8.21.3 ( #10048 )  
						
						... 
						
						
						
						This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@tanstack/react-table](https://tanstack.com/table )
([source](https://redirect.github.com/TanStack/table/tree/HEAD/packages/react-table ))
| [`8.21.2` ->
`8.21.3`](https://renovatebot.com/diffs/npm/@tanstack%2freact-table/8.21.2/8.21.3 )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
[](https://docs.renovatebot.com/merge-confidence/ )
|
---
### Release Notes
<details>
<summary>TanStack/table (@​tanstack/react-table)</summary>
###
[`v8.21.3`](https://redirect.github.com/TanStack/table/releases/tag/v8.21.3 )
[Compare
Source](https://redirect.github.com/TanStack/table/compare/v8.21.2...v8.21.3 )
Version 8.21.3 - 4/14/25, 8:19 PM
#### Changes
##### Fix
- table-core: use right Document instance on getResizeHandler
(column-sizing feature)
([#​5989](https://redirect.github.com/TanStack/table/issues/5989 ))
([`54ce673`](https://redirect.github.com/TanStack/table/commit/54ce673 ))
by [@​riccardoperra](https://redirect.github.com/riccardoperra )
##### Docs
- fix all 158 broken links
([#​5972](https://redirect.github.com/TanStack/table/issues/5972 ))
([`f7bf6f1`](https://redirect.github.com/TanStack/table/commit/f7bf6f1 ))
by [@​kisaragi-hiu](https://redirect.github.com/kisaragi-hiu )
- add vue example for grouping
([#​5941](https://redirect.github.com/TanStack/table/issues/5941 ))
([`3efa59c`](https://redirect.github.com/TanStack/table/commit/3efa59c ))
by Harshil Patel
#### Packages
-
[@​tanstack/table-core](https://redirect.github.com/tanstack/table-core )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/angular-table](https://redirect.github.com/tanstack/angular-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/lit-table](https://redirect.github.com/tanstack/lit-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/qwik-table](https://redirect.github.com/tanstack/qwik-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/react-table](https://redirect.github.com/tanstack/react-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/solid-table](https://redirect.github.com/tanstack/solid-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/svelte-table](https://redirect.github.com/tanstack/svelte-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/vue-table](https://redirect.github.com/tanstack/vue-table )[@​8](https://redirect.github.com/8 ).21.3
-
[@​tanstack/react-table-devtools](https://redirect.github.com/tanstack/react-table-devtools )[@​8](https://redirect.github.com/8 ).21.3
</details>
---
### Configuration
📅  **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).
🚦  **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.
🔕  **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4zMy42IiwidXBkYXRlZEluVmVyIjoiNDAuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> 
						
					 
					
						2025-05-28 17:21:15 +00:00 
						 
				 
			
				
					
						
							
							
								Gastón Fournier 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							241b7e8165 
							
						 
					 
					
						
						
							
							chore: simplify serving of static openapi assets ( #10046 )  
						
						... 
						
						
						
						Use existing public folder from frontend to serve opeanapi static
assets. We also benefit from frontend image optimizations 
						
					 
					
						2025-05-28 19:14:55 +02:00 
						 
				 
			
				
					
						
							
							
								Tymoteusz Czech 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							b111abc96f 
							
						 
					 
					
						
						
							
							feat: update sidebar navigation - refactors ( #10037 )  
						
						... 
						
						
						
						- added `sideMenuCleanup` flag
- extracted `SecondaryNavigation`, `SecondaryNavigationList` and
`MobileNavigationSidebar` into separate files
- hidden recent projects and flags
- renamed 'Insights' to 'Analytics' 
						
					 
					
						2025-05-28 12:00:28 +02:00 
						 
				 
			
				
					
						
							
							
								dependabot[bot] 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							e65865d410 
							
						 
					 
					
						
						
							
							chore(deps-dev): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /frontend ( #9786 )  
						
						... 
						
						
						
						Bumps
[http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware )
from 2.0.7 to 2.0.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chimurai/http-proxy-middleware/releases ">http-proxy-middleware's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.9</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(fixRequestBody): check readableLength by <a
href="https://github.com/chimurai "><code>@chimurai</code></a> in <a
href="https://redirect.github.com/chimurai/http-proxy-middleware/pull/1097 ">chimurai/http-proxy-middleware#1097</a></li>
<li>chore(package): v2.0.9 by <a
href="https://github.com/chimurai "><code>@chimurai</code></a> in <a
href="https://redirect.github.com/chimurai/http-proxy-middleware/pull/1099 ">chimurai/http-proxy-middleware#1099</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.8...v2.0.9 ">https://github.com/chimurai/http-proxy-middleware/compare/v2.0.8...v2.0.9 </a></p>
<h2>v2.0.8</h2>
<h2>What's Changed</h2>
<ul>
<li>fix(fixRequestBody): prevent multiple .write() calls by <a
href="https://github.com/chimurai "><code>@chimurai</code></a> in <a
href="https://redirect.github.com/chimurai/http-proxy-middleware/pull/1090 ">chimurai/http-proxy-middleware#1090</a></li>
<li>fix(fixRequestBody): handle invalid request by <a
href="https://github.com/chimurai "><code>@chimurai</code></a> in <a
href="https://redirect.github.com/chimurai/http-proxy-middleware/pull/1091 ">chimurai/http-proxy-middleware#1091</a></li>
<li>chore(package): v2.0.8 by <a
href="https://github.com/chimurai "><code>@chimurai</code></a> in <a
href="https://redirect.github.com/chimurai/http-proxy-middleware/pull/1094 ">chimurai/http-proxy-middleware#1094</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.8 ">https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.8 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md ">http-proxy-middleware's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/chimurai/http-proxy-middleware/releases/tag/v2.0.9 ">v2.0.9</a></h2>
<ul>
<li>fix(fixRequestBody): check readableLength</li>
</ul>
<h2><a
href="https://github.com/chimurai/http-proxy-middleware/releases/tag/v2.0.8 ">v2.0.8</a></h2>
<ul>
<li>fix(fixRequestBody): prevent multiple .write() calls</li>
<li>fix(fixRequestBody): handle invalid request</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="617a7c9da9https://redirect.github.com/chimurai/http-proxy-middleware/issues/1099 ">#1099</a>)</li>
<li><a
href="d22d587648https://redirect.github.com/chimurai/http-proxy-middleware/issues/1097 ">#1097</a>)</li>
<li><a
href="d03d51b54ahttps://redirect.github.com/chimurai/http-proxy-middleware/issues/1094 ">#1094</a>)</li>
<li><a
href="c50dd06d91https://redirect.github.com/chimurai/http-proxy-middleware/issues/1091 ">#1091</a>)</li>
<li><a
href="76a9d8d6dchttps://redirect.github.com/chimurai/http-proxy-middleware/issues/1090 ">#1090</a>)</li>
<li>See full diff in <a
href="https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Unleash/unleash/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 
						
					 
					
						2025-05-27 17:58:42 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a419b8e098 
							
						 
					 
					
						
						
							
							chore: prefer searchEvents over deprecated methods ( #10031 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3577/prefer-the-new-searchevents-method-over-deprecated-methods 
We should favor our new `searchEvents` method over the other deprecated
methods. This PR removes these deprecated methods, replaces them with
the new `searchEvents` and `searchEventsCount` methods, and marks the
old endpoints as deprecated.
Follow-up to: https://github.com/Unleash/unleash/pull/10030  
					
						2025-05-27 16:19:10 +01:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							3e57c4803c 
							
						 
					 
					
						
						
							
							Chore(1-3755)/split insights in three ( #10035 )  
						
						... 
						
						
						
						Creates sections for the insights dashboard and moves charts around into
the same order as the sketches and into the right sections. There's no
charts for the top section (lifecycle currently) yet, and the sections
also don't have their own filters.
To make this re-ordering easier, I've also moved the previous insights
chart into a legacy file and set up a proxy component that handles
switching based on the flag.

Next step is separating the filters. 
						
					 
					
						2025-05-27 15:06:48 +02:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							5df074bd14 
							
						 
					 
					
						
						
							
							Remove entire row for median time to production ( #10034 )  
						
						... 
						
						
						
						Removes the "median time to production" snapshot + graph when the
lifecycleMetrics flag is active.
In other words: this entire box is gone 💨  
<img width="1326" alt="image"
src="https://github.com/user-attachments/assets/929a9097-82a6-493d-b0dd-614000ffcfe7 "
/> 
						
					 
					
						2025-05-27 14:00:08 +02:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							092c525531 
							
						 
					 
					
						
						
							
							chore: add lifecycleMetrics flag definition ( #10033 )  
						
						... 
						
						
						
						Adds the new lifecycleMetrics flag. 
						
					 
					
						2025-05-27 11:53:22 +00:00 
						 
				 
			
				
					
						
							
							
								David Leek 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							9fca29f254 
							
						 
					 
					
						
						
							
							feat: custom metrics ( #10022 )  
						
						
						
					 
					
						2025-05-22 09:58:54 +02:00 
						 
				 
			
				
					
						
							
							
								Tymoteusz Czech 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							b0954f213c 
							
						 
					 
					
						
						
							
							chore: remove flagsReleaseManagementUI and flagsOverviewSearch flags ( #10011 )  
						
						... 
						
						
						
						Removing the `flagsReleaseManagementUI` and `flagsOverviewSearch`
feature flags - we're keeping these enabled. 
						
					 
					
						2025-05-16 15:13:32 +02:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a08db953b8 
							
						 
					 
					
						
						
							
							fix: now feature component is not loaded before we have feature infor… ( #10012 )  
						
						... 
						
						
						
						We were seeing strange errors when the feature component was rendered
before the feature data was returned from the backend. Now, we ensure
the component is not rendered until the feature is available. 
						
					 
					
						2025-05-16 16:03:26 +03:00 
						 
				 
			
				
					
						
							
							
								Gastón Fournier 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							beb29f5b5b 
							
						 
					 
					
						
						
							
							chore: stop using deprecated properties and lean on resourceLimits cfg ( #9994 )  
						
						... 
						
						
						
						This removes segmentValuesLimit and strategySegmentsLimit from
ui-config-schema, deprecated in 5.11.0 
						
					 
					
						2025-05-16 09:41:04 +00:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							995d69a352 
							
						 
					 
					
						
						
							
							fix: hide project archive in OSS ( #10004 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3569/fix-hide-project-archive-in-oss 
Hides "project archive" in OSS.
I believe this is a bug. OSS only has one project and the project
archive was acting unexpectedly anyways since it was showing the same
default project as being archived. This is because in OSS we use the OSS
project-controller, not the Enterprise version (override) of it. 
					
						2025-05-15 14:45:29 +01:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							ffdf85c8b8 
							
						 
					 
					
						
						
							
							Fix: deleted legal values not being cleared when you select new ones ( #9986 )  
						
						... 
						
						
						
						Updates how we handle deleted legal values for the constraint reducer.
The previous iteration used useState and took the deleted legal values
as a third argument. This isn't possible anymore because a reducer can
take only two args. The simplest way forward for this was to move the
deleted legal values into the state itself, so that it's available in
the reducer. Because deleted legal values can be updated whenever (when
we get a response for that specific context field), we'll update it via
`useEffect`.
I'm not crazy about this approach, so if you have better suggestions,
I'm listening.
I've changed the signature of the reducer, so I've also updated the
tests. In doing so, I thought it now makes more sense to have the base
objects be objects instead of functions, so the changes there are
primarily updating that. 
						
					 
					
						2025-05-15 13:06:08 +00:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							e09b839ac0 
							
						 
					 
					
						
						
							
							chore: disable delete button if a context field has usage ( #10002 )  
						
						... 
						
						
						
						Blocks deletion of context fields from the UI if the context field has
any usage.
<img width="1399" alt="image"
src="https://github.com/user-attachments/assets/e6c26671-761b-4e54-9850-c505ba7b42f3 "
/> 
						
					 
					
						2025-05-15 13:55:56 +02:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							082a03afd7 
							
						 
					 
					
						
						
							
							Fix(1-3485)/handle deleted constraints ( #9999 )  
						
						... 
						
						
						
						Improves handling of constraints in use that have been deleted.
This change implments a few small changes on both the front and the back
end on how we deal with constraints that have been deleted.
The most important change is on the back end, in the
`/constraints/validate` endpoint. We used to throw here if the
constraint couldn't be found, but the only reason we wanted to look for
the constraint in the db was to check for legal values. Now, instead,
we'll allow you to pass a constraint field that doesn't exist in the
database. We'll still check the values against the operator for
validity, we just don't control legal values anymore (because there
aren't any).
On the front end, we improve the handling by showing the deleted context
filed in the dropdown, both when the selector dropdown is closed and
when it is open. However, if you change the context field, we remove the
deleted field from the list. This seems like a sensible tradeoff. Means
you can't select it if you've deselected it. 
						
					 
					
						2025-05-15 13:08:54 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							480689e828 
							
						 
					 
					
						
						
							
							chore: revive archive page ( #10001 )  
						
						... 
						
						
						
						Related to:
-
https://linear.app/unleash/issue/2-3366/remove-get-apiadminarchivefeatures-deprecated-in-4100 
-
https://linear.app/unleash/issue/2-3367/remove-get-apiadminarchivefeaturesprojectid-deprecated-in-4110 
Brings back the overall flag archive page and table using the feature
flag search endpoint. 
						
					 
					
						2025-05-15 11:54:52 +01:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							0255cf137a 
							
						 
					 
					
						
						
							
							fix: now feature is not pulled from server if not defined ( #10000 )  
						
						
						
					 
					
						2025-05-15 11:54:40 +03:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							9aa0c4c738 
							
						 
					 
					
						
						
							
							feat: constraints that are in recents will have generated key ( #9996 )  
						
						... 
						
						
						
						Previously it was trying to get constraint id for key, but id did not
exist. Now for unique keys, I am using the hashed constraint payload. 
						
					 
					
						2025-05-15 10:50:59 +03:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a2723ec0c0 
							
						 
					 
					
						
						
							
							chore remove and clean some stuff ( #9993 )  
						
						... 
						
						
						
						- Deletes an unused file
- Fixes a console.error due to a prop being passed on to the HTML
component
- Puts all editable constraint files within a separate directory. 
						
					 
					
						2025-05-15 07:23:33 +00:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a80b667cf5 
							
						 
					 
					
						
						
							
							chore(1-3747): minor strategy edit header updates ( #9992 )  
						
						... 
						
						
						
						Makes a few small changes to the strategy header:
- Removes the rollout percentage and environment indicator
- Changes the env disabled alert from warning to info
- Maybe moves the alert to the end of the form, only on the general tab
panel
I've placed the removal of the rollout percentage and env header behind
a flag, but not the alert changes.
Before:

After:
<img width="1239" alt="image"
src="https://github.com/user-attachments/assets/db73c9c8-3244-40db-9991-c412c9aadc18 "
/> 
						
					 
					
						2025-05-14 12:48:46 +00:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							ba80c925e7 
							
						 
					 
					
						
						
							
							feat: now pressing enter will submit the new rollout percentage ( #9995 )  
						
						
						
					 
					
						2025-05-14 15:01:55 +03:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a0e4f08507 
							
						 
					 
					
						
						
							
							feat: now updating strategy also saves recents ( #9990 )  
						
						... 
						
						
						
						The issue was that processing constraints after the API call in
updateStrategyOnFeature caused React's state updates to be interrupted
before they could be persisted to localStorage, but by moving that
processing before the API call, we ensure constraints are saved
immediately, regardless of API timing. 
						
					 
					
						2025-05-14 15:01:11 +03:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							26a1156959 
							
						 
					 
					
						
						
							
							1-3744: Set a min-width for context field selector + underline when not focused ( #9991 )  
						
						... 
						
						
						
						When you have very short names (1--2 characters) the field itself can be
hard to see, so we'll set a min width.
Before (with hover): 
<img width="455" alt="image"
src="https://github.com/user-attachments/assets/a9590d3d-88a2-4814-9581-33b8378f4524 "
/>
After (without hover):
<img width="523" alt="image"
src="https://github.com/user-attachments/assets/1e7b6028-e142-442a-9b53-55425d2d6c59 "
/> 
						
					 
					
						2025-05-14 11:56:05 +00:00 
						 
				 
			
				
					
						
							
							
								renovate[bot] 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							d17d68d6aa 
							
						 
					 
					
						
						
							
							chore(deps): update node.js to v22 ( #9487 )  
						
						
						
					 
					
						2025-05-14 10:31:18 +00:00 
						 
				 
			
				
					
						
							
							
								Mateusz Kwasniewski 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							1523e2d056 
							
						 
					 
					
						
						
							
							feat: plausible tracking for links ( #9988 )  
						
						
						
					 
					
						2025-05-14 11:19:37 +02:00 
						 
				 
			
				
					
						
							
							
								Gastón Fournier 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							abe160eb7d 
							
						 
					 
					
						
						
							
							feat: Unleash v7 ESM migration ( #9877 )  
						
						... 
						
						
						
						We're migrating to ESM, which will allow us to import the latest
versions of our dependencies.
Co-Authored-By: Christopher Kolstad <chriswk@getunleash.io> 
						
					 
					
						2025-05-14 09:47:12 +02:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c358a8ffd3 
							
						 
					 
					
						
						
							
							Make hover underline purple ( #9985 )  
						
						... 
						
						
						
						Uses a purple color for the hover underline. Also, sets it to be
transparent when not-hovered, so that you get a nice fade in effect.
Focus (top) and hover (bottom) now have the same visual style, but
different ways to get to that state (expansion vs fade-in):
<img width="979" alt="image"
src="https://github.com/user-attachments/assets/e342ea4e-4821-4e4c-bb5d-6b9d3a672e26 "
/> 
						
					 
					
						2025-05-14 06:57:20 +00:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							aa885b9afd 
							
						 
					 
					
						
						
							
							feat: now recently used constraints are not shown if already in use ( #9984 )  
						
						
						
					 
					
						2025-05-14 09:53:50 +03:00 
						 
				 
			
				
					
						
							
							
								Jaanus Sellin 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							9bd69a852e 
							
						 
					 
					
						
						
							
							feat: now only recents show segments that are not being used currently ( #9983 )  
						
						... 
						
						
						
						Now only recents show segments that are not being used currently 
						
					 
					
						2025-05-14 09:40:33 +03:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							96a388298f 
							
						 
					 
					
						
						
							
							fix(1-3740): Don't autofocus the editable constraint field. ( #9982 )  
						
						... 
						
						
						
						There can be any number of these on a page, so setting autofocus here is
a Bad Idea (TM). It's probably a holdover from when the input was an
accordion and we wanted to give you focus when you opened it (we do a
similar thing for the popover, for instance).
This property will cause you to focus (and potentially scroll) to the
last constraint on the page. 
						
					 
					
						2025-05-14 08:04:47 +02:00 
						 
				 
			
				
					
						
							
							
								Thomas Heartman 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							4ea2499ce7 
							
						 
					 
					
						
						
							
							Chore(1-3688): improve performance for large lists of legal values ( #9978 )  
						
						... 
						
						
						
						This PR implements a number of strategies to make the app perform better
when you have large lists. For instance, we have a constraint field that
has ~600 legal values. Currently in main, it is pretty slow and sloggy
to use (about on par with what we see in hosted).
With this PR, it becomes pretty snappy, as shown in this video (should
hopefully be even better in production mode?):
https://www.loom.com/share/2e882bee25a3454a85bec7752e8252dc?sid=7786b22d-6c60-47e8-bd71-cc5f347c4e0f 
The steps taken are:
1. Change the `useState` hook to instead use `useReducer`. The reason is
that its dispatch function is guaranteed to have a stable identity. This
lets us use it in memoized functions and components.
2. Because useReducer doesn't update the state variable until the next
render, we need to use `useEffect` to update the constraint when it has
actually updated instead of just calling it after the reducer.
3. Add a `toggle value` action and use that instead of checking whether
the value is equal or not inside an onChange function. If we were to
check the state of the value outside the reducer, the memoized function
would be re-evaluated every time value or values change, which would
result in more renders than necessary. By instead doing this kind of
checking inside the reducer, we can cache more aggressively.
4. Because the onChange function can now be memoized, we can memoize all
the legal value selector labels too. This is the real goal here, because
we don't need to re-render 600 components, because one of them was
checked.
One side effect of using useEffect to call `onUpdate` is that it will
also be called immediately when the hook is invoked the first time, but
it will be called with the same value as the constraint that was passed
in, so I don't think that's an issue.
Second: the `useEffect` call uses `localConstraint` directly as a dep
instead of stringifying it. I'm not sure why, but stringifying it makes
it not update correctly for legal values.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> 
						
					 
					
						2025-05-14 08:04:39 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							e7da79d974 
							
						 
					 
					
						
						
							
							refactor: clean up dead code after removing deprecated project role access endpoint ( #9949 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3363/remove-post-apiadminprojectsprojectidroleroleidaccess-deprecated-in 
Cleans up dead code after removing POST
`/api/admin/projects/{projectId}/role/{roleId}/access` which was
deprecated in v5.5.
Should only be merged after the Enterprise PR. 
					
						2025-05-13 13:52:13 +01:00 
						 
				 
			
				
					
						
							
							
								Fredrik Strand Oseberg 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							94c73bbc5d 
							
						 
					 
					
						
						
							
							feat: event log environment filter ( #9979 )  
						
						... 
						
						
						
						Add Environment Filter to Event Log 
						
					 
					
						2025-05-13 13:45:22 +02:00 
						 
				 
			
				
					
						
							
							
								Nuno Góis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							c0c7005859 
							
						 
					 
					
						
						
							
							refactor: remove deprecated post project role access endpoint ( #9948 )  
						
						... 
						
						
						
						https://linear.app/unleash/issue/2-3363/remove-post-apiadminprojectsprojectidroleroleidaccess-deprecated-in 
Removes POST `/api/admin/projects/{projectId}/role/{roleId}/access`
which was deprecated in v5.5.
Also cleans up related code.
Needs follow up PRs. 
					
						2025-05-13 12:28:44 +01:00