- Minor fix to avoid mangling URLs in some contexts
- Started testing React Native integration
- Interim release to get this working
- Fix: Got
active
working 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
resolve
objects. They are now available via therouting
HOC or theRouter
FaC, alongside thelocation
props - 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-native
brings 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!)
NavigationProvider
is nowRoutingProvider
performInitialNavigation
->performInitialRouting
onNavigateStart
andonNavigateEnd
are 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.SimpleProvider
is nowStateProvider
withContext
,withLocation
,withNavigate
all disappeared and are replaced byrouting
RouteMapper
is nowRouteMap
state
has been renamed tolocation
in some places:RoutingProvider
andStateProvider
's state prop- Signature of
onChange
callback - Return of
match
function onRouteMap
- It has not changed on
Route
as this is clearly distinct and is generally just part of the whole location.
-
Other breaking:
resolve
functions now execute in series; results aren't stored in state anymore but they are made available thruresolved
on the onChange handler
- Brand new
routing
HOC which provides all the functionality of the old HOCs (but with default parameters acts just likewithLocation
used to) Router
component is a new function-as-child version ofwithLocation
- Recent changes to
Link
support all the functionality ofwithContext
andwithNavigate
(i.e. URL serialization, and navigate/redirect) with a function-as-child API.
- Breaking: renamed
component
prop onLink
toelement
to 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
action
to the callback emitted from onNavigateStart/onNavigateEnd/onNavigateError. This will be the action received from thehistory
listener 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
,active
andonClick
props 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: false
to package.json, for Webpack 4's "pure module" support - Bug fixes and other minor improvements
- Fixed nested match
- Add a
component
prop 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
, orresolve
by returning aredirect
object. See examples in demos. - Added a half-decent example to the README
- Now supports
match
andstringify
functions 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
qs
fromhapijs
) - 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
withState
HOC towithLocation
to avoid naming conflict withrecompose
(andstate
in general) - New
withContext
HOC to get access tostringify
and other functions from the provider - Additional logic can now be added to route matching use
resolve
property on your routes - Use empty location
{}
for default Redux state - NavigationProvider's
routes
property can now accept an array instead of a RouteMapper - Can now use
resolve
on route objects - Allow
path
to be empty on routes; these can be used as containers to apply state, resolvers, query fragments in a grouped fashion; seethemes
in thequeryStrings
demo! - 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-redux
is 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
navigate
function so the name was confusing - Breaking: Restructured to monorepo design with
lerna
. Redux extensions are now in separatejarl-react-redux
package - 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-pattern
to 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
to
prop - Add enzyme config and a Link test
- Initial release