PROPOSAL
Could you maybe try keeping an entry for the current user that uses a kind of “stack” format? So essentially, you track what a users current position is, then if they go down in your view tree you “push” another value, and if they go back, you “pop” the value off the stack. This may be tricky depending on what. your workflow is for moving between views, but I’ll let you handle that.
LOGIC
Stacks use a process called “First-in-first-out” (FIFO) meaning that if you add something to the list, a removal or pop step will remove whatever was the last added or on the top of the stack.
For example. If you have a top view called “Main” with a child view called “Child” and a view below that called “Grandchild”, then the user would start a the “Main” view, and this would be logged in your user table in an appropriate column (probably an EnumList in Appsheet).
Going to the “Child” view has an attached action that pushed the name of the “Child” view onto the stack, so now your users column has Main" , "Child in your table. Going back removes it from the list with something like - LIST("Child"). or going down to the Grandchild view pushes the “Grandchild” value onto the stack resulting in Main" , “Child” , "Grandchild.
IMPLEMENTATION
Then you can take your stack and sub the delimiter with your own delimiter so:
Substitute(INDEX(CurrentUser[UserStack], "" , "", ">")
Or something along those lines. This assumes a User slice called “CurrentUser” and you contain your users current position stack in [UserStack].
This is all theoretical as I haven’t tested any of this out, but I hope that puts you on the right track.
FURTHER READING
Refer to this reading if you’d like to read more into Stack data types: Stack (abstract data type) - Wikipedia