Page scroll starts at the top
Changing to another page without a fragment resets the page viewport after rendering. A fragment moves directly to its validated section instead.
VIEWS
One route model across every target
Dowe lowers pages and shared layouts once, then generates web, desktop, Android, and iOS navigation from the same route graph.
Page scroll starts at the top
Changing to another page without a fragment resets the page viewport after rendering. A fragment moves directly to its validated section instead.
Shared layouts stay in place
The router preserves shared layout state and independent layout scrollers, including long Sidebar navigation, while only the page viewport resets.
PLATFORM ROUTES
Choose the root experience for each target
Add platform to a group when the same path needs a different layout and page on web, desktop, Android, or iOS. Dowe filters the route graph during compilation, so target-specific screens do not ship as runtime branches.
import LandingLayout from "@/views/layouts/landing-layout"
import AuthLayout from "@/views/layouts/auth-layout"
import LandingPage from "@/views/pages/landing-page"
import LoginPage from "@/views/pages/login-page"
views RouteViews
group path:"/" layout:LandingLayout platform:"web"
route path:"" page:LandingPage
group path:"/" layout:AuthLayout platform:["desktop","ios","android"]
route path:"" page:LoginPageOne or many targets
Use one quoted value or an array containing web, desktop, android, and ios. Omitting platform keeps the entry available everywhere.
Groups filter descendants
A group applies its platform set to its layout and direct routes. A route may use platform again to narrow that set.
Paths stay deterministic
The same canonical path is valid for disjoint platform sets. Compilation fails if two entries claim that path for the same target.