- SSR Relay support, streaming
- Preload data
- Preload code
- Type safe URL makers
- Parse and understand query params
- Use query params safely
- CLI for matching route to components
- Integrate watching into vite
- Nested layouts
- Opt out of nested layouts
- Watch routes and rebuild
- Only write if has changes
- Ensure @live is added appropriately to enable dead code analysis
- Explore continously streaming code splitting preload tags
- Unify router approach (react-router, rescript react router, hand rolled, require shallow push, etc)
- Error handling in vite plugin and CLI commands
- Allow multiple JSON files to make it easier to split up definitions?
- Route helpers (push, replace, redirect, etc)
- Init the routes if folders do not exist
- Centralize bindings so they don't pollute the global scope
- Helpers for checking whether a route, and/or sub route is active or not
- Figure out a way to see if nested route is rendered or not (so you can conditionally change your layout)
- Dogfood in Informind
- Preload code for rendered links (with priority?)
- Resolve full target file path for ReScript modules, also in text/strings
- Scroll restoration
- Find reasonable place for configuring the router (package.json?)
- Move configration to cosmiconfig
- Build client side preload mechanism
- Init command for CLI
- Automatic code splitting of route renderers
- Prevent calling loadQuery more than needed, and properly dispose of all load queries on route change
- Reduce code size by unifying emitted helpers
- Generic route-is-active hook
- Move to making route declarations initable so it can have its data scoped properly, and a few things configured
- Generate renderers into folder structure mirroring route structure?
- Run validation for each completed route by trying the RR matchers
- Move to sorted array for path and query params
- [later] Validate and harden routes JSON definition, including JSON schema?
- [later] Figure out Rollup plugin for linking imports to chunks so we can do proper preloads via modulepreload
- [later] Extension integration
- [ssr] Validate streaming SSR with defer/stream
- [ssr] Package up the streaming etc
- [later] CLI for checking whether there are unapplied changes (for use with CI, so process.exit)
- [later] Investigate language server features (go to definition of renderer, find route, etc)
- [later] Write resi files for routes? (might be cumbersome for some files, as we rely a fair bit on inference)
- [later] Redirects (maybe leverage history?)
- [later] Migrator from file system structure for both Remix and Next?
- [later] Support scroll restoration in X scroll too
- [later] Static generation PoC (I'm not too interested in static generation myself)
- [later] Investigate what's needed to make the router FW agnostic (don't rely on rescript-relay per se)
- [wontfix] Inline React router matchers (it's fine to just depend on RR directly, it seems well suited for tree shaking)
- [wontfix] Default values for query params? Not right now, easy enough to implement when needed
- [wontfix] Figure out reasonable way to use IDs as polyvariants for tab ids etc (no need for now)
- Apply errors to stream
- Figure out a way to test all of this