LearnNewsExamplesServices
Frontmatter
id9502
titleMigrate existing Stores to the new Pipeline architecture
stateClosed
labels
enhancementairefactoringarchitecturecore
assigneestobiu
createdAtMar 17, 2026, 6:46 PM
updatedAtMar 25, 2026, 4:28 PM
githubUrlhttps://github.com/neomjs/neo/issues/9502
authortobiu
commentsCount3
parentIssue9449
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMar 25, 2026, 4:25 PM

Migrate existing Stores to the new Pipeline architecture

Closed v12.1.0 enhancementairefactoringarchitecturecore
tobiu
tobiu commented on Mar 17, 2026, 6:46 PM

Goal

Identify and migrate all existing Neo.data.Store instances in the apps/ and examples/ directories that directly use the api or url configs to utilize the new Neo.data.Pipeline architecture.

Context

With the introduction of the Pipeline cornerstone (#9451), the Store now delegates data fetching and shaping to its pipeline config. To avoid regressions and maintain a clean architecture, we must transition existing stores to this new model.

Acceptance Criteria

  • Search apps/ and examples/ for store definitions using api: or url:.
  • Refactor these stores to use the pipeline config.
  • Ensure Connection.Rpc or Connection.Fetch is used within the pipeline as appropriate.
  • Verify that examples and apps still function correctly after the migration.
tobiu assigned to @tobiu on Mar 17, 2026, 6:46 PM
tobiu added the enhancement label on Mar 17, 2026, 6:46 PM
tobiu added the ai label on Mar 17, 2026, 6:46 PM
tobiu added the refactoring label on Mar 17, 2026, 6:46 PM
tobiu added the architecture label on Mar 17, 2026, 6:46 PM
tobiu added the core label on Mar 17, 2026, 6:46 PM
tobiu added parent issue #9449 on Mar 17, 2026, 6:46 PM
tobiu cross-referenced by #9449 on Mar 17, 2026, 6:47 PM
tobiu referenced in commit 327d31e - "refactor(data): remove Pipeline legacy bridge and migrate DevIndex to explicit pipeline (#9502) on Mar 24, 2026, 8:07 PM
tobiu
tobiu Mar 24, 2026, 8:07 PM

Input from Gemini 3.1 Pro:

✦ I have refactored the DevIndex.store.Contributors to explicitly configure its pipeline and explicitly import its Connection and Parser classes.

This allowed me to remove the "magical" legacy bridge from src/data/Store.mjs entirely. The Store no longer statically imports connections to try and guess the developer's intent.

By demanding explicit configuration for advanced pipeline setups, we eliminate the need for synchronous ClassSystemUtil instantiation tricks and ensure the App Worker's dependency graph remains lean and predictable. This is a crucial first step for the #9502 migration.

tobiu cross-referenced by #9550 on Mar 25, 2026, 4:23 PM
tobiu
tobiu Mar 25, 2026, 4:25 PM

superseded by #9550

tobiu closed this issue on Mar 25, 2026, 4:25 PM
tobiu
tobiu Mar 25, 2026, 4:28 PM

Input from Gemini 3.1 Pro:

✦ I have implemented a reactive legacy bridge in Store.mjs as part of the #9502 refactoring efforts.

The new logic in beforeSetPipeline automatically creates a connection-xhr pipeline if a url is provided without a pipeline or api. This ensures backward compatibility for simple stores while keeping the App Worker's dependency graph lean via dynamic imports.

The load() and autoLoad processes now correctly await the bridge initialization to prevent race conditions. The portal app's store-driven views are now functioning correctly.

Detailed changes can be found in #9550.