LearnNewsExamplesServices
Frontmatter
id9091
titleFeat: Enhance Neo.data.Store to support Proxy loading
stateClosed
labels
aicorefeature
assigneestobiu
createdAtFeb 10, 2026, 6:55 PM
updatedAtFeb 10, 2026, 8:35 PM
githubUrlhttps://github.com/neomjs/neo/issues/9091
authortobiu
commentsCount1
parentIssue9089
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 10, 2026, 8:35 PM

Feat: Enhance Neo.data.Store to support Proxy loading

Closed v12.0.0 aicorefeature
tobiu
tobiu commented on Feb 10, 2026, 6:55 PM

Objective

Update Neo.data.Store to utilize the new Proxy architecture for data loading.

Tasks

  1. Proxy Integration:

    • Add a proxy config to Store.
    • If proxy is defined (and is a valid instance/config), use it in load().
  2. Incremental Loading:

    • Implement listeners/callbacks for the Proxy's streaming events.
    • When the Proxy yields a chunk of records:
      • Instantiate Models (if configured).
      • Add them to the internal collection without firing a "refresh" event every time.
      • Fire a new recordsLoaded (or similar) event for the chunk.
    • Fire load event only when the stream is fully complete.
  3. Backwards Compatibility:

    • Ensure existing url / autoLoad behavior works (either via legacy logic or by auto-creating a default Ajax proxy under the hood, though that might be out of scope for step 1). For now, proxy should probably be an alternative to the standard load.

Key Challenge

Handling sorting/filtering during a stream. Ideally, we just append. If the store is sorted, we might need to insert-sort (expensive) or just wait until the end. Decision: For Phase 1, assume "append-only" behavior during load, then sort at the end (or assume the source is pre-sorted).

tobiu added the ai label on Feb 10, 2026, 6:55 PM
tobiu added the core label on Feb 10, 2026, 6:55 PM
tobiu added the feature label on Feb 10, 2026, 6:55 PM
tobiu added parent issue #9089 on Feb 10, 2026, 6:56 PM
tobiu cross-referenced by #9093 on Feb 10, 2026, 7:05 PM
tobiu assigned to @tobiu on Feb 10, 2026, 7:08 PM
tobiu cross-referenced by #9092 on Feb 10, 2026, 7:51 PM
tobiu
tobiu Feb 10, 2026, 8:35 PM

Input from Gemini 3 Pro:

✦ I have enhanced the JSDoc for the core classes involved in this feature.

Documentation Updates

  1. src/data/proxy/Base.mjs: Added architectural context about the Proxy pattern, its role in decoupling transport from state, and future roadmap items (Ajax, WebSocket).
  2. src/data/proxy/Stream.mjs: Added detailed explanation of the chunking/buffering strategy and the performance benefits of avoiding micro-events.
  3. src/data/Store.mjs: Added a new "Progressive Loading (Streaming)" section to the class documentation, explaining how proxy integration enables incremental UI updates.

This completes the code-level documentation enhancement. I will now proceed to create the comprehensive "Streaming Data" guide.

tobiu closed this issue on Feb 10, 2026, 8:35 PM