Decision: Two finder builder versions coexist
Status: accepted — v2 is current; v1 has no active migration plan
Context
The DropAFinder dashboard has two distinct finder builder implementations that coexist in the Next.js codebase:
- V1 — an older edit-page flow under
src/components/finders/edit/. Built with a traditional multi-field form layout. Still accessible via the legacy route. - V2 — a full-screen split-pane builder under
src/components/finders/v2/. Built with ahistoryReducer-based state machine, live preview viapostMessage, and a section-based navigation sidebar.
There is also evidence of a third builder form (V3 references in config) that was started but not shipped.
Decision
Both V1 and V2 remain in the codebase. V2 is the default for all current and new finders. V1 has not been removed because:
- Unknown blast radius — it is unclear which finders or routes still point to the V1 form without a full audit.
- Risk asymmetry — V2 works for all finders; deleting V1 creates no user benefit, only deletion risk.
- Implicit dependency —
RefinementsBuilder.tsx(V1-era component) is still imported in the edit flow and may serve finders not yet migrated to V2’s advanced rules system.
The V3 builder (referenced in finderBuilderConfig.ts) was not completed or shipped; its scaffolding may still exist but is not exposed in the routing table.
Consequences
For contributors:
- The canonical builder implementation to read and extend is V2 (
src/components/finders/v2/). - Do not add new features to V1. If you need to modify behavior that affects V1, check whether the change also needs to land in V2 and vice versa.
finderBuilderConfig.tsis the shared type and serialization layer. Changes there affect both builders.
Ongoing costs:
- Two code paths to understand when onboarding.
- Bug fixes in one builder may need manual mirroring to the other if both are still in active use.
- The V3 scaffolding adds noise to the type definitions.
Supersession plan: When V1 traffic drops to zero (confirming all finders render V2) and the RefinementsBuilder.tsx dependency is resolved, V1 can be deleted. No timeline is set.
Related pages
- Next.js: Finder Builder V2 — V2 architecture in detail
- Next.js: Routing — which routes serve which builder