# Is usage of React necessary for writing JupyterLab extensions \*effectively\*?

**URL:** <https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825>\
**Category:** JupyterLab\
**Created:** [February 5, 2021, 8:09pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825 "2021-02-05T20:09:46Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![adpatter](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/adpatter/32/21229_2.png) [@adpatter](https://discourse.jupyter.org/u/adpatter)\
**Post date:** [February 5, 2021, 8:09pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/1 "2021-02-05T20:09:47Z")

</div>

I’m working through the examples: [GitHub - jupyterlab/extension-examples: JupyterLab Extensions by Examples](https://github.com/jupyterlab/extension-examples)

Suddenly React Widgets came up. I don’t know React. Is it necessary to learn React in order to write client JupyterLab extensions _effectively_?

If React isn’t necessary for writing these extensions, I would like to just suggest that it might be a good idea to isolate the React part of the documentation, so we can learn the topics easily without having to get up to speed on React.

---

<div class="post-metadata">

**Author:** ![jasongrout](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/jasongrout/32/371_2.png) [@jasongrout](https://discourse.jupyter.org/u/jasongrout)\
**Post date:** [February 5, 2021, 8:31pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/2 "2021-02-05T20:31:35Z")

</div>

It is not necessary to use React in writing JupyterLab extensions. However, you _can_ use React in JLab extensions, and the React example is for people wondering how to do that. If you don’t want to use React, don’t bother with that example.

_Edit: Like it says in the instructions: " Start with the [Hello World](https://github.com/jupyterlab/extension-examples/blob/0254ccbf26c1da0dfe4bb2840d3717504108bf64/basics/hello-world) and then jump to the topic you are interested in." - if you’re not interested in using React, skip that example._

---

<div class="post-metadata">

**Author:** ![adpatter](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/adpatter/32/21229_2.png) [@adpatter](https://discourse.jupyter.org/u/adpatter)\
**Post date:** [February 5, 2021, 8:48pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/3 "2021-02-05T20:48:15Z")

</div>

Several of the critical learning topics have React built into them. E.g., [extension-examples/basics/signals/src at master · jupyterlab/extension-examples · GitHub](https://github.com/jupyterlab/extension-examples/tree/master/basics/signals/src)

I think the tutorials will be able to reach a wider audience if React were discussed separately.

---

<div class="post-metadata">

**Author:** ![jasongrout](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/jasongrout/32/371_2.png) [@jasongrout](https://discourse.jupyter.org/u/jasongrout)\
**Post date:** [February 5, 2021, 9:09pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/4 "2021-02-05T21:09:13Z")

</div>

> [@adpatter](#):
>
> Several of the critical learning topics have React built into them. E.g., [extension-examples/basics/signals/src at master · jupyterlab/extension-examples · GitHub](https://github.com/jupyterlab/extension-examples/tree/master/basics/signals/src)

Agreed - it would be nice if that example just used plain HTML buttons, and the react capabilities were confined to the react example. Can you open an issue in the example repo? Even better would be a PR.

---

<div class="post-metadata">

**Author:** ![adpatter](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/adpatter/32/21229_2.png) [@adpatter](https://discourse.jupyter.org/u/adpatter)\
**Post date:** [February 5, 2021, 9:11pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/5 "2021-02-05T21:11:18Z")

</div>

Thank you. I will open the issue now and I look forward to doing the PR.

---

<div class="post-metadata">

**Author:** ![adpatter](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/adpatter/32/21229_2.png) [@adpatter](https://discourse.jupyter.org/u/adpatter)\
**Post date:** [February 12, 2021, 6:40pm UTC](https://discourse.jupyter.org/t/is-usage-of-react-necessary-for-writing-jupyterlab-extensions-effectively/7825/6 "2021-02-12T18:40:10Z")

</div>

The PR is done: [Modify Signals to render a HTML button without React. by adpatter · Pull Request #148 · jupyterlab/extension-examples · GitHub](https://github.com/jupyterlab/extension-examples/pull/148)
