Skip to content

chore(examples,e2e): replace nextjs app with vite showcase - #513

Merged
IzumiSy merged 17 commits into
mainfrom
chore/remove-nextjs-example
Sep 14, 2026
Merged

IzumiSy merged 17 commits into
mainfrom
chore/remove-nextjs-example

Conversation

@IzumiSy

@IzumiSy IzumiSy commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Motivation

examples/nextjs-app had grown into two different things at once:

  • a framework-compatibility example for Next.js App Router
  • a broad UI showcase for AppShell components and patterns

That made the Next example much heavier than necessary for the actual compatibility contract we want to keep. The goal of this change is to keep Next.js support covered at the smallest useful level, while consolidating showcase-oriented content into the Vite example that already serves as the main interactive demo app.

Design Decision

Split showcase coverage from framework coverage

The Vite example is now the single showcase app. Routes migrated from the old Next.js example now live under /showcase/*, and a small landing page links both to those migrated pages and to existing Vite pages that already cover the same components.

This keeps the broad demo surface in one place instead of maintaining it twice through two different routing models.

Keep Next.js coverage as a minimal smoke fixture

Instead of a full examples/nextjs-app, this PR adds e2e/tests/nextjs-smoke/app, a minimal Next.js App Router fixture that still uses defineModule() and defineResource().

The smoke suite covers the integration points that matter for Next.js support:

  • direct URL access
  • dynamic sub-resource deep links
  • client-side navigation inside the mounted AppShell
  • a redirect guard path

That keeps the Next-specific contract covered without carrying a full showcase app.

Pin drifting dependencies that affect repo baselines

This PR also pins two dependencies that were previously allowed to float within a range:

  • oxlint is pinned so the lint baseline does not widen unexpectedly. A newer release introduced additional rules and caused lint failures; adopting those rule changes is being handled separately in refactor(core): align state ownership with React Compiler #525.
  • lucide-react is pinned so third-party icon SVG updates do not create unrelated snapshot diffs in packages/core.

Summary

  • remove examples/nextjs-app
  • move showcase-style demo pages into examples/vite-app, grouped under /showcase/*
  • add a minimal nextjs-smoke E2E fixture and Playwright project for Next.js App Router compatibility
  • pin oxlint and lucide-react to keep the current lint and snapshot baselines stable
  • update repo docs and license exception wiring to point at the new structure

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Code Metrics Report

main (1e3f9e5) #513 (081fdac) +/-
Coverage 87.2% 87.2% 0.0%
Test Execution Time 2m13s 2m4s -9s
Details
  |                     | main (1e3f9e5) | #513 (081fdac) | +/-  |
  |---------------------|----------------|----------------|------|
  | Coverage            |          87.2% |          87.2% | 0.0% |
  |   Files             |            198 |            198 |    0 |
  |   Lines             |           5840 |           5840 |    0 |
  |   Covered           |           5093 |           5093 |    0 |
+ | Test Execution Time |          2m13s |           2m4s |  -9s |

Code coverage of files in pull request scope (100.0% → 100.0%)

Files Coverage +/- Status
packages/core/package.json 100.0% 0.0% modified

Reported by octocov

@IzumiSy
IzumiSy marked this pull request as ready for review September 8, 2026 08:14
@IzumiSy
IzumiSy requested a review from a team as a code owner September 8, 2026 08:14
@IzumiSy

IzumiSy commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved in 712fe40.

@IzumiSy

IzumiSy commented Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot fix CI errors

Copilot AI commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

@copilot fix CI errors

Fixed in 9e6e5cd.

@IzumiSy

IzumiSy commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved in a859bc1.

@IzumiSy

IzumiSy commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

@copilot why CI has failed due to the diff in snapshots?

Copilot AI commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

@copilot why CI has failed due to the diff in snapshots?

CI (packages) failed on a stale snapshot in packages/core/src/components/date-field/date-field.test.tsx, not on the new AI Chat snapshots. The failing case is DatePicker — closed: the saved snapshot still expects the old calendar SVG markup (v4 / y="4"), but the current render outputs the newer icon markup (v3 / y="3"), so Vitest reports a snapshot mismatch.

@IzumiSy

IzumiSy commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

@IzumiSy

IzumiSy commented Sep 11, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved in 32a2ce5.

Comment thread pnpm-workspace.yaml
"@types/react-dom": ^19
"@vitejs/plugin-react": ^6.1.0
lucide-react: ^1.8.0
lucide-react: 1.8.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oxlint is pinned so the lint baseline does not widen unexpectedly. A newer release introduced additional rules and caused lint failures; adopting those rule changes is being handled separately in #525.
lucide-react is pinned so third-party icon SVG updates do not create unrelated snapshot diffs in packages/core.

I'm unsure where I sit on this. The reasoning to pin these seems like avoiding the sort of routine maintenance that comes with using a package. If there is a bug in a lucide-react component that gets fixed (which would affect snapshots), we miss it, for the "benefit" of not having to update snapshots.

PR #525 seems to contradict the purpose of pinning — it updates oxlint as well as the code that is required to satisfy it (at least as I understand it). If we do not want to be updating code, then we lock a version, if we want to update code to align with oxlint's advised best practices, then should we leave the dependency unpinned and address the warnings when they arise?

#525 and pinning seem to have different points of view

We have inconsistency between these two packages and other dependencies on whether we are pinning exact or whether we automatically take minor version bumps or not

@IzumiSy IzumiSy Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pins are intentional: they keep the lint and snapshot baselines stable, so unrelated installs do not introduce new rules or third-party SVG diffs. Renovate is configured to update pinned dependencies as default, so updates still arrive as explicit PRs.

PR #525 follows that model: it deliberately bumps the pinned oxlint version and includes the required rule-adoption changes. Leaving ranges would allow these changes to land incidentally during unrelated work, which is what we want to avoid.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will we just update oxlint when there are renovate requests to do so?

On a side note, It's not great that that their minor bumps made changes to rules!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. We will update the pinned version through Renovate PRs, reviewing any resulting rule changes deliberately rather than receiving them during unrelated installs. If an update needs rule adoption or other non-routine work, we will close the Renovate PR and handle the version bump and required changes together in a dedicated PR.

Comment thread e2e/package.json
AlertTokensPage.appShellPageProps = {
meta: {
title: "Alert tokens",
icon: <MegaphoneIcon size={16} />,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why we are losing the icons

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored the page icon in a820353. It had been removed while making sidebar item presentation consistent, but it is appropriate for this page.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@IzumiSy sorry there are a bunch across different existing pages. I only commented on one of the ones that were removed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored the remaining existing Vite page icons in abd4dbb: DataTable Lab, DataTable + Filters, DatePicker, and Document Progress. Thank you for calling out the wider scope.

@interacsean interacsean left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if its worth moving most of the existing pages to within 'showcase', I think they serve the same purpose

Image

@IzumiSy

IzumiSy commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

@interacsean

I wonder if its worth moving most of the existing pages to within 'showcase', I think they serve the same purpose

Agreed, so implemented in de6eac4b. The component demo pages now live under showcase and use /showcase/* routes; Settings is grouped under Main. Dashboard remains separate as the application-flow example.

@IzumiSy
IzumiSy force-pushed the chore/remove-nextjs-example branch from de6eac4 to c66a35b Compare September 14, 2026 01:41
@IzumiSy
IzumiSy merged commit adbea4f into main Sep 14, 2026
10 checks passed
@IzumiSy
IzumiSy deleted the chore/remove-nextjs-example branch September 14, 2026 06:41
interacsean added a commit that referenced this pull request Sep 16, 2026
PR #536 supersedes this branch's guidance for the bundled skill, so its
version wins on every file the two touch:

  catalogue/src/fundamental/{components,design-system}.md
  catalogue/src/pattern/detail/hero-with-actions/{PATTERN.md,*.tsx}
  catalogue/src/pattern/form/composer/PATTERN.md
  packages/core/src/components/layout/types.ts

Theirs is the better line: rather than teaching a specificity escape
hatch, it removes the need for one — table-in-card renders Table.Root
directly after the card header instead of overriding Card.Content's
padding, and Layout.gap stays a supported prop rather than being
deprecated toward a className override. It also ships the rule as
lint (@tailor-platform/eslint-plugin-app-shell, no-astw-prefix).

examples/nextjs-app was deleted upstream (#513, #532) in favour of the
Vite showcase, so its four conflicting files are dropped. Git matched
the rest by rename, carrying this branch's conversions into
examples/vite-app/src/{pages/showcase/{colors,grid,metric-card},showcase/form-demo}.tsx
— including the items-stretch! fix from the adversarial-review round.

Retained from this branch: the #1652 prefix-order fix in four
components, its regression guard, docs/**, and the ActionPanel JSDoc.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants