Your window into the Elastic Stack
Find a file
Jatin Kathuria c9bd32623a
[Security Solution] Optimize Cell Actions extra render (#186282)
## Summary

This PR optimizes Security Solution Cell actions so that there is no
extra re-render of the complete data-grid which can be, in some cases,
very expensive.

Today Security Solutions Cell actions returns cell actions in 3 steps as
show below. This cycle is repeated for every updated in the columns.

```mermaid
flowchart TD
  useDataGridColumnsCellActions 
  --> initialActions[setEmptyCellActions]
  --> loading{isLoading} 
  loadingTrue[SetLoadingActions]
  loadingFalse[SetFinalActions]
  loading --> |yes|loadingTrue
  loading --> |no|loadingFalse
  finalActions[outputCellActions]
  initialActions --> finalActions
  loadingTrue --> finalActions
  loadingFalse --> finalActions

```

Each update to above state updates causes the entire data grid to
re-render. This PR removes the `loading` state to be returned as it is
not very useful for consumers.

> [!CAUTION]
> I have made an assumption that `Loading` state is not needed by the
consumer. Feel free to correct me if that assumption is incorrect.

This change make `useDataGridColumnsCellActions` return `emptyActions`
initially and then the `changed actions` directly as shown below. There
is not intermediate loading state on every render.

```mermaid
flowchart TD
  useDataGridColumnsCellActions 
  --> initialActions[setEmptyCellActions]
  --> loading{isLoading} 
  loadingFalse[SetFinalActions]
  noop[No-op]
  loading --> |yes|noop
  loading --> |no|loadingFalse
  finalActions[outputCellActions]
  initialActions --> finalActions
  loadingFalse --> finalActions
  
```

### Checklist

Delete any items that are not applicable to this PR.

- [x] [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
2024-06-17 16:07:43 +02:00
.buildkite [Fleet] Filter space aware entities in Fleet UI/API (#184869) 2024-06-17 10:03:01 -04:00
.github [Cloud Security] Serverless PLI auth block using UI extension infra (#184665) 2024-06-17 16:46:16 +03:00
api_docs [api-docs] 2024-06-17 Daily api_docs build (#186263) 2024-06-17 05:10:12 +00:00
config Add inference endpoints management page (#184614) 2024-06-13 10:00:33 -07:00
dev_docs Update nav-kibana-dev.docnav.json (#186192) 2024-06-17 09:25:09 +00:00
docs New Integration Assistant plugin (#184296) 2024-06-13 16:48:36 -06:00
examples [Embeddable Rebuild] [Controls] Add control registry + example React control (#182842) 2024-06-05 08:51:37 -06:00
kbn_pm Replace deprecated node-sass with sass #2 (#173942) 2023-12-28 10:35:17 -06:00
legacy_rfcs rename @elastic/* packages to @kbn/* (#138957) 2022-08-18 08:54:42 -07:00
licenses build: remove requirement to clone open-source repo (#180715) 2024-04-15 15:10:46 -05:00
oas_docs [OAS] Capture and commit serverless bundle (#184915) 2024-06-10 03:48:10 -07:00
packages [Security Solution] Optimize Cell Actions extra render (#186282) 2024-06-17 16:07:43 +02:00
plugins
scripts [HTTP/OAS] Commit OAS snapshot (#183338) 2024-05-30 06:02:19 -07:00
src Fix ES query rule for Lucene langauge (#186217) 2024-06-13 19:35:41 -07:00
test Add inference endpoints management page (#184614) 2024-06-13 10:00:33 -07:00
typings Remove legacy kibana react code editor (#171047) 2024-01-05 14:35:09 +01:00
x-pack [APM] Add default time field: @timestamp for the ad hoc data view (#186167) 2024-06-17 07:06:01 -07:00
.backportrc.json chore(NA): adds 8.15 into backportrc (#181082) 2024-04-17 21:28:21 +01:00
.bazelignore Remove references to deleted .ci folder (#177168) 2024-02-20 19:54:21 +01:00
.bazeliskversion chore(NA): upgrade bazelisk into v1.11.0 (#125070) 2022-02-09 20:43:57 +00:00
.bazelrc chore(NA): use new and more performant BuildBuddy servers (#130350) 2022-04-18 02:01:38 +01:00
.bazelrc.common Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
.bazelversion chore(NA): revert bazel upgrade for v5.2.0 (#135096) 2022-06-24 03:57:21 +01:00
.browserslistrc Add Firefox ESR to browserlistrc (#184462) 2024-05-29 17:53:18 -05:00
.editorconfig .editorconfig MDX files should follow the same rules as MD (#96942) 2021-04-13 11:40:42 -04:00
.eslintignore [ES|QL] New @kbn/esql-services package (#179029) 2024-03-27 14:39:48 +01:00
.eslintrc.js New Integration Assistant plugin (#184296) 2024-06-13 16:48:36 -06:00
.gitattributes
.gitignore [Moving] Move APM and APM_Data_Access folders into /x-pack/observability_solution/ (#177433) 2024-02-23 09:56:21 -07:00
.i18nrc.json [Ingest Pipelines] Add unsaved changes prompt (#183699) 2024-06-07 20:35:56 +02:00
.node-version Upgrade Node.js to v20.13.1 (#183345) 2024-05-14 12:11:56 -07:00
.npmrc [npmrc] Fix puppeteer_skip_download configuration (#177673) 2024-02-22 18:59:01 -07:00
.nvmrc Upgrade Node.js to v20.13.1 (#183345) 2024-05-14 12:11:56 -07:00
.prettierignore
.prettierrc
.puppeteerrc Add .puppeteerrc (#179847) 2024-04-03 09:14:39 -05:00
.stylelintignore
.stylelintrc Bump stylelint to ^14 (#136693) 2022-07-20 10:11:00 -05:00
.telemetryrc.json [Telemetry] Fix telemetry-tools TS parser for packages (#149819) 2023-01-31 04:09:09 +03:00
.yarnrc
BUILD.bazel Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
catalog-info.yaml [BK] Add template for pipeline defs (#180189) 2024-04-08 11:21:28 +02:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md Update doc slugs to improve analytic tracking, move to appropriate folders (#113630) 2021-10-04 13:36:45 -04:00
FAQ.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
fleet_packages.json [main] Sync bundled packages with Package Storage (#186023) 2024-06-12 09:23:38 -07:00
github_checks_reporter.json
kibana.d.ts fix all violations 2022-04-16 01:37:30 -05:00
LICENSE.txt
nav-kibana-dev.docnav.json Update nav-kibana-dev.docnav.json (#186192) 2024-06-17 09:25:09 +00:00
NOTICE.txt Copy assets from appropriate directory for kbn-monaco (#178669) 2024-03-21 16:29:20 +01:00
package.json Update dependency elastic-apm-node to ^4.7.0 (main) (#186203) 2024-06-13 17:35:41 -07:00
preinstall_check.js Always throw error objects - never strings (#171498) 2023-11-20 09:23:16 -05:00
README.md [README] Update version Compatibility with Elasticsearch (#116040) 2022-01-10 10:31:21 -05:00
renovate.json Upgrade LaunchDarkly clients (#185884) 2024-06-11 01:38:48 +02:00
RISK_MATRIX.mdx Add "Risk Matrix" section to the PR template (#100649) 2021-06-02 14:43:47 +02:00
run_fleet_setup_parallel.sh [Fleet] Prevent concurrent runs of Fleet setup (#183636) 2024-05-31 16:38:51 +02:00
SECURITY.md
sonar-project.properties [ci] Run sonarqube daily (#173961) 2024-01-03 15:43:29 -06:00
STYLEGUIDE.mdx [styleguide] update path to scss theme (#140742) 2022-09-15 10:41:14 -04:00
tsconfig.base.json New Integration Assistant plugin (#184296) 2024-06-13 16:48:36 -06:00
tsconfig.browser.json
tsconfig.browser_bazel.json [build_ts_refs] improve caches, allow building a subset of projects (#107981) 2021-08-10 22:12:45 -07:00
tsconfig.json Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
TYPESCRIPT.md Fix small typos in the root md files (#134609) 2022-06-23 09:36:11 -05:00
versions.json chore(NA): update versions after v7.17.23 bump (#186232) 2024-06-14 03:12:23 +01:00
WORKSPACE.bazel Upgrade Node.js to v20.13.1 (#183345) 2024-05-14 12:11:56 -07:00
yarn.lock Update dependency elastic-apm-node to ^4.7.0 (main) (#186203) 2024-06-13 17:35:41 -07:00

Kibana

Kibana is your window into the Elastic Stack. Specifically, it's a browser-based analytics and search dashboard for Elasticsearch.

Getting Started

If you just want to try Kibana out, check out the Elastic Stack Getting Started Page to give it a whirl.

If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the Kibana Getting Started Page.

Using a Kibana Release

If you want to use a Kibana release in production, give it a test run, or just play around:

Building and Running Kibana, and/or Contributing Code

You might want to build Kibana locally to contribute some code, test out the latest features, or try out an open PR:

Documentation

Visit Elastic.co for the full Kibana documentation.

For information about building the documentation, see the README in elastic/docs.

Version Compatibility with Elasticsearch

Ideally, you should be running Elasticsearch and Kibana with matching version numbers. If your Elasticsearch has an older version number or a newer major number than Kibana, then Kibana will fail to run. If Elasticsearch has a newer minor or patch number than Kibana, then the Kibana Server will log a warning.

Note: The version numbers below are only examples, meant to illustrate the relationships between different types of version numbers.

Situation Example Kibana version Example ES version Outcome
Versions are the same. 7.15.1 7.15.1 💚 OK
ES patch number is newer. 7.15.0 7.15.1 ⚠️ Logged warning
ES minor number is newer. 7.14.2 7.15.0 ⚠️ Logged warning
ES major number is newer. 7.15.1 8.0.0 🚫 Fatal error
ES patch number is older. 7.15.1 7.15.0 ⚠️ Logged warning
ES minor number is older. 7.15.1 7.14.2 🚫 Fatal error
ES major number is older. 8.0.0 7.15.1 🚫 Fatal error

Questions? Problems? Suggestions?

  • If you've found a bug or want to request a feature, please create a GitHub Issue. Please check to make sure someone else hasn't already created an issue for the same topic.
  • Need help using Kibana? Ask away on our Kibana Discuss Forum and a fellow community member or Elastic engineer will be glad to help you out.