Skip to main content

Rework changelog widget unviewed items

Currently, there are a couple of problems with the changelog widget:

Track views per user

We don’t track changelog views per user. It’s currently per device.

Ideally, everything should be tracked per user and fall back to the per-device setup if no user is provided.

Make unviewed changelog count better

Currently, the unviewed changelog count implementation is bad and could be improved.

Posts talking about issues with the count:


Getting the unviewed changelog count via the SDK could work for more advanced setups:

Featurebase(“get_unviewed_changelog_count”, {…})

We should probably emit an event if the unviewed changelog count changes so people with more advanced setups can listen for the change and display the count accordingly.

What part of Outbound?
Status: Partially Completed4 comments

Log in to comment and vote

Comments4

  • Jack Finnegan

    •

    May 23, 2025

    Tracking per device is frustrating.

    I need tracking per user.

    Please implement this.

    The reason it’s frustrating is because I can’t understand the exact experience my user is getting.


    For example, I login with test@test.com and see a changelog update (correctly).

    Now, when I login with test2@test.com and I don’t see a changelog update, I can’t tell if this is due to featurebase per device tracking, or if there is a separate bug.

  • arnaud.benhamdine

    •

    Oct 25, 2024

    Please provide at least the even in a first step, it would be helpful to hide the badge when the count is zero.

    • arnaud.benhamdine

      •

      Oct 26, 2024

      Currently, we have to observe html element to hide it if need be, with that code :

      trackChangelogUpdates: function () {

              const el = document.getElementById("fb-update-badge")

              const observer = new MutationObserver(mutationRecords => {

                  const firstMutRecord = mutationRecords[0]

                  const addedNode = firstMutRecord.addedNodes[0]

                  const removedNode = firstMutRecord.removedNodes[0]

                  const isCountSetToZero = !addedNode && !!removedNode

                  el.style.display = isCountSetToZero ? "none" : "flex"

              })

              observer.observe(el, { childList: true, characterData: true })

          },

    • Bruno H

      Team•

      Nov 16, 2024

      Pinned

      The old solution for the badge absolutely sucked, I reworked the system today to work more predictably: https://help.featurebase.app/articles/3449376-install-changelog-widget#4s5z51qoxkr