feat: add feeds widgets for JS, React, and Vue#6969
Open
e-krebs wants to merge 7 commits intofeat/composition-multifeed-layer2-connectorfrom
Open
feat: add feeds widgets for JS, React, and Vue#6969e-krebs wants to merge 7 commits intofeat/composition-multifeed-layer2-connectorfrom
e-krebs wants to merge 7 commits intofeat/composition-multifeed-layer2-connectorfrom
Conversation
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 251 |
| Duplication | 53 |
TIP This summary will be updated as you push new changes. Give us feedback
Add `feeds()` widget that creates per-feed DOM containers and manages FeedContainer lifecycle. Each feed gets a scoped `<div class="ais-Feeds-feed">` and its own FeedContainer registered with the parent index. - DOM creation, reuse, reorder, and cleanup per feed - Deferred removal with coalesced timer (matches connectDynamicWidgets pattern) - Dispose merges active + pending containers for clean teardown - Exported from both main and UMD entrypoints - 11 unit tests + 1 integration test with real search lifecycle Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add `<Feeds>` component that creates per-feed `IndexContext.Provider` scopes, and `useFeeds` hook wrapping `connectFeeds` via `useConnector`. - FeedContainer creation + registration fused in render body for SSR compat - Deferred removal with coalesced timer (single ref pattern from useWidget) - Unmount cleanup merges active + pending containers - 5 unit tests + 2 integration tests (real InstantSearch + SSR) - Exported from react-instantsearch-core Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0bdc7d6 to
29a3827
Compare
More templates
algoliasearch-helper
instantsearch-ui-components
instantsearch.css
instantsearch.js
react-instantsearch
react-instantsearch-core
react-instantsearch-nextjs
react-instantsearch-router-nextjs
vue-instantsearch
commit: |
7d52e70 to
1fd7ba0
Compare
Add `<ais-feeds>` component with per-feed `AisFeedProvider` scoping via Vue's provide/inject for `$_ais_getParentIndex`. - Container reconciliation in watcher (side-effect-free render) - Deferred removal with coalesced timer (single timer pattern) - Unmount cleanup merges active + pending containers - 5 unit tests + 1 integration test with real InstantSearch - Exported as AisFeeds from vue-instantsearch - Updated mock and index tests for compositionID support Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…type safety FeedContainer.render() ignores the argument internally but IndexWidget type requires it. Pass renderOptionsRef to satisfy TypeScript. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1fd7ba0 to
eff4746
Compare
@algolia/composition doesn't exist under algoliasearch v4. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Layer 3 of the Multifeed Composition Support (RFC). Stacked on
feat/composition-multifeed-layer2-connector(PR #6964).Adds user-facing
feedswidgets for all three flavors. Each widget owns FeedContainer lifecycle (create, register, remove, reorder) — the connector only computesfeedIDs.InstantSearch.js
feeds()widget with per-feed DOM containers, widget scoping, and DOM reorderingReact InstantSearch
<Feeds>component with per-feedIndexContext.ProviderscopinguseFeedshook wrappingconnectFeedsviauseConnectorVue InstantSearch
<ais-feeds>component with per-feedAisFeedProvider(provide/inject)Shared patterns across all flavors
Test plan
yarn run type-check:v3andyarn run type-check:v4yarn lint:changed🤖 Generated with Claude Code