From b8cd2f50cc67e8cc91004f67493ba0c01f01e8c7 Mon Sep 17 00:00:00 2001
From: Steven Le <387282+stevenle@users.noreply.github.com>
Date: Wed, 25 Feb 2026 20:06:48 -0800
Subject: [PATCH 1/2] fix(root-cms): show sign-in secret warning only on dev
server
---
packages/root-cms/core/app.tsx | 6 ++++++
packages/root-cms/signin/signin.tsx | 3 +++
packages/root-cms/signin/styles/signin.css | 11 +++++++++++
3 files changed, 20 insertions(+)
diff --git a/packages/root-cms/core/app.tsx b/packages/root-cms/core/app.tsx
index 2f7be3895..055f6a4e4 100644
--- a/packages/root-cms/core/app.tsx
+++ b/packages/root-cms/core/app.tsx
@@ -226,9 +226,15 @@ export async function renderSignIn(
res: Response,
options: RenderOptions
) {
+ const warning =
+ process.env.NODE_ENV === 'development' &&
+ !options.rootConfig.server?.sessionCookieSecret
+ ? 'Dev warning: `server.sessionCookieSecret` is missing in `root.config.ts`. Configure this secret in production to secure CMS sessions.'
+ : '';
const ctx = {
name: options.cmsConfig.name || options.cmsConfig.id || '',
firebaseConfig: options.cmsConfig.firebaseConfig,
+ warning,
};
const mainHtml = renderToString(
diff --git a/packages/root-cms/signin/signin.tsx b/packages/root-cms/signin/signin.tsx
index b97910fb3..f25c870dc 100644
--- a/packages/root-cms/signin/signin.tsx
+++ b/packages/root-cms/signin/signin.tsx
@@ -11,6 +11,7 @@ declare global {
__ROOT_CTX: {
name: string;
firebaseConfig: Record;
+ warning: string;
};
firebase: {
app: FirebaseApp;
@@ -22,6 +23,7 @@ declare global {
function SignIn() {
const [errorMsg, setErrorMsg] = useState('');
const title = window.__ROOT_CTX.name;
+ const warning = window.__ROOT_CTX.warning;
function onError(msg: string) {
setErrorMsg(msg);
@@ -35,6 +37,7 @@ function SignIn() {
{title ? `Sign in to continue to ${title}` : 'Sign in to continue'}
+ {warning && {warning}
}
{errorMsg && {errorMsg}
}
diff --git a/packages/root-cms/signin/styles/signin.css b/packages/root-cms/signin/styles/signin.css
index b197c6d1e..1a4f302fb 100644
--- a/packages/root-cms/signin/styles/signin.css
+++ b/packages/root-cms/signin/styles/signin.css
@@ -43,6 +43,17 @@
transition: all 0.218s ease;
}
+.signin__warning {
+ margin: 0 0 16px;
+ padding: 12px;
+ border: 1px solid #fbbc04;
+ border-radius: 8px;
+ background: #fff9db;
+ color: #5f370e;
+ font-size: 14px;
+ line-height: 1.5;
+}
+
.signin__button:hover {
border-color: #d2e3fc;
background-color: rgba(66, 133, 244, 0.04);
From 74a5896b727cb77dba05077fd982eed19f357f13 Mon Sep 17 00:00:00 2001
From: Steven Le
Date: Wed, 25 Feb 2026 20:17:49 -0800
Subject: [PATCH 2/2] chore: update styles, show generic warning on prod
---
packages/root-cms/core/app.tsx | 25 ++++++++++++++++------
packages/root-cms/signin/styles/signin.css | 3 ++-
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/packages/root-cms/core/app.tsx b/packages/root-cms/core/app.tsx
index 055f6a4e4..be0230687 100644
--- a/packages/root-cms/core/app.tsx
+++ b/packages/root-cms/core/app.tsx
@@ -226,16 +226,27 @@ export async function renderSignIn(
res: Response,
options: RenderOptions
) {
- const warning =
- process.env.NODE_ENV === 'development' &&
- !options.rootConfig.server?.sessionCookieSecret
- ? 'Dev warning: `server.sessionCookieSecret` is missing in `root.config.ts`. Configure this secret in production to secure CMS sessions.'
- : '';
- const ctx = {
+ const ctx: any = {
name: options.cmsConfig.name || options.cmsConfig.id || '',
firebaseConfig: options.cmsConfig.firebaseConfig,
- warning,
};
+
+ // If the session cookie secret is missing, users will be forced to re-login
+ // whenever a new server spins up or restarts. On dev, show the warning
+ // directly on the sign in page. On prod, suggest the user to check server
+ // logs.
+ if (!options.rootConfig.server?.sessionCookieSecret) {
+ const warning =
+ 'Dev warning: `server.sessionCookieSecret` is missing in `root.config.ts`. Configure this secret in production to secure CMS sessions.';
+ console.warn(warning);
+ if (process.env.NODE_ENV === 'development') {
+ ctx.warning = warning;
+ } else {
+ ctx.warning =
+ 'Dev warning: Server may be misconfigured. See logs for more information.';
+ }
+ }
+
const mainHtml = renderToString(
);
diff --git a/packages/root-cms/signin/styles/signin.css b/packages/root-cms/signin/styles/signin.css
index 1a4f302fb..e175a85b5 100644
--- a/packages/root-cms/signin/styles/signin.css
+++ b/packages/root-cms/signin/styles/signin.css
@@ -44,7 +44,8 @@
}
.signin__warning {
- margin: 0 0 16px;
+ max-width: 520px;
+ margin: 0 auto 40px;
padding: 12px;
border: 1px solid #fbbc04;
border-radius: 8px;