Skip to content

App.jsx is a merge bottleneck — merge order for the ready PRs, and what to do with yours #181

Description

@jgupta05072003-code

Read this if you have an open PR on Tenali. 21 of the open PRs change client/src/App.jsx. That is why so many of them are sitting.

Why everything conflicts

client/src/App.jsx is ~69,800 lines. There is no router: one App() at line 42396 and a Home() below it. Adding a feature means an import near line 114, a branch inside App(), and a tile in Home().

Every feature PR edits those same three places. So any two feature PRs conflict by construction, no matter how unrelated the features are. This is our design problem, not yours.

Merge order for the four that are ready

These four are mergeable today and go in this order:

Order PR Author Feature App.jsx diff
1 #131 @Krishna009-pro Water Jug and Equation Crafting labs +17/-1
2 #138 @Athiraa1804 Learn-Test workflow +384/-0
3 #101 @Tanishkaasharmaa Read Tenali's Mind +1500/-11
4 #69 @priyanshu7725 Monster misconceptions +1841/-1605

Smallest change to App.jsx first, so each rebase lands on a file that has moved as little as possible. Reversed, the three behind #69 would each rebase onto a substantially rewritten file.

If your PR is in this list: expect one rebase after the PR ahead of yours merges. Please don't rebase before then, or you'll likely do it twice. We'll comment on each PR as it comes up, so you don't need to watch this thread.

One exception: #101 already conflicts with main and needs a rebase now to be mergeable — don't wait for your slot.

#69 also reformats large regions it doesn't functionally change: of 1,606 removed lines, most are added semicolons, collapsed alignment whitespace and trimmed blank lines across 182 hunks. Please split that reformatting into its own PR — it makes the feature hard to review and worsens every conflict behind it.

Unowned PRs

#173 (server route extraction, Phase 2 of #116) — the author's internship ended 2026-09-02, so it has no active owner. It is not in the order above. If you'd like to adopt it, say so on that PR.

If your PR is not in that list

These also touch App.jsx and are currently conflicting: #151, #132, #102, #99, #71, #67, #62, #60, #26, #25, #13.

Please rebase onto latest main now and get your PR to mergeable. We can't sequence a PR that doesn't merge cleanly, so conflicting PRs will keep being skipped over. If your rebase is genuinely unmanageable, say so on your PR and we'll help rather than let it sit.

These touch App.jsx and are currently mergeable but not yet in the order: #174, #162, #161, #73, #17. Hold your rebase — we'll sequence you in a follow-up once the four above have landed.

The actual fix

The merge order is a workaround. The fix is that adding a feature should stop editing App.jsx at all.

Features already live in their own files (WaterJugLab.jsx, BattleApp.jsx, and so on) — App.jsx only imports them and switches on them. So we want a feature registry: one entry per feature in a map of key to lazily-loaded component, with App() and Home() reading the registry instead of hard-coding each case. A new feature then adds one file plus one registry line, and two feature PRs stop touching the same lines.

This is the client-side mirror of #116, the epic that is already splitting server/index.js into per-feature route modules. #116 opened for the same reason we're writing this: two feature PRs both landed top-of-file declarations in one file and produced the duplicate-JWT_SECRET bug in the 2026-07-27 redeploy. App.jsx is that problem one layer up, and #173 was Phase 2 of the server half.

We'll follow #116's shape rather than invent one: a proof-of-concept extraction of a single feature first, then batched sub-issues, one PR per batch so review and rollback stay scoped. #69 already pulls in lazy and Suspense, so part of the pattern is in flight already.

We'll open a separate issue for the registry. It needs to land between merges, not during, so we'll sequence it explicitly rather than surprise anyone mid-rebase.

Summary

  • Four PRs merge in the order above; we'll ping each in turn.
  • Conflicting PRs: rebase now.
  • Mergeable but unsequenced: hold.
  • We're fixing the underlying file so this stops happening.

Thanks for the patience — the sequencing delay is on us.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    coordinationCross-PR sequencing and merge-conflict coordinationpriority:highNeeds attention ahead of other work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions