Skip to content

Commit 4d5676f

Browse files
Alan-TheGentlemanAlan Buscagliaalejandrobailocesararroba
authored
feat: upgrade to React 19, Next.js 15, React Compiler, HeroUI and Tailwind 4 (#8748)
Co-authored-by: Alan Buscaglia <alanbuscaglia@MacBook-Pro.local> Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com> Co-authored-by: César Arroba <cesar@prowler.com> Co-authored-by: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com>
1 parent 2a4b625 commit 4d5676f

261 files changed

Lines changed: 7043 additions & 6830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ SENTRY_ENVIRONMENT=local
9999
SENTRY_RELEASE=local
100100

101101
#### Prowler release version ####
102-
NEXT_PUBLIC_PROWLER_RELEASE_VERSION=v5.10.0
102+
NEXT_PUBLIC_PROWLER_RELEASE_VERSION=v5.12.2
103103

104104
# Social login credentials
105105
SOCIAL_GOOGLE_OAUTH_CALLBACK_URL="${AUTH_URL}/api/auth/callback/google"

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,7 @@ pypi-upload: ## Upload package
4545
help: ## Show this help.
4646
@echo "Prowler Makefile"
4747
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
48+
49+
##@ Development Environment
50+
run-api-dev: ## Start development environment with API, PostgreSQL, Valkey, and workers
51+
docker compose -f docker-compose-dev.yml up api-dev postgres valkey worker-dev worker-beat --build

ui/.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ node_modules
1212
coverage
1313
.next
1414
build
15+
next-env.d.ts
1516
!.commitlintrc.cjs
1617
!.lintstagedrc.cjs
1718
!jest.config.js

ui/CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,18 @@ All notable changes to the **Prowler UI** are documented in this file.
99
- Support for Markdown and AdditionalURLs in findings detail page [(#8704)](https://github.com/prowler-cloud/prowler/pull/8704)
1010
- `Prowler Hub` menu item with tooltip [(#8692)] (https://github.com/prowler-cloud/prowler/pull/8692)
1111
- Copy link button to finding detail page [(#8685)] (https://github.com/prowler-cloud/prowler/pull/8685)
12+
- React Compiler support for automatic optimization [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
13+
- Turbopack support for faster development builds [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
1214
- Add compliance name in compliance detail view [(#8775)](https://github.com/prowler-cloud/prowler/pull/8775)
1315

1416
### 🔄 Changed
1517

16-
### 🐞 Fixed
18+
- Upgraded React to version 19.1.1 with async components support [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
19+
- Upgraded Next.js to version 15.5.3 with enhanced App Router [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
20+
- Updated from NextUI to HeroUI [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
21+
- Updated LangChain to latest versions with API improvements [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
22+
- Migrated all page components to async `params`/`searchParams` API [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
23+
- Migrated from `useFormState` to `useActionState` for React 19 compatibility [(#8748)](https://github.com/prowler-cloud/prowler/pull/8748)
1724

1825
---
1926

ui/actions/compliances/compliances.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use server";
22

3-
import { apiBaseUrl, getAuthHeaders, handleApiResponse } from "@/lib";
3+
import { apiBaseUrl, getAuthHeaders } from "@/lib";
4+
import { handleApiResponse } from "@/lib/server-actions-helper";
45

56
export const getCompliancesOverview = async ({
67
scanId,
@@ -28,7 +29,7 @@ export const getCompliancesOverview = async ({
2829
headers,
2930
});
3031

31-
return handleApiResponse(response, "/compliance");
32+
return handleApiResponse(response);
3233
} catch (error) {
3334
console.error("Error fetching providers:", error);
3435
return undefined;

ui/actions/findings/findings.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import { redirect } from "next/navigation";
44

5-
import { apiBaseUrl, getAuthHeaders, handleApiResponse } from "@/lib";
5+
import { apiBaseUrl, getAuthHeaders } from "@/lib";
6+
import { handleApiResponse } from "@/lib/server-actions-helper";
67

78
export const getFindings = async ({
89
page = 1,
@@ -32,7 +33,7 @@ export const getFindings = async ({
3233
const findings = await fetch(url.toString(), {
3334
headers,
3435
});
35-
return handleApiResponse(findings, "/findings");
36+
return handleApiResponse(findings);
3637
} catch (error) {
3738
console.error("Error fetching findings:", error);
3839
return undefined;
@@ -69,7 +70,7 @@ export const getLatestFindings = async ({
6970
const findings = await fetch(url.toString(), {
7071
headers,
7172
});
72-
return handleApiResponse(findings, "/findings");
73+
return handleApiResponse(findings);
7374
} catch (error) {
7475
console.error("Error fetching findings:", error);
7576
return undefined;

ui/actions/integrations/integrations.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,8 @@
33
import { revalidatePath } from "next/cache";
44

55
import { pollTaskUntilSettled } from "@/actions/task/poll";
6-
import {
7-
apiBaseUrl,
8-
getAuthHeaders,
9-
handleApiError,
10-
handleApiResponse,
11-
parseStringify,
12-
} from "@/lib";
6+
import { apiBaseUrl, getAuthHeaders, parseStringify } from "@/lib";
7+
import { handleApiError, handleApiResponse } from "@/lib/server-actions-helper";
138
import { IntegrationType } from "@/types/integrations";
149
import type { TaskState } from "@/types/tasks";
1510

ui/actions/integrations/jira-dispatch.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
"use server";
22

33
import { pollTaskUntilSettled } from "@/actions/task/poll";
4-
import { apiBaseUrl, getAuthHeaders, handleApiError } from "@/lib";
4+
import { apiBaseUrl, getAuthHeaders } from "@/lib";
5+
import { handleApiError } from "@/lib/server-actions-helper";
56
import type {
67
IntegrationProps,
78
JiraDispatchRequest,

ui/actions/integrations/saml.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import { revalidatePath } from "next/cache";
44

5-
import { apiBaseUrl, getAuthHeaders, handleApiResponse } from "@/lib/helper";
5+
import { apiBaseUrl, getAuthHeaders } from "@/lib/helper";
6+
import { handleApiResponse } from "@/lib/server-actions-helper";
67
import { samlConfigFormSchema } from "@/types/formSchemas";
78

89
export const createSamlConfig = async (_prevState: any, formData: FormData) => {

ui/actions/invitations/invitation.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@
33
import { revalidatePath } from "next/cache";
44
import { redirect } from "next/navigation";
55

6-
import {
7-
apiBaseUrl,
8-
getAuthHeaders,
9-
handleApiError,
10-
handleApiResponse,
11-
} from "@/lib";
6+
import { apiBaseUrl, getAuthHeaders } from "@/lib";
7+
import { handleApiError, handleApiResponse } from "@/lib/server-actions-helper";
128

139
export const getInvitations = async ({
1410
page = 1,
@@ -40,7 +36,7 @@ export const getInvitations = async ({
4036
headers,
4137
});
4238

43-
return handleApiResponse(response, "/invitations");
39+
return handleApiResponse(response);
4440
} catch (error) {
4541
console.error("Error fetching invitations:", error);
4642
return undefined;

0 commit comments

Comments
 (0)