From 07409576d74ea826505dcee15415d54f6aca7f16 Mon Sep 17 00:00:00 2001 From: Kit Foster Date: Fri, 19 Dec 2025 08:18:58 +0100 Subject: [PATCH 1/6] Investigate routing issue --- .../docs/app/campaign/[[...slug]]/page.tsx | 12 ++++ .../app/campaign/[[...slug]]/page.tsx | 12 ++++ .../marketing/microfrontends-custom.jsonc | 60 +++++++++++++++---- .../nextjs-app/marketing/tests/routing.e2e.ts | 4 ++ 4 files changed, 75 insertions(+), 13 deletions(-) create mode 100644 examples/nextjs-app/docs/app/campaign/[[...slug]]/page.tsx create mode 100644 examples/nextjs-app/marketing/app/campaign/[[...slug]]/page.tsx diff --git a/examples/nextjs-app/docs/app/campaign/[[...slug]]/page.tsx b/examples/nextjs-app/docs/app/campaign/[[...slug]]/page.tsx new file mode 100644 index 0000000..0b47097 --- /dev/null +++ b/examples/nextjs-app/docs/app/campaign/[[...slug]]/page.tsx @@ -0,0 +1,12 @@ +export default async function CampaignPage({ + params, +}: { + params: Promise<{ slug: string }>; +}) { + const { slug } = await params; + return ( +
+

[campaign] on docs {JSON.stringify(slug)}

+
+ ); +} diff --git a/examples/nextjs-app/marketing/app/campaign/[[...slug]]/page.tsx b/examples/nextjs-app/marketing/app/campaign/[[...slug]]/page.tsx new file mode 100644 index 0000000..83e4337 --- /dev/null +++ b/examples/nextjs-app/marketing/app/campaign/[[...slug]]/page.tsx @@ -0,0 +1,12 @@ +export default async function CampaignPage({ + params, +}: { + params: Promise<{ slug: string }>; +}) { + const { slug } = await params; + return ( +
+

[campaign] on marketing {JSON.stringify(slug)}

+
+ ); +} diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index 7570c0a..daf1e91 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -15,54 +15,88 @@ "routing": [ { "group": "docs", - "paths": ["/docs", "/docs/:path*", "/nextjs-app-docs/:path*"] + "paths": [ + "/docs", + "/docs/:path*", + "/nextjs-app-docs/:path*" + ] }, { "group": "flagged-docs-paths", "flag": "is-flagged-docs-path-enabled", - "paths": ["/flagged/docs"] + "paths": [ + "/flagged/docs" + ] }, { "group": "mid-path-wildcard", - "paths": ["/some-:hash.js"] + "paths": [ + "/some-:hash.js" + ] }, { "group": "excluding regex", - "paths": ["/city/:path((?!berlin|amsterdam).*)"] + "paths": [ + "/city/:path((?!berlin|amsterdam).*)" + ] }, { "group": "special characters", - "paths": ["/foo/hello\\(world\\)"] + "paths": [ + "/foo/hello\\(world\\)" + ] }, { "group": "dashes", - "paths": ["/foo/hello-world", "/foo/hello~world", "/foo/hello_world"] + "paths": [ + "/foo/hello-world", + "/foo/hello~world", + "/foo/hello_world" + ] }, { "group": "regex with numbers", - "paths": ["/foo/:path(hello1|hello2)"] + "paths": [ + "/foo/:path(hello1|hello2)" + ] }, { "group": "regex with dashes", - "paths": ["/foo/:path(hello-1|hello-2)"] + "paths": [ + "/foo/:path(hello-1|hello-2)" + ] }, { "group": "regex with escaped characters", - "paths": ["/foo/:path(hello\\(1\\)|1)"] + "paths": [ + "/foo/:path(hello\\(1\\)|1)" + ] }, { "group": "excluding regex with dashes", - "paths": ["/foo/:path((?!hello\\-3).*)"] + "paths": [ + "/foo/:path((?!hello\\-3).*)" + ] }, { "group": "path with escaped characters", - "paths": ["/bar/hello\\(3\\)"] + "paths": [ + "/bar/hello\\(3\\)" + ] }, { "group": "child rate limit", - "paths": ["/api/check-rate-limit"] + "paths": [ + "/api/check-rate-limit" + ] + }, + { + "group": "campaign", + "paths": [ + "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" + ] } ] } } -} +} \ No newline at end of file diff --git a/examples/nextjs-app/marketing/tests/routing.e2e.ts b/examples/nextjs-app/marketing/tests/routing.e2e.ts index e8101a8..967c681 100644 --- a/examples/nextjs-app/marketing/tests/routing.e2e.ts +++ b/examples/nextjs-app/marketing/tests/routing.e2e.ts @@ -50,6 +50,10 @@ test.describe('routing cases', () => { path: '/bar/hello(3)', expected: '[docs] Bar Page hello(3)', }, + { + path: '/campaign/ces-2026', + expected: '[campaign] on docs ["ces-2026"]', + }, ]) { test(`should have correct title for ${path}`, async ({ page }) => { await page.goto(path); From 8be95229ba037b526879435e67c969296bb674f0 Mon Sep 17 00:00:00 2001 From: Kit Foster Date: Fri, 19 Dec 2025 08:23:27 +0100 Subject: [PATCH 2/6] backslashes --- examples/nextjs-app/marketing/microfrontends-custom.jsonc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index daf1e91..9a34ef9 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -93,7 +93,8 @@ { "group": "campaign", "paths": [ - "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" + // "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" + "/campaign/:path((?!index|6am-parent|ios\/fake-door|snowcast\/beta|storm-radar\/instructions|uber-parent).*)" ] } ] From 409a2a4f87fda19192e85d29f7638bad54416b1a Mon Sep 17 00:00:00 2001 From: Kit Foster Date: Fri, 19 Dec 2025 08:26:11 +0100 Subject: [PATCH 3/6] split multi paths --- examples/nextjs-app/marketing/microfrontends-custom.jsonc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index 9a34ef9..61309bc 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -94,7 +94,10 @@ "group": "campaign", "paths": [ // "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" - "/campaign/:path((?!index|6am-parent|ios\/fake-door|snowcast\/beta|storm-radar\/instructions|uber-parent).*)" + "/campaign/:path((?!index|6am-parent|uber-parent).*)", + "/campaign/ios/:path((?!fake-door).*)", + "/campaign/snowcast/:path((?!beta).*)", + "/campaign/storm-radar/:path((?!instructions).*)" ] } ] From 90b945b17c17465c8e8ce6eb0041e8e6a42b0638 Mon Sep 17 00:00:00 2001 From: Kit Foster Date: Fri, 19 Dec 2025 08:29:17 +0100 Subject: [PATCH 4/6] escape hyphen --- examples/nextjs-app/marketing/microfrontends-custom.jsonc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index 61309bc..96956f9 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -94,8 +94,8 @@ "group": "campaign", "paths": [ // "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" - "/campaign/:path((?!index|6am-parent|uber-parent).*)", - "/campaign/ios/:path((?!fake-door).*)", + "/campaign/:path((?!index|6am\\-parent|uber\\-parent).*)", + "/campaign/ios/:path((?!fake\\-door).*)", "/campaign/snowcast/:path((?!beta).*)", "/campaign/storm-radar/:path((?!instructions).*)" ] From 815ca388eaa301bc7360370655141e40af1c062c Mon Sep 17 00:00:00 2001 From: Kit Foster Date: Fri, 19 Dec 2025 08:32:50 +0100 Subject: [PATCH 5/6] Revert "escape hyphen" This reverts commit 90b945b17c17465c8e8ce6eb0041e8e6a42b0638. --- examples/nextjs-app/marketing/microfrontends-custom.jsonc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index 96956f9..61309bc 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -94,8 +94,8 @@ "group": "campaign", "paths": [ // "/campaign/:path((?!index|6am-parent|ios/fake-door|snowcast/beta|storm-radar/instructions|uber-parent).*)" - "/campaign/:path((?!index|6am\\-parent|uber\\-parent).*)", - "/campaign/ios/:path((?!fake\\-door).*)", + "/campaign/:path((?!index|6am-parent|uber-parent).*)", + "/campaign/ios/:path((?!fake-door).*)", "/campaign/snowcast/:path((?!beta).*)", "/campaign/storm-radar/:path((?!instructions).*)" ] From 9299aaf64d1dec7ae4f50e68bb99cdaee337f908 Mon Sep 17 00:00:00 2001 From: tim123abc Date: Wed, 14 Jan 2026 15:01:19 +0000 Subject: [PATCH 6/6] chore: format microfrontends-custom.jsonc --- .../marketing/microfrontends-custom.jsonc | 54 +++++-------------- 1 file changed, 13 insertions(+), 41 deletions(-) diff --git a/examples/nextjs-app/marketing/microfrontends-custom.jsonc b/examples/nextjs-app/marketing/microfrontends-custom.jsonc index 61309bc..59866a5 100644 --- a/examples/nextjs-app/marketing/microfrontends-custom.jsonc +++ b/examples/nextjs-app/marketing/microfrontends-custom.jsonc @@ -15,80 +15,52 @@ "routing": [ { "group": "docs", - "paths": [ - "/docs", - "/docs/:path*", - "/nextjs-app-docs/:path*" - ] + "paths": ["/docs", "/docs/:path*", "/nextjs-app-docs/:path*"] }, { "group": "flagged-docs-paths", "flag": "is-flagged-docs-path-enabled", - "paths": [ - "/flagged/docs" - ] + "paths": ["/flagged/docs"] }, { "group": "mid-path-wildcard", - "paths": [ - "/some-:hash.js" - ] + "paths": ["/some-:hash.js"] }, { "group": "excluding regex", - "paths": [ - "/city/:path((?!berlin|amsterdam).*)" - ] + "paths": ["/city/:path((?!berlin|amsterdam).*)"] }, { "group": "special characters", - "paths": [ - "/foo/hello\\(world\\)" - ] + "paths": ["/foo/hello\\(world\\)"] }, { "group": "dashes", - "paths": [ - "/foo/hello-world", - "/foo/hello~world", - "/foo/hello_world" - ] + "paths": ["/foo/hello-world", "/foo/hello~world", "/foo/hello_world"] }, { "group": "regex with numbers", - "paths": [ - "/foo/:path(hello1|hello2)" - ] + "paths": ["/foo/:path(hello1|hello2)"] }, { "group": "regex with dashes", - "paths": [ - "/foo/:path(hello-1|hello-2)" - ] + "paths": ["/foo/:path(hello-1|hello-2)"] }, { "group": "regex with escaped characters", - "paths": [ - "/foo/:path(hello\\(1\\)|1)" - ] + "paths": ["/foo/:path(hello\\(1\\)|1)"] }, { "group": "excluding regex with dashes", - "paths": [ - "/foo/:path((?!hello\\-3).*)" - ] + "paths": ["/foo/:path((?!hello\\-3).*)"] }, { "group": "path with escaped characters", - "paths": [ - "/bar/hello\\(3\\)" - ] + "paths": ["/bar/hello\\(3\\)"] }, { "group": "child rate limit", - "paths": [ - "/api/check-rate-limit" - ] + "paths": ["/api/check-rate-limit"] }, { "group": "campaign", @@ -103,4 +75,4 @@ ] } } -} \ No newline at end of file +}