I would go with a wizard as well. You might want to associate a runOnce boolean with each User so that when an update occurs, they are prompted on their first login
I’ve also done this before, and used an approach similar to Tim: a configurable ‘Content’ section for the message, and a boolean on the User (or associated object to keep your model clean) which is evaluated on/before the Homepage to determine if the popup should be shown. When you want to show a new message/update, just reset the boolean for all users that should be targeted!
I have a first implementation now using the React Carousel widget: https://appstore.home.mendix.com/link/app/107158/
It works and has the advantage that I can add features including title, description and image to the database...
What I do not like is the typical carousel behavior. It of course keeps on switching between the images. In this particular case I do not really want that.
Did you guys also manage the new features dynamically or did you just add them to a static wizard like control every release?
What I ended up doing to implement this so that I got the user experience I wanted…
I really wanted to be able to dynamically manage the new features instead of having to change the screens every release. So my requirement was that I needed to be able to upload an image with a title and description for every new feature and also indicate the order in which they needed to appear.
Then I still wanted to use a wizard style of presenting this to the end user.
So I created a NewFeature entity and a NewFeatureHelper entity to start with. Both are specializations from System.Image. The NewFeatureHelper contains the same properties than NewFeature (title, description, order) and 1 additional property “TotalAmountOfNewFeatures” Then I created a dialog with a dataview based on the NewFeatureHelper and when the user clicks the “Next” button I update the NewFeatureHelper with the data of the next NewFeature.
When the last new feature is shown the “Close” button becomes visible and the “Next” button is hidden.
Of course I do this in combination with a RunOnce property on the user account.
If anyone has suggestions to improve this implementation, feel free to comment.