---
# System prepended metadata

title: solidjs/router issues and pull requests

---

## Introduction

I couldn't be entirely sure how many things would be *entirely* irrelevant with the new changes, so I tried to keep an open mind for the most part. The sections are in no particular order, but the issues & PR's inside are ordered by age from oldest to newest.

## Glossary
✔ - Issue reproduction included
❌ - I think we can close this immediately.
🙏 - Pull Request (Everything else is an issue)
👋 - Obsolete due to new router changes.
👍 - *potential* fix included somewhere
👆 - *potential* fix in issue
👇 - *potential* fix by me
🙋‍♂️ - I think this is something I *could* help with.
🤷‍♂️ - I don't understand this and I could not reproduce it.
🐰 - Maybe fast? -- I think this will be easy and quick
🐌 - Maybe slow? -- I think this will be hard and take time
    
## Routing Context & Modals
    
- [#129 Support for contextual modal navigation](https://github.com/solidjs/solid-router/issues/129)
    - 🐌👍👆
    - I see what they're saying, but I think that the potential fix is way too naive. I don't know why people like this pattern.

- [#297 Location signal is triggered on navigation before integration getter](https://github.com/solidjs/solid-router/issues/297) 
    - ✔🐌
    - There seem to be some genuine concerns here, and the reproduction has a really good write-up... This isn't a perfect fit for this section, but he wrote #298 at the same time which is why I grouped these three together.

- [#298 Link click handling breaks the <Router> isolation/context principle](https://github.com/solidjs/solid-router/issues/298) 
    - ✔👍👆
    - Interesting idea to scope each Router to a DOM element... I just don't fully get why you would need this.
    
## Scroll Position
    
- [#99 Scroll Restoration / History API](https://github.com/solidjs/solid-router/issues/99)
    - 🐌
    - This is pretty vague, but #283 makes it seem like this is a real issue.
    
- [#130 Scroll to section with id from a hashed url](https://github.com/solidjs/solid-router/issues/130)
    - ✔🐰 or ❌
    - Not sure what's up here, because the About link in the footer works correctly.
        - [This is the link they gave (it doesn't work.))](https://digichanges.com/#about)
        - [This is the link in the footer (it works.)](https://digichanges.com/#digichanges_section)
    
- [#283 Scroll bug in SolidStart HN demo](https://github.com/solidjs/solid-router/issues/283)
    - ✔ 🐌
    - This is so subtle that it took me like six attempts to even see what y'all were talking about.

## History API
    
- [#223 Solid Router doesn't handle history.state correctly when using A tag](https://github.com/solidjs/solid-router/issues/223)
    - 🐌
    - Between this & #275 it seems like we need to adjust how we're dealing with the history API's state object.
    
- [#275 Undetected location state changes while using browser back/forward buttons](https://github.com/solidjs/solid-router/issues/275) 
    - ✔ 🐌
    - The repo is pretty convincing.

- [#277 useBeforeLeave not firing on history.back()](https://github.com/solidjs/solid-router/issues/277) 
    - ✔ 👍👆
    - @Brendan-csel offered up some working code in the thread.
    
## Path Matching, Exact Routes, & Classes
    
- [#25 Expose createPathMatcher to public](https://github.com/solidjs/solid-router/issues/25)
    - 🐰 or ❌
    - I grouped all of these together because it all comes down to giving the developer easy ways to know what pages are/have been active and responding appropriately.
    - I think keeping track of previous state in the router is not a bad idea, but this seems outdated and not the best way to do it.

- [#39 Allow useMatch take RouteDefinition object instead of path.](https://github.com/solidjs/solid-router/issues/39)
    - 🐰 or ❌
    - Does `matchFilters` do everything we need, or do you want to go further?
    
- [#127 Support tagged template literals for multiple paths](https://github.com/solidjs/solid-router/issues/127)
    - 🐰 or ❌
    - Again, do we need this in a `matchFilters` world?
    
- [#245 Add exactActiveClass to A component](https://github.com/solidjs/solid-router/pull/245) 
    - 🙏 🐰
    - If you're going to keep A around, perhaps we should give it a slight overhaul. 
    - It does make sense to want to style things differently when it's the end path vs part of the layout. What if we want to use the same nav bar in two different places? (No, I don't know why...) 
    - Currently, having `end` as a boolean makes this kind of behavior pretty hard.
    - I really like the "partialMatch" vs "exactMatch" nomenclature.

- [#289 Current aria-current heuristics violate WAI-ARIA rules](https://github.com/solidjs/solid-router/issues/289) 
    - 🐰
    - This seems like an easy fix-- only place it on things matching `end` right? 
    - I had some code to implement some of my ideas with this and #245 but I would rather wait to hear your thoughts.

- [#295 allow A to accept class](https://github.com/solidjs/solid-router/pull/295) 
    - 🙏 🐰 or ❌
    - Not sure what's up with this-- aProps, etc.?
    - I almost wish we could get rid of active/inactive/classlist/all of the above and force people to use useMatch for everything lol.
    - This and the previous two all come down to what you want to do <A> and the class props.

## SearchParams

- [#209 useSearchParams support key only param](https://github.com/solidjs/solid-router/issues/209)
    - 🐰
    - I think Fabio is right-- we should just defer to the standard as much as possible.
    
- [#271 extend useSearchParams hook](https://github.com/solidjs/solid-router/pull/271) 
    - 🙏 🐰 or ❌
    - Seems like a half-measure.

- [#291 Define searchParamIntegration](https://github.com/solidjs/solid-router/pull/291) 
    - 🙏 🐰 or ❌
    - searchParam routing. Absolutely wild. No harm, but why?

## Middleware, Transitions, & Pre-loading
    
- [#75 Add support for middlewares](https://github.com/solidjs/solid-router/issues/75)
    - 🐌
    - The **#1 most 👍'd feature request**
    - This does seem like a big missing piece. I'm curious about where you think this fits into the new architecture. 

- [#102 Provide a way to hook on routing start/end](https://github.com/solidjs/solid-router/issues/102)
    - 🐌
    - Couldn't we just hook into `useBeforeLeave` and `onMount`? Or, middleware would basically solve the "hook on routing start", right? Sorry if this is silly and naive-- still learning.
    
- [#119 Shared element transitions support (View Transitions API)](https://github.com/solidjs/solid-router/issues/119)
    - 🙋‍♂️ or ❌
    - I actually know quite a bit about View Transitions, but a DOM API doesn't exactly make sense with server components unless you make it a no-op on the server. I would be happy to work on an integration if you think it could work.
    - This is in this section because it would likely hook into a middleware layer if provided.
    
- [#243 Conditional routing](https://github.com/solidjs/solid-router/issues/243)
    - 🐌
    - Unnecessary if we add middleware, but something we should consider if we can't create something more general purpose.
    
- [#247 Routing guards support](https://github.com/solidjs/solid-router/issues/247)
    - 🐌
    - Same as above.
    
- [#279 feat: intent based route preloading](https://github.com/solidjs/solid-router/pull/279) 
    - 🙏👋❌
    - It's a shame because it seems like they put some thought into this, but this is made irrelevant by your latest work.
    

## TypeScript Issues

- [#110 Advanced typings](https://github.com/solidjs/solid-router/issues/110) 
    - 🐌
    - I'm very much a novice with TS, but I could make this a long-term goal and study TanStack Router.

- [#238 ESM "type": "module" / TS "moduleResolution": "nodenext" not working correctly](https://github.com/solidjs/solid-router/issues/238) 
    - ✔🙋‍♂️🐌
    - I imagine you want all of your libraries having the same tsconfig. I'm willing to make some changes, but I would need some direction on this.

- [#281 useRouteData return wrong type](https://github.com/solidjs/solid-router/issues/281) 
    - ✔❌👋
    - Documentation fix. No data, no problem.

- [#301 Using basic interface as generic type argument for useParams](https://github.com/solidjs/solid-router/issues/301) 
    - ✔👍👇1
    - Pretty easy fix. It was a good start which gave me false confidence. 😅

- [#302 TypeScript checker error: Interface 'AnchorProps' incorrectly extends interface 'Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "state">'](https://github.com/solidjs/solid-router/issues/302) 
    - 🤷‍♂️❌
    - No clue.
    
## Runtime Issues
    
- [#233 Hydration error when using streaming, lazy imports, and createResource](https://github.com/solidjs/solid-router/issues/233) 
    - ✔🤷‍♂️
    - No clue.

- [#286 Cannot export parts of '@solidjs/router'](https://github.com/solidjs/solid-router/issues/286) 
    - 🤷‍♂️
    - No clue.

- [#294 Unable to use <Router />](https://github.com/solidjs/solid-router/issues/294) 
    - ✔🐌
    - It looks like this is an adapter issue. I can look into it further if you want.

## Misc. Issues
    
- [#255 Config based routing not work with nested routes](https://github.com/solidjs/solid-router/issues/255) 
    - ✔🐰
    - Documentation fix.
    
- [#272 Cannot read properties of undefined (reading 'length')](https://github.com/solidjs/solid-router/issues/272) 
    - ✔🐌 or ❌
    - This seems like an issue for Solid proper, right?
    
- [#273 Context providers inside <Routes> don't provide context values to routed content](https://github.com/solidjs/solid-router/issues/273) 
    - ✔🐰
    - Documentation fix.

    
## Other Pull Requests
    
- [#56 Setup development build](https://github.com/solidjs/solid-router/pull/56) 
    - 🙏 🐰 or ❌
    - Any thoughts on how this would change with the new architecture? Maybe we could provide it with the caveat that it doesn't work in CSR mode? Or could we change it somehow to fix that weakness?
    
## Other Requested Features/Enhancements
    
- [#61 Add named routes](https://github.com/solidjs/solid-router/issues/61)
    - 🐰
    - Honestly, I agree with Fabio that this seems like an anti-pattern, but it's the sixth most popular requested feature so I'm curious on your feelings here.
    
- [#104 Data function gets default value of context](https://github.com/solidjs/solid-router/issues/104)
    - 👋❌
    - No data, no issue.
    
- [#116 About documentation](https://github.com/solidjs/solid-router/issues/116) 
    - 🙋‍♂️
    - Obviously, you're already doing a lot to update to the new pieces. 
    - I can take care of filling in the gaps after we're done overhauling the package. I'm pretty passionate about documentation, so I'd love to help with this. 
    - Also, what do you think about maybe doing a docs page with Astro Starlight?
    
- [#124 Suggestions](https://github.com/solidjs/solid-router/issues/124) 
    - ❌
    - It's a shame, but we haven't heard from the guy in a year and a half.

- [#204 persist route (don't unmount when navigate out)](https://github.com/solidjs/solid-router/issues/204)
    - 🐌
    - What's the status on the offscreen stuff?
    
- [#214 Router: domain-based routing](https://github.com/solidjs/solid-router/issues/214)
    - 🐰
    - This seems doable, but I don't think it should be a priority.
    
- [#215 Add an issue template for feature request](https://github.com/solidjs/solid-router/issues/215)
    - ❌ or 🐰 🙋‍♂️
    - I think a few more templates and tags would probably be a good idea. I wouldn't mind banging out a few different ones if you're open it.
    
- [#216 Add 'params' prop to the 'A' component](https://github.com/solidjs/solid-router/issues/216)
    - 🐰
    - I think this really only makes sense to me if you're actually open to doing #61.
    

## Fixes: 
    
1. New Type Definition:
```jsx=
export const useParams: {
  <T>(): Params & T;
  (): Params;
} = <T = Params>() => {
  return useRoute().params as Params & T;
};
// I don't love this, but it seems to work.
```

Now, both of these will work:
```jsx=

export interface MyParams {
  something: string
}

// OR

export type MyParams = {
    something: string
}
```

And the type will be just Record<String, String> if no generic is provided. No worries if this is dumb and you want to just disregard it. 🙂

I had some other fixes, but I questioned the side effects that would fall out from them and I think there's probably no point in doing too much until I see what the codebase looks like after your updates. Let me know what you think!