From 2298869a1a0f73830f16ed978130828c8b7d4de4 Mon Sep 17 00:00:00 2001
From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com>
Date: Wed, 29 Oct 2025 08:38:58 +0100
Subject: [PATCH] [Fleet] Show prerelease upgrade versions in Install
integrations UI (#240317)
Closes https://github.com/elastic/kibana/issues/237003
Show prerelease upgrade versions if beta integrations are enabled.
Verification:
- Install a prerelease integration with an old version
```
POST kbn:/api/fleet/epm/packages/entityanalytics_ad/0.13.0
{
"force": true
}
```
- Switch on Show beta integrations on Integrations landing page
- Go to Installed Integrations UI
- Verify that the available upgrade is visible
Check the PR satisfies following conditions.
Reviewers should verify this PR satisfies this list as well.
- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [ ] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
---
.../sections/epm/screens/home/index.tsx | 4 +++-
.../hooks/use_installed_integrations.tsx | 4 +++-
.../epm/screens/installed_integrations/index.tsx | 15 +++++++++++----
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx
index 8eb75156f9c4f..ac97e467bfdd2 100644
--- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx
+++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/home/index.tsx
@@ -113,7 +113,9 @@ export const EPMHomePage: React.FC = () => {
{installedIntegrationsTabularUI ? (
-
+
) : (
)}
diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/hooks/use_installed_integrations.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/hooks/use_installed_integrations.tsx
index 9e288668bbb6a..c7058b6006b34 100644
--- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/hooks/use_installed_integrations.tsx
+++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/hooks/use_installed_integrations.tsx
@@ -53,10 +53,12 @@ export function useInstalledIntegrations(
filters: InstalledIntegrationsFilter,
pagination: Pagination,
upgradingIntegrations?: InstalledPackageUIPackageListItem[],
- uninstallingIntegrations?: InstalledPackageUIPackageListItem[]
+ uninstallingIntegrations?: InstalledPackageUIPackageListItem[],
+ prereleaseIntegrationsEnabled?: boolean
) {
const { data, isInitialLoading, isLoading } = useGetPackagesQuery({
withPackagePoliciesCount: true,
+ prerelease: prereleaseIntegrationsEnabled,
});
const internalInstalledPackages: InstalledPackageUIPackageListItem[] = useMemo(
diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/index.tsx
index c3e2121d6aaa6..7230e2406a5c7 100644
--- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/index.tsx
+++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/installed_integrations/index.tsx
@@ -21,7 +21,9 @@ import { useInstalledIntegrationsActions } from './hooks/use_installed_integrati
import { BulkActionContextProvider } from './hooks/use_bulk_actions_context';
import { PackagePoliciesPanel } from './components/package_policies_panel';
-const InstalledIntegrationsPageContent: React.FunctionComponent = () => {
+const InstalledIntegrationsPageContent: React.FunctionComponent<{
+ prereleaseIntegrationsEnabled: boolean;
+}> = ({ prereleaseIntegrationsEnabled }) => {
// State management
const filters = useUrlFilters();
const { selectedPackageViewPolicies } = useViewPolicies();
@@ -38,7 +40,8 @@ const InstalledIntegrationsPageContent: React.FunctionComponent = () => {
filters,
pagination.pagination,
upgradingIntegrations,
- uninstallingIntegrations
+ uninstallingIntegrations,
+ prereleaseIntegrationsEnabled
);
const [selectedItems, setSelectedItems] = useState([]);
@@ -85,10 +88,14 @@ const InstalledIntegrationsPageContent: React.FunctionComponent = () => {
);
};
-export const InstalledIntegrationsPage: React.FunctionComponent = () => {
+export const InstalledIntegrationsPage: React.FunctionComponent<{
+ prereleaseIntegrationsEnabled: boolean;
+}> = ({ prereleaseIntegrationsEnabled }) => {
return (
-
+
);
};