Remix/React Router @Shopify 💿
Philadelphia
When the bug is fixed, will `startTransition(() => navigate(delta))` behave the same as `startTransition(() => navigate(path))` for RR apps?
If so we can just remove the entire popstate section.
When the bug is fixed, will `startTransition(() => navigate(delta))` behave the same as `startTransition(() => navigate(path))` for RR apps?
If so we can just remove the entire popstate section.
I would argue in response that React might be oversimplifying transitions - they're not without complexity.
The design decisions were made *before* transitions, we're trying our best to update without major/breaking changes.
I would argue in response that React might be oversimplifying transitions - they're not without complexity.
The design decisions were made *before* transitions, we're trying our best to update without major/breaking changes.
When I get a WG post together I can include a demo using an experimental build
When I get a WG post together I can include a demo using an experimental build
But we're using patterns developed pre-react 18/transitions/use() and trying to avoid breaking changes/major architectural changes for a huge user base. We were hoping startTransition(promise) gave us that avenue.
But we're using patterns developed pre-react 18/transitions/use() and trying to avoid breaking changes/major architectural changes for a huge user base. We were hoping startTransition(promise) gave us that avenue.
We're just trying to get up to date there really and be "concurrent friendly"
We're just trying to get up to date there really and be "concurrent friendly"
The word "mutation" isn't in the useTransitions page?
The word "mutation" isn't in the useTransitions page?
startTransition(()=>navigate(path))
startTransition(()=>navigate(delta))
To work the same and avoid having to explain/document the nuance in behavior.
Feels like users would expect them to be the same
startTransition(()=>navigate(path))
startTransition(()=>navigate(delta))
To work the same and avoid having to explain/document the nuance in behavior.
Feels like users would expect them to be the same
I thought I had confirmed React batching meant that sync loaders never actually surfaced a "loading" state to the UI but I'm not seeing that at the moment - maybe we let an async tick slip in somewhere
stackblitz.com/edit/github-...
I thought I had confirmed React batching meant that sync loaders never actually surfaced a "loading" state to the UI but I'm not seeing that at the moment - maybe we let an async tick slip in somewhere
stackblitz.com/edit/github-...
Users choose:
- cache in the client - sync loaders
- cache in a CDN - async loaders
- don't cache - async loaders
But holding onto every bit of loaderData that has loaded in a given session in the router sounds like a cache expiration nightmare.
Users choose:
- cache in the client - sync loaders
- cache in a CDN - async loaders
- don't cache - async loaders
But holding onto every bit of loaderData that has loaded in a given session in the router sounds like a cache expiration nightmare.
I should have included that the "loading" state also includes the location we're loading - which is the part we don't know up front
I should have included that the "loading" state also includes the location we're loading - which is the part we don't know up front
navigate(path)
- match routes
- setState({ state: 'loading' })
- call loaders (async)
- setState({ state: 'idle', loaderData, matches })
navigate(path)
- match routes
- setState({ state: 'loading' })
- call loaders (async)
- setState({ state: 'idle', loaderData, matches })