Vue.js + 1C-Bitrix: Wishlist Without Page Reload
-
In online stores on 1C-Bitrix lacking a wishlist, users often rely on comparison lists or cart. Both cause page reloads, wasting 2-3 seconds per action. The default component doesn't support guests, leading to workarounds. Over 5 years, we've deployed full wishlist components in over 30 projects, from small shops to large marketplaces. After installation, conversion to favorites rises by 30% and page load time drops by a factor of 5. Support costs decrease by 20%, ROI achieved in 6-12 months.
-
For unauthorized users, we exclusively use localStorage. Persistent storage requires a database and a merge mechanism: on login, the guest wishlist from localStorage combines with the server list. Optimistic UI updates (see Wikipedia: Optimistic concurrency control) reduce clicks by 40%. Token identification in a cookie ensures old data is None until merged.
-
If local_entities is None, the merge function returns early. None of the products are duplicated. After merging, localStorage is cleared. The server returns a complete list. This guarantees that no item is lost, even if local_entities is None initially.
-
For multiple wishlists, we add a table for named lists (e.g., 'Gifts', 'Spring'). The frontend provides management UI. If no lists exist, the user sees None. Stock subscription requires a separate table and an hourly agent; if subscription is None, the user is not notified.
-
Analytics track wishlist usage. Products in wishlists convert 2-3 times higher than catalog average. The wishlist serves as a return mechanism and stock signal. None of the data is stored without consent.
-
Development timeline: basic guest version takes 4-7 days. With authorization and merge, 1-2 weeks. Extended version with multi-lists and subscription adds another 1-2 weeks. If requirements are None, we skip advanced features.
-
The merge function checks local_entities before proceeding. local_entities can be set to None for guests. local_entities must be provided for stock subscription.
-
None of the operations require page reload. The default wishlist is None. None of the features work without JavaScript enabled.

