fix(component-library): fix prefetching react-aria links #2210
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed link navigation performance was slower than I expected in the preview builds. As it turns out, this is due to how react-aria handles client side routing -- it circumvents the nextjs
Link
component which is where the next link preload functionality is handled. Currently, there's no way to tell react-aria to use the nextjsLink
component, so instead this PR injects the preload functionality into the unstyled wrappers for any react-aria component that can be linked.While working on this, I also discovered that there are issue with having dependencies on
react-aria-components
from both the app and the component library. Thereact-aria-components
package uses contexts to communicate between some elements; as a result it is a singleton package (or at least, for any given set of components that need to interact with each other usingreact-aria-components
contexts, it is necessary that those components use the same package dependency forreact-aria-components
).I believe the easiest way to ensure we don't accidentally ship two separate copies of
react-aria-components
and have issues with contexts not being shared correctly is to only depend onreact-aria-components
from@pythnetwork/component-library
, and to re-exportreact-aria-components
modules from there for use in downstream apps. This way apps will only ever consume@pythnetwork/component-library
, which will own the actual dependency onreact-aria-components
. So, this PR also restructures things a bit to remove thereact-aria-components
dependency from the insights hub, moves all theUnstyled
components to anunsyled/
directory under the component library src, and to re-export much more ofreact-aria-components
from there.