All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
rel
prop toLink
component for better SEO.
- Link
params
that starts with__
are no longer considered during path transformations. They can be used as alternatives to query params.
window.__HAS_HYDRATED__
flag, intended for lazy pixels, but which can be used elsewhere.
- Double encoding while generating paths
- CSS conflicts after a hot reload.
- Prefetch does not work when the document has already been loaded.
- Custom callback param to the localesChanged event.
pages
androute
touseRuntime
types definition.
RenderContext
andwithRuntimeContext
exported types definition.
- Use props
children
in slots if slot children is empty.
- Disable hydrate-on-view in the site editor.
- Disable folding in the site editor.
- Fix wrong binding content being loaded with prefetch enabled.
- Fix wrong request when trying to update device blocks with rootPath.
- Fix components conflict check.
- Updates render-session to 1.9.2, which uses the rootPath when calling VTEX ID.
- GraphQL client link and assets for pages served through Janus.
- Fallbacking to
scope: private
on GraphQL queries whenever we miss the queries's map cache.
- GraphQL client link for pages served through Janus.
- Types of
useChildBlock
andChildBlock
.
- Expose CSS classes to SSR.
deviceInfo
touseRuntime
types.- Documentation of render-runtime exports.
amp
,device
,platform
,publicEndpoint
, androute
fromuseRuntime
types.
- Issue where
after
pixels would be "lazy rendered" ifenableLazyFooter
was enabled, which would cause both functional and layout issues.
- Support for
__fold__
blocks inside other blocks.
- Trigger interaction event on
viewDetection
if the user has scrolled the page before JS being initialized.
- Add generic prop typing to
ExtensionPoint
.
- Styles update event not being emitted.
- Exported type of
canUseDOM
. - Add missing fields to type
culture
.
- Exported types.
- Make new realease without the code introduced by version v8.123.0.
src
of lazy images not being updated when thesrc
prop changes.
- Look for
hasContentSchema
to check if a block has a content schema.
- Add the loading bar when redirecting to the checkout.
- Remove sentry (it is not being used anymore).
- Wait async scripts to render error page
- Support for lazy rendering the page footer via
enableLazyFooter
setting.
- Fold inserts empty divs inside the page for spacing, instead of stretching the overall page.
- Fold uses view detection on each concealed block, instead of showing them all at once on scroll.
- Add support to react concurrent mode.
- Async scripts support: wait the execution of the async scripts to start rendering.
- Allows preloading images via the
data-vtex-preload
attribute.
- Run hydrate from apollo cache separately from the React one, reducing total blocking time.
- Fix lazy JSON parse.
- Parse queryData separately.
- Enable loading
__RUNTIME__
lazily.
- Memoize blocks children so they only re-render when props change.
- Blocks for different devices are loaded lazily if the screen resizes to their breakpoints.
- Provides deviceInfo on runtime context.
- Check concatenated styles to decide on downloading new ones.
- Prevents setting querystring values to
undefined
- Prevents setting workspace to
undefined
- Persists workspace set via querystring
- Prevents overriding workspaces already set on
Link
s
- Keeps workspace during navigation if it's set via querystring.
- Updates render-session to 1.9.1, which calls VTEX ID refresh token route before Session.
- Prevents rerendering caused by prefetch initialization
- Simplified image-blinking prevention on partial hydration.
- Fallback to server-side navigation when the new page components conflict with the loaded components.
- Check channelPrivacy to decide on query scope.
unveilhooks
lazysizes plugin, which allows lazyloading background images.
- Upgraded lazysizes.
- Make prefetch be opt in by turning on vtex.store setting
enablePrefetch
.
- Images on
before
andafter
(i.e. header and footer) are loaded lazily.
- Implement promise queue and finish prefetch.
- Change uncritical styles injection strategy.
- Adds
appSettings
prop to blocks that have their settings exposed on__RUNTIME__
.
- Issue where an infinite loading would happen when navigating to 404 pages.
- Prevent setQuery method from ever changing the current path when calling navigate.
- On navigation, don't preprend rootpath if destination is to a path that already starts with rootpath.
- Stop overriding native Intl now we have full-icu on nodejs.
- Use our own LRUCache implementation to avoid issues with ie11.
- Replace
url
module import with nativewindow.URL
imeplementation.
- Turn prefetch OFF for now.
- Prefetch logic, hooks and context.
- Issue with Apollo Devtools turning up blank.
- Issue that would cause React to not run hydration on some (mostly old) browsers.
- Adapt tachyons hot reload for multiple links in document.
- Let runtime to be used inside an iframe.
- Avoid phantom cached query strings
- PersistedQueryNotFoundError
- Adds query to request when persisted query is not found to avoid PersistedQueryNotFoundError from graphql-server
- Uses POST on those requests
- Throws error in development when persisted query is not found
- Always use POST in b2b scenarios
- Expose
useExperimentalLazyImagesContext
- Issue where partial hydration content below regular
__fold__
would be loaded immediately.
- Update render-session: fix malfomed session URL.
useRuntime
atreact/components/
folder so it's types are generated.
- Issue where components optimised for partial hydration wouldn't appear on the CMS.
- Fix critical style querySelector.
- Handle uncritical assets loading.
- Issue where it would try to load a missing Extension on navigation.
- Partial hydration for top-level components that have their
hydration
value set toon-view
.
- Extension loading moved from ExtensionPointComponent to ComponentLoader, with separate components for sync and async component loading.
- Site editor is not rendering some blocks due to the fold block.
- Removes sentry from externals.json so this asset isn't rendered to the browser
- Prop
preventRemount
on navigation.
- Update
prop-types
to^16.7.2
.
- Revert page remounting temporarily (introduced in versions 8.91.3 and 8.91.5) due to bugs in edge cases.
ExperimentalLazyImages
component- Support for
__fold__.experimentalLazyImages
block.
- Block inspector when
__inspect
flag is enabled.
- Issue caused by the page remount fix on admin pages, where it wouldn't update properly on client side rendering.
- Link not working with
target
different from the default value.
- Issue where page wouldn't remount if params changed within the same page.
- Replace vteximg.com.br to vtexassets.com is possible.
- Fetch assets from 'vtexassets.com".
- Always set
vtex_binding_address
cookie. This should fix some binding switching issues.
- Prevent running
history.replace
on hydration if it's not needed, improving performance slightly.
- Allowing the
extensions
argument fromfetchComponents
to be optional. - Exposing the
fetchComponents
function to the RenderProvider.
replace
prop to theLink
component.
- Returning an array with
undefined
to be rendered with apps that were rebuilt.
- Better binding switch handling
renderWhileLoading
option towithSession
- Accumulate messages on RenderProvider state.
- Prevent current page remount when performing a navigation
- Added protection for multiple continuous navigates in RenderProvider that would cause crashes when redering components.
- Types for
Link
props
- Early fetch only components in extensions.
- Fetch all components assets as you navigate.
- Bindings support
- Bump
vtex.render-session
version to 1.7.0.
- store URL normalisation logic
- navigation route normalisation hook that could be used by store
- Case when only one polyfill was imported and promise would never resolve.
- Upgrade
react-intl
to major 3.x. Do our best to prevent breaking changes.
- Support for CSS styles overrides hot reload.
- Support for Tachyons hot reload.
- Preview skeleton's animation velocity and colors contrast.
- Add client-side query to RUNTIME
- Prevents
preview
of typetext
from falling back tobox
ifwidth
is not defined.
- Remove
paragraph
preview option, since it became obsolete.
- Export LoadingContext component, to allow data fetchers display a loading status while the data is being loaded.
- LoadingWrapper to LayoutContainer, which displays a loading status while the components are being loaded.
- ExtensionPointComponent content is not rendered while the component is being loaded.
- Uses a loading bar at the top of the page in lieu of an entire-page loader while the layout info is being loaded
- Preview now uses a CSS-based implementation.
- Revert the revert adding back the session ensurance for /segment and /private routes
- Fixed query split race condition with shared pointer
- Fix component's CSS being added after overrides.
- Remove Sentry
- Fix route class renaming when navigating with render.
- Stop using
Consumer
in HOC that inject props, use hooks instead.
- Add code to use vtexassets.com as image host. But it is disabled for now.
- Fix breaking change in react-apollo@3.x.
- Upgraded
react-apollo
to 3.x major.
- Fix issue with flexible search-page not showing when render-runtime is linked.
- Change
render-container
route class upon navigation.
- Issue when client-side navigation added a
?
to the path inRenderProvider
's state, makingupdateRuntime
not work as expected.
- Support for special links
mailto:
andtel:
to the<Link />
component.
- Allow registering lazy entrypoints
- Add
contentId
to opened extensions
- Improved navigation preview
- Update react from 16.8.6 to 16.9.0.
- Do not prefetch pages if no pages were prefetched 🙃
- Bump
render-session
.
- Pass flag
disableSSQ
to AMP render.
- Register react-amphtml global mocks that throw an explicitly error when trying to use AMP components on client-side or out of a
runtime.amp
check.
- Stop bundling
react-amphtml
into index entrypoint.
- Return
platform
onruntime
.
- Fix preview in navigation by using a generic preview component
- Support for
__fold__
blocks, to be able to set what lies "below the fold".
- Support for rendering AMP pages.
- Fix the 'only lowercase URL segments for
store
' modification.
- Only lowercase URL segments for
store
.
- Lowercase URL segments if they are not related to a
specificationFilter
.
- Stop encoding query.
- Initialize SSE in dev workspaces.
- Hot reload for blocks.
- Add loading animation for client blocks.
- Navigating back crashes if the server-side page was fetched with some querystring.
- Navigation bug of invalid fetch use
- Adds fetch to render provider
- Fix navigation skipping fetchNavigationPage
- Prevent the so-called accordion effect on root ExtensionPoints.
- Properly memo TreePathContextProvider.
- Adds 100% of navigation to render server
- Add 50% of users to render navigation
- Deprecate render navigation due to bad CDN configuration
- Fix bundled assets discovery.
- Increase number of users to 50 navigating using render server
- Pool to prefetch pages
- Delay to execute prefetch pages
- Add querystring
__disablePrefetchPages
- Prepare to use comma instead of semicolon as bundle files separator
- Temporarily reverted changes made in #370 (8.46.0) because of problems rendering pages in IE11.
- Lint errors
- Husky to prevent commits with lint errors
- Support to assets bundle
- Locale as a querystring on final request URI
- Support for rendering AMP pages.
- Prevent extensions overwriting after an
updateRuntime
- undefined@undefined in Apollo cache
- Add displayName to ErrorBoundary HOC.
- Added error boundaries on the ExtensionPoint component, limiting crashes to the component instead of breaking most of the page.
- Hide errors on production mode.
- Enhanced
NoSSR
detection.
- Add support for GraphQL
Unions
andInterfaces
in ApolloClient's cache. This is done by usingIntrospectionFragmentMatcher
instead ofHeuristicFragmentMatcher
(https://www.apollographql.com/docs/react/advanced/fragments/).
- Separate admin language from store language
ExtensionPoint
render is interrupted earlier if no extension is found, and refrains from renderingExtensionPointComponent
if so.
Loading
gets its block props from context again, thus fixing issue where it wouldn't appear if inserted on a component.
- Omit
/app/
in href for links inside iframe.
- Fix issue where client-only blocks would render under the wrong parent element.
- Add rootPath to navigate options
- Revert behaviour introduced in 8.36.1 regarding templates from
maps
. It now gets the template from the first parameter of themap
query string.
- Context props passed by
MaybeContext
.
- Warning of deprecated import of
createBrowserHistory
ofhistory
library.
- Reduce number of
Context
created byExtensionPoint
to improve mount time.
- Fix canonical replacement using rootPath
useSSR
hook, as a counterpart for theNoSSR
component.phone
on the RenderHints type.
- Use internal
NoSSR
component logic instead of using thereact-no-ssr
package.
- Pass
block.title
to extensions.
- Support for optional parameters in routes containing
map
- Add hasContentSchema information to extensions
- Width of the Preview component under the adjusted store wrapper.
- Hash navigation in Link component.
- Refrain from rendering Preview if its height is 0.
- Build assets with new builder hub.
- Change routing precedence algorithm to match the server-side one.
- Avoid recreating React elements when block has composition children.
- Upgrade react-apollo, apollo-client and apollo-cache-inmemory
- Strategy to unpack compressed
pages-graphql
extensions
- Prevent graphQLErrorsStore from swallowing up errors when exception is undefined
- Revert setting
data-src
and removingsrc
for every image (but continue supporting lazysizes as opt-in).
- Sets every URI scope to
private
whenever the workspace's root interface declarer has arequiresAuthorization
setting with valuetrue
.
- Fix data-src attribute for lazy image loading.
- Remove negative values for preview width and height.
- Fix navigation to a URL that have a search term as the first path, followed by the subcategory paths.
- Support for lazy loading of images using lazysizes
- Defer render start for quicker onload
- Make it possible to have a link with attribute
rel="noopener nofollow"
.
- Error of trying to setState in a unmounted component.
- Upgrades render-session
- Change BuildStatus animation from SMIL-based to CSS-based, for performance.
- Downgraded
query-string
to version 5.x, for IE11 support. (https://www.npmjs.com/package/query-string#install)
- Add skipCache to updateRuntime
- Removed replaceExtensionsWithDefault on page change.
- Error when img
src
attribute isn't a string.
- Link to catch GraphQL errors, store and show them when a component crashes.
- Sending
domain
andpage
to Sentry as tags.
- Hide some runtime keys before sending it to Sentry.
- Broke the runtime extra sent to Sentry into smaller
runtime.${key}
extras. - Inlined sentry config to remove one file from pages fetching phase.
- Global typings.
- scopeMessages.
- Support metatags for custom routes.
- Method to add messages to Runtime (
addMessages
). addMessages
andmessages
to Render context.
sendInfoFromIframe
signature.updateExtension
andupdateRuntime
now await forsetState
to be finished.
RenderProvider
'supdateMessages
private method.sendInfoFromIframe
's 4th argument (setMessages
).
- Fixed
paramsJSON
when refetching page due toupdateRuntime
.
- Linting errors.
- Use
?map
to do route matching. - Add first class support to canonical routes.
- Scope messages.
- Extracted query params from
to
path, for the query object.
- Checks for invalid params in route and throws a warning.
- Added preview support for top-level blocks.
- Added support for
rootPath
property in runtime, which causes links and navigation to be scoped by a prefix (e.g. when serving your store from a specific path in a domain). See https://github.com/vtex/render-root-path-example
- Template blocks can now configure their context providers.
- Export useTreePath hook.
- Updated React packages to version 16.8.6
- Support for
scrollOptions
onsetQuery
.
- Removing
navigationRoute
check for the back button functionality.
- Allow hash on direct children regexp
- Export ChildBlock and useChildBlock APIs, without unstable flag.
- ChildBlock now returns the props of the block, inserted via the
blocks.json
file. - Send props inserted via the
blocks.json
file to theprops
object of each child (whencomposition
is set tochildren
). - Export Block component, which is an alias of the ExtensionPoint component, and is now the preferred nomenclature.
- Unstable__ChildBlock and useChildBlock__unstable.
- ExtensionPoint component--prefer using the Block component, which has exactly the same API and functionality.
- Update vtex-tachyons to 3.1.0
- Make the query string part of the
href
in Render's Link component.
- Support for
replace
option in setQuery for using that method in navigation.
- Add setQuery method for changing query string without remounting.
- Changed from
unstable__layoutMode
tocomposition
.
- Add support to disable user blocks QueryString
disableUserLand
ExtensionPoint
now does a deep merge of props.
- Add experimental features
useChildBlock__unstable
andUnstable__ChildBlock
. It allows checking whether a child block was included or not.
- Added support for
unstable__layoutMode
.
TrackEventsWrapper
to add event listener based in track field of interface
- Change ErrorPage component to use CSS Modules
- Update Apollo Client and React Apollo.
- Fixed bug where functions would be wrapped around components on HMR, thus losing the ability to be called.
- Removed default spinners when the component is loading
- Improve error page with json viewer and remove crazy red box
- Avoid feching navigation data if route declares
allowConditions: false
- Stop creating
<span>
when using react intl's<FormattedMessage>
- React version from v16.8.0 to v16.8.3
- query to Render Runtime Context.
- Fix initial history replacement
- Update
pageContext
on navigation - Extension now has a content field that is merged with block component props.
- Add
renderExtension
function to render runtime
- Escaping string that is used to make dynamic Regex in
isDirectChild
.
- Check if
props.style
iswritable
before assigning
LayoutContainer
now gets elements to be rendered fromblocks
directly.
replace
option to usehistory
's replace instead ofpush
.
goBack
method to the provided context.
- RC external script.
- Add support to React Hooks
- Create hook
useRuntime
.
- Props
query
andparams
not being passed tobefore
andafter
blocks.
MaybeAuth
component.
- Apollo Link State support.
- Loading svg is loaded by Icon Pack.
- Change position of the building indicator when it is hovered.
- Add the
crossOrigin
attribute only to img tags with src from vteximg.
- Get context as extension property instead of
__context
. - Add wrappers when loading preview
- Now, import from
render
isvtex.render-runtime
.
- Adapt to use new blocks language to build pages.
- Remove support to legacy extensions.
- Remove support for old pages protocol.
- Unable to render multiple instances of the same component when navigating client-side.
- Stop doing CORS for every image.
- Upgraded vtex-render-session to fix error messages.
- Add the
crossOrigin
attribute to preload scripts/styles too.
- Add the
crossOrigin
attribute to scripts added to the page.
- Removed invalid property on anchor tag.
- Changes graphql routing pattern from
/graphql/public
to/public/graphql
- Add again the
crossorigin
attribute now that the store service worker cleans old opaque responses.
- Remove crossOrigin attribute from img
- Add the
crossorigin
attribute to theimg
tags with absolute source path
- Session related functions as runtime externals check this repo
- Fix workspace not being passed when changing url host to vteximg
- Upgrade vtex-tachyons to 2.10.0, to include size tokens
- Update React & React DOM to
v16.6.1
. - Defer rc script to avoid blocking assets (last one!).
- Fetch components assets from
vteximg
. - Make sure links with target="_blank" have rel="noopener"
- Add
baseElementId
to navigate to allow scroll relative to an element.
- Avoid
MaybeAuth
navigate to the login page when it is already navigating to it.
RenderProvider
- Add
this.sendInfoFromIframe
call tosetState
callbacks after locale update.
RenderProvider#getCustomMessage
- Considers
WrappedComponent
when getting custom message.
- Considers
- Avoid making prefetch of a page that doesn't exist.
- Infinity calls when using
fetchWithRetry
ininitializeSession
andpatchSession
.
- Update
MaybeAuth
to work just by the session.
- Allow route change to clear components errors.
- Uses cacheId to cache
- Fix link props being directly passed to
a
tag.
- Auth treatment and redirect to the login page.
- Loading component to Render Exports
- Remove support for root extension without component.
- Fix sorting direct children with numeric values.