From 9895d49b26be1aff755f11cd8f08075f3e411860 Mon Sep 17 00:00:00 2001
From: Christopher Poile
Date: Fri, 11 Sep 2026 15:34:39 -0400
Subject: [PATCH 1/2] update to MM v12
---
README.md | 4 ++++
plugin.json | 2 +-
webapp/package.json | 2 +-
.../src/components/link_tooltip/link_tooltip.jsx | 15 ++++++++++++++-
webapp/webpack.config.js | 3 +++
5 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index b3f400faf..869d2b26a 100644
--- a/README.md
+++ b/README.md
@@ -65,3 +65,7 @@ To trigger a release, follow these steps:
### Playwright e2e tests
In order to get your environment set up to run [Playwright](https://playwright.dev) tests, please see the setup guide at [e2e/playwright](/e2e/playwright#readme).
+
+### React 19 compatibility
+
+This plugin requires Mattermost 12.0 or later with the MM-70687 host JSX runtime exports. Webpack externalizes React, ReactDOM (including `react-dom/client`), and both JSX runtimes to the host globals. These mappings also cover runtime imports from dependencies. Rebuild the plugin after changing its configuration.
diff --git a/plugin.json b/plugin.json
index 8fe766faf..d4161b7fe 100644
--- a/plugin.json
+++ b/plugin.json
@@ -5,7 +5,7 @@
"homepage_url": "https://github.com/mattermost/mattermost-plugin-github",
"support_url": "https://github.com/mattermost/mattermost-plugin-github/issues",
"icon_path": "assets/icon.svg",
- "min_server_version": "10.7.0",
+ "min_server_version": "12.0.0",
"server": {
"executables": {
"linux-amd64": "server/dist/plugin-linux-amd64",
diff --git a/webapp/package.json b/webapp/package.json
index 90fe96e7d..61da3e03c 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -3,7 +3,7 @@
"scripts": {
"build": "webpack --mode=production",
"build:watch": "webpack --mode=production --watch",
- "debug": "webpack --mode=none",
+ "debug": "webpack --mode=development",
"debug:watch": "webpack --mode=development --watch",
"lint": "eslint --ignore-pattern node_modules --ignore-pattern dist --ext .js --ext .jsx --ext tsx --ext ts . --quiet --cache",
"fix": "eslint --ignore-pattern node_modules --ignore-pattern dist --ext .js --ext .jsx --ext tsx --ext ts . --quiet --fix --cache",
diff --git a/webapp/src/components/link_tooltip/link_tooltip.jsx b/webapp/src/components/link_tooltip/link_tooltip.jsx
index 5134e10c1..687586e92 100644
--- a/webapp/src/components/link_tooltip/link_tooltip.jsx
+++ b/webapp/src/components/link_tooltip/link_tooltip.jsx
@@ -175,7 +175,20 @@ export const LinkTooltip = ({href, connected, show, theme, enterpriseURL}) => {
)}
{/* base <- head */}
diff --git a/webapp/webpack.config.js b/webapp/webpack.config.js
index dd579953c..5ff4be47f 100644
--- a/webapp/webpack.config.js
+++ b/webapp/webpack.config.js
@@ -89,6 +89,9 @@ module.exports = {
externals: {
react: 'React',
'react-dom': 'ReactDOM',
+ 'react-dom/client': 'ReactDOM',
+ 'react/jsx-runtime': 'ReactJSXRuntime',
+ 'react/jsx-dev-runtime': 'ReactJSXDevRuntime',
redux: 'Redux',
'react-redux': 'ReactRedux',
'prop-types': 'PropTypes',
From 6ece8cd34a52bfe03fb234abffe027237dec0bad Mon Sep 17 00:00:00 2001
From: Christopher Poile
Date: Fri, 11 Sep 2026 17:06:15 -0400
Subject: [PATCH 2/2] MM-70623 Fix GitHub team sidebar layout with
OverlayTrigger wrappers
---
webapp/src/components/sidebar_buttons/sidebar_buttons.jsx | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/webapp/src/components/sidebar_buttons/sidebar_buttons.jsx b/webapp/src/components/sidebar_buttons/sidebar_buttons.jsx
index 957199f02..4a686deed 100644
--- a/webapp/src/components/sidebar_buttons/sidebar_buttons.jsx
+++ b/webapp/src/components/sidebar_buttons/sidebar_buttons.jsx
@@ -268,7 +268,12 @@ const getStyle = makeStyleFromTheme((theme) => {
justifyContent: 'space-around',
padding: '0 10px',
},
+
+ // OverlayTrigger may wrap each button, so stack the controls at the
+ // container level instead of relying on the anchors' display style.
containerTeam: {
+ display: 'flex',
+ flexDirection: 'column',
},
};
});