Notes
-
Next 12.2 brought some significant changes to script insertion behavior / ISR that break the lib in certain cases with prior versions
-
All routes with
getServerSidePropshave to be wrapped withgsspWithNonceAppliedToCspfrom now on for Nonce-based CSP to work -
Only Next >= 12.2 is supported by this lib from now on
Minor Changes
-
#47
071f993Thanks @nibtime! - providegsspWithNonceAppliedToCspandgipWithNonceAppliedToCspwrappers to inject nonce into pages withgetServerSideProps/getInitialProps.BREAKING CHANGE: nonce doesn't get applied to CSP automatically anymore. This extra step is neccessary
as there is no longer a way of reliably do that with Next 12.2.BREAKING CHANGE: drop
enhanceAppWithNonce, it's no longer needed as nonce is injected thoughgetServerSidePropsof routes/pages now. That's actually a good thing, because customizingrenderPageis discouranged -
#47
f9ecbe3Thanks @nibtime! - 💥 changes toChainableMiddlewaredecrease resource utilization (fixes #45)- new
MiddlewareChainContextinterface
perf: decrease CPU utilization
- use
ctx.cache.getandctx.cache.setfor caching CSP in middleware chain (no serialize/deserialize) - write to repsonse only once from chain cache at the end
- remove unnecessary some double ops
perf: decrease deployed size
- use new built-in
userAgentfromnext/server
BREAKING CHANGE: supports only Stable middleware from now on (needs
next >= 12.2, as is specified in peerDeps)BREAKING CHANGE: replace
ua-parser-jswithuserAgentfromnext/serveravailable since12.2BREAKING CHANGE:
ChainableMiddlewarewith(ctx: MiddlewareChainContext)as 3rd parameter.BREAKING CHANGE: turn positional params into named params for
Configinitializer - new
Patch Changes
-
#47
f9ecbe3Thanks @nibtime! - fix(document): useanytype (children and return value) for components ofprovideComponents(fixes #46) -
#47
071f993Thanks @nibtime! - fix(document): support new script insertion behavior- handle
getPreloadDynamicChunksandgetPreloadMainLinksin<Head> - hash
beforeInteractiveInlineScriptsin<Head> - handle scripts also in drop-in component for
<NextScript> - trustify scripts in
initialProps.head
- handle
-
#47
071f993Thanks @nibtime! - fix(document): prevent application of nonce in production builds (fixes #49) -
#47
f9ecbe3Thanks @nibtime! - provide base logical operators for chain matchers (request predicates):matchNot,matchAnd,matchOr -
#47
071f993Thanks @nibtime! - fix(strictDynamic): exclude Safari from Hash-based Strict CSP- the problem is probably that Safari isn't truly CSP-3 compliant yet, like Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1409200.
strict-dynamicseems to mess up SRI validation there.
- the problem is probably that Safari isn't truly CSP-3 compliant yet, like Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1409200.
-
#47
071f993Thanks @nibtime! - fix: considerbasePathfromnext.config.jsfor writing and fetching hashes (fixes #48) -
#47
f9ecbe3Thanks @nibtime! - fix: betterisPageRequestmatcher- exclude only basepaths
/_nextand/api - exclude all paths with file endings
- exclude
isPreviewModeRequestandisNextJsDataRequest(new matchers)
- exclude only basepaths
-
#47
071f993Thanks @nibtime! - perf(middleware):telemetrywrapper to log basic measurements and infos from middleware execution -
#47
f9ecbe3Thanks @nibtime! - fix(csp): handle boolean directives correctly