Stack & Switcher as interfaces
We already have two "Switchers", GtkStackSidebar & GtkStackSwitcher both with identical API (a single property) and with gnome-software
et al other 'implementations' exist, given how common this is it would make sense to generalise them as GtkSwitcher
GtkStack, on the other hand, is far more complex and is used everywhere for everything and occasionally often you want to alter its behaviour but unfortunately subclassing doesn't give you much more flexibility but implementing your own from scratch means you lose the ability to use either of the switchers
I don't know much about Handy but for argument's sake let's say it gets merged into Gtk. Leaflet has a very similar API to Stack but of course can't use the switchers!
My initial "break as little as possible" thought is:
StackSidebar/StackSwitcher implement Switcher and gtk_stack_[switcher/siderbar]_[get/set]_stack
become gtk_switcher_[get/set]_stack
whereas the majority of the Stack API is moved to the new Stack interface (thus maintaining naming, parameter ext) and renaming Stack to Deck, clearly this would require quite a bit of find/replace in .ui
ext. The idea being this approach requires as little work to migrate as possible.
But of course it could be nice to completely rethink the API/names