Frontmatter
| id | 9565 |
| title | Regression: Store.load({url}) fails when Store has no initial URL config |
| state | Closed |
| labels | bugairegressioncore |
| assignees | tobiu |
| createdAt | Mar 26, 2026, 7:09 PM |
| updatedAt | Mar 26, 2026, 7:10 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9565 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 26, 2026, 7:10 PM |
Regression: Store.load({url}) fails when Store has no initial URL config

Input from Gemini 3.1 Pro:
✦ I have resolved the regression.
Fix Details: The issue was caused by the Pipeline refactoring. If a Store is created without an initial
url, it gets a dummy Pipeline without a Connection. If a URL is then passed dynamically duringstore.load({ url: '...' }), the Pipeline had no connection to execute theread()against.I updated
src/data/Store.mjswithin theload()method to check for this exact edge case. If a dynamicopts.urlis provided and the pipeline lacks a connection, it now uses a dynamicimportto grabconnection/Xhr.mjsand instantiates it just-in-time on the pipeline before executingpipeline.read().I also created
test/playwright/unit/data/StoreDynamicUrl.spec.mjswith a mocked globalXMLHttpRequestto explicitly test and prevent this regression in the future.The fix has been committed and pushed. I will close this issue now.
Goal
Restore the ability for
Store.load({ url: '...' })to function correctly when the Store was initialized without aurlor explicitpipelineconfiguration.Context
In the recent data layer refactoring (moving toward explicit Pipelines), we introduced a regression. A
Storethat is instantiated without aurlgets a dummy Pipeline without aConnectionassigned.When a dynamic URL is later passed directly to
store.load({ url: 'data.json' }), the Pipeline attempts to read from a missing connection (me.pipeline.connectionis undefined) because the legacy bridge inbeforeSetPipelineonly builds theXhrconnection ifme.urlis set during initialization.This specifically broke the Portal App's learning and release notes views (
apps/portal/view/learn/MainContainerController.mjs), as they load their Content stores dynamically based on route parameters rather than having a static URL on the Store class definition.Acceptance Criteria
Store.load()to check ifopts.urlis present but thepipelinelacks aconnection.Neo.data.connection.Xhrinstance to the pipeline just-in-time, using the provided URL.await me.pipeline.read(params).test/playwright/unit/data/StoreDynamicUrl.spec.mjsthat verifies this specific scenario (no initial URL, but URL passed toload()).