- Minor fix to avoid mangling URLs in some contexts
- Started testing React Native integration
- Interim release to get this working
- Fix: Got
activeworking everywhere properly, in particular inside demos - Fix: Edge case crash on redirect demos
- Demo: Code splitting now loads something substantial and is actually code splitting properly
- Demo: Code splitting shows a PDF which can also be navigated via routing
- Build: Made Webpack more aggressive about chunks
- New feature: improved API to accessing
resolveobjects. They are now available via theroutingHOC or theRouterFaC, alongside thelocationprops - Huge improvements and additions to docs
- Code splitting demo and main JARL API docs finally work properly
- Really actually fix deployment for good this time
- Got the code samples and Markdown docs looking much better
- Decided this can probably be called beta now 🎉
- Fix rendering CHANGELOG
- Added some E2E tests around the demo shell
- I screwed up. Had to bump another couple of versions to test the pipeline.
- Some improvments on the demo site:
- Syntax highlighted code examples
- Removed broken Redux Integration demo
- Switched UI over to Semantic UI
- Added the CHANGELOG
- Added API docs for JARL Native
- Only tagged builds publish and deploy to production
- PRs and master untagged builds will deploy a staging demo site
- Build number added on docs site
- Really fixed prod deployment
- Created a Discord server: https://discord.gg/BVcQ6Z
- Added a Discord bot to make build announcments in #build
- Final deployment to production site was not working correctly, fixed this
- Run E2E against staging site, because why not
- Some more work on generating API docs
- Added version number from package.json to site header
- Moved away from Yarn workspaces (was being pretty buggy)
- Docker build and deployment of demo site (finally!)
- Docs and demos live at: https://jarl.downplay.co ❤️
- CircleCI!
- Jest, Cypress, eslint, plus builds all running in a shiny new CI pipeline
- Fixed some flaky time-based tests
- Got a build working for the demo/docs site
- Added new E2E tests and fixed all the broken ones
- Started adding tests to RN package
- Improved some of the local dev scripts
- Moved to Yarn workspaces
- Continuous deployment to npm
- Version took a large bump since last release due to multiple deployments whilst figuring out CI
- Fixed that active status of links would be wrong on first page load
- Fixed error due to missing actionTypes.js in
jarl-react-redux
- Slightly relaxed error throwing in the case of an invalid Link. Don't really want to stop the whole app rendering (or even really throw at all) just because a Link was null, but we do want pretty obvious console errors if a location is unresolvable as that definitely indicates a bug.
- React Native support! A new package
jarl-react-nativebrings a reasonably comprehensive RN compatible integration including:- A router wrapper,
NativeProvider, using createMemoryHistory - A variant of the Link component using TouchableHighlight
- Back Button (Android) and Deep Linking support. Both optional via props on the NativeProvider.
- A router wrapper,
-
The big rename landed! Massively simplified the API while providing more flexibility. (I hope!)
NavigationProvideris nowRoutingProviderperformInitialNavigation->performInitialRoutingonNavigateStartandonNavigateEndare collapsed into a singleonChange. The router is fully controlled: any additional transitions or preloading can be executed before you update location so advanced possibilities are still accounted for. Redux integration's API is unchanged but the whole package might be heading for deprecation.SimpleProvideris nowStateProviderwithContext,withLocation,withNavigateall disappeared and are replaced byroutingRouteMapperis nowRouteMapstatehas been renamed tolocationin some places:RoutingProviderandStateProvider's state prop- Signature of
onChangecallback - Return of
matchfunction onRouteMap - It has not changed on
Routeas this is clearly distinct and is generally just part of the whole location.
-
Other breaking:
resolvefunctions now execute in series; results aren't stored in state anymore but they are made available thruresolvedon the onChange handler
- Brand new
routingHOC which provides all the functionality of the old HOCs (but with default parameters acts just likewithLocationused to) Routercomponent is a new function-as-child version ofwithLocation- Recent changes to
Linksupport all the functionality ofwithContextandwithNavigate(i.e. URL serialization, and navigate/redirect) with a function-as-child API.
- Breaking: renamed
componentprop onLinktoelementto be more consistent with PropTypes - Breaking: changed the method signature of onNavigateStart and onNavigateEnd callbacks. They now emit an event object in the form
{ state, path, branch, action }and are now consistent with onNavigateError. - Added
actionto the callback emitted from onNavigateStart/onNavigateEnd/onNavigateError. This will be the action received from thehistorylistener and be one of: PUSH, REPLACE, or POP for actions triggered byhistory, or INITIAL or RELOAD for initial navigation or reloaded routes triggered by JARL. - Fixed nested stringifiers
- Proper implementation of isActive. Now considers the route hierarchy rather than looking purely at the URL -- meaning it will work with partial paths and query strings
- Added a function-as-child API to
<Link>; provideshref,activeandonClickprops so you can render anything that links to a route - Redirect now causes a history.replace() instead of history.push()
- Another big push on documentation
- Upgraded demos site to Webpack 4 / React Hot Loader 4
- Added
sideEffects: falseto package.json, for Webpack 4's "pure module" support - Bug fixes and other minor improvements
- Fixed nested match
- Add a
componentprop to Link to override default anchor rendering
- Fixed the build process for IE11 and other older browsers
- New feature: redirects. Can be triggered from
state,match, orresolveby returning aredirectobject. See examples in demos. - Added a half-decent example to the README
- Now supports
matchandstringifyfunctions on routes. These allow custom transforming both ways between state and URLs, for example converting :year/:month/:day into a Date object and back again - Fix: Removed usage of Object.values due to no support in older browsers and requirement of a polyfill
- Fix: ES5 build was missing a file so imports would fail in some conditions
- Major: official support for query strings (adds dependency on
qsfromhapijs) - Support most of path syntax within query strings, e.g.
/foo?q=:searchTime&bar=(:optionalParam)&*=:rest - Added property to NavigationProvider:
performInitialNavigation - Added property to NavigationProvider:
basePath - Breaking: renamed
withStateHOC towithLocationto avoid naming conflict withrecompose(andstatein general) - New
withContextHOC to get access tostringifyand other functions from the provider - Additional logic can now be added to route matching use
resolveproperty on your routes - Use empty location
{}for default Redux state - NavigationProvider's
routesproperty can now accept an array instead of a RouteMapper - Can now use
resolveon route objects - Allow
pathto be empty on routes; these can be used as containers to apply state, resolvers, query fragments in a grouped fashion; seethemesin thequeryStringsdemo! - Big sort out of the demos! A lot more use cases are now demonstrated and working properly
- Added tests to many things
- Easier integration with and a new demo for Redux
<Provider/>component injarl-react-reduxis a standard integration that will (probably) do what you need- Named matches now automatically run through decodeURIComponent to handle special characters properly
- Correctly reattach to history in CWRP (necessary for React Hot Reload among other things)
- Fix withNavigate's default props mapper
- Breaking: Rename resolve->stringify. Resolve is already an overloaded term in JS. Stringify is much clearer meaning.
- Breaking: Rename withRouting->withNavigate. This HOC only injects a
navigatefunction so the name was confusing - Breaking: Restructured to monorepo design with
lerna. Redux extensions are now in separatejarl-react-reduxpackage - Properly sorted out build targets (CJS, UMD, ES) in both packages
- Better errors on stringification failure to debug state problems
- Add a new withState HOC to inject the current route's state
- Added many tests! Including E2E tests with cypress
- Started writing some proper documentation, updated README a bit
- Switched to custom build of
url-patternto support named wildcards with syntax:/*:name
- Added route matching and path resolution for nested routes
- Don't completely override Link's own onClick handler
- Call onClick handler when Link is clicked (e.g. allowing consumers to call
event.stopPropagation())
- Routes with dynamic path segments now resolve to URLs correctly
- Link now supports string values for
toprop - Add enzyme config and a Link test
- Initial release