# What is the Necessary Tech Stack for Developing Kibana Plugins?

**URL:** <https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928>\
**Category:** Kibana\
**Created:** [March 12, 2019, 10:57am UTC](https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928 "2019-03-12T10:57:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![reillye](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@reillye](https://discuss.elastic.co/u/reillye)\
**Post date:** [March 12, 2019, 10:57am UTC](https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928/1 "2019-03-12T10:57:16Z")

</div>

I've been tasked with developing a basic plugin for Kibana as of POC. I don't have much front-end development experience, so I've been reading through the documentation (which is great btw), but I'm still a little unclear of the exact tech stack I need to know to be able to develop a custom plugin/visualization.

The [plugin resources guide](https://www.elastic.co/guide/en/kibana/current/development-plugin-resources.html) says you need `node` for generating plugin templates. It also references the [EUI Framework](https://elastic.github.io/eui/#/) for developing visualisations, which appear to written in `ReactJS`. The [contributing guide](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#setting-up-your-development-environment) also notes needing to use `yarn` as a package manager (why not npm if using node?

All the examples I've found use JavaScript as the primary programming language, however I've noticed in the [StyleGuide.md](https://github.com/elastic/kibana/blob/master/STYLEGUIDE.md) page, that it says everything should now be written in `TypeScript`. Is this correct? If so how does that impact developing using a framework such as React?

I've found [Tim Roes blog](https://www.timroes.de/writing-kibana-plugins-custom-applications) on writing kibana plugins, however it is for Kibana 5 and is over 3 years old. Is this still a good reference to use?

I've also found an example of a [template plugin](https://github.com/elastic/template-kibana-plugin/tree/master/template), are these still good resources to use, or is it needed at all since you now have the plugin generator?

From reading all these, it appears the tech stack I need to research and learn in order to develop a simple kibana plugin is:

- Node
- JavaScript (and/or TypeScript?)
- React

Is this correct? Or are the other technologies I'm missing? I'm particularly interested about the JavaScript vs TypeScript part, as every example I can find uses JavaScript, and the only reference to using TypeScript is hidden away in a style guide.

EDIT: I should also note I'll be developing this in Kibana 6.5.4 (if that makes a difference)

---

<div class="post-metadata">

**Author:** ![jen-huang](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jen-huang/32/74327_2.png) [@jen-huang](https://discuss.elastic.co/u/jen-huang)\
**Post date:** [March 12, 2019, 5:19pm UTC](https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928/2 "2019-03-12T17:19:41Z")

</div>

Hi, you are correct. A few things to note:

- `yarn` is just a wrapper around `npm` for more optimized package management
- Kibana will eventually all be in TypeScript, currently it is a mix of TypeScript and JavaScript
- TypeScript compiles down to JavaScript. As a plugin author right now, it may be easier to stick with JS until more of Kibana is in TS because the Kibana dependencies of your plugin will likely be missing typings.
- It doesn't matter if you use JS or TS from a React standpoint. You can find resources of React apps built in JS and TS.
- Tim Roes' blog is still largely applicable 🙂

---

<div class="post-metadata">

**Author:** ![reillye](https://avatars.discourse-cdn.com/v4/letter/r/c6cbf5/32.png) [@reillye](https://discuss.elastic.co/u/reillye)\
**Post date:** [March 13, 2019, 11:02am UTC](https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928/3 "2019-03-13T11:02:05Z")

</div>

Thank you for the clarification, it's a great help 😄

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 10, 2019, 11:02am UTC](https://discuss.elastic.co/t/what-is-the-necessary-tech-stack-for-developing-kibana-plugins/171928/4 "2019-04-10T11:02:13Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
