@@ -236,12 +236,11 @@ function _renderToString(
236236return EMPTY_STR ;
237237}
238238
239+ let vnodeType = typeof vnode ;
239240// Text VNodes: escape as HTML
240- if ( typeof vnode !== 'object' ) {
241- if ( typeof vnode === 'function' ) return EMPTY_STR ;
242- return typeof vnode === 'string'
243- ?encodeEntities ( vnode )
244- :vnode + EMPTY_STR ;
241+ if ( vnodeType !== 'object' ) {
242+ if ( vnodeType === 'function' ) return EMPTY_STR ;
243+ return vnodeType === 'string' ?encodeEntities ( vnode ) :vnode + EMPTY_STR ;
245244}
246245
247246// Recurse into children / Arrays
@@ -305,7 +304,7 @@ function _renderToString(
305304if ( typeof type === 'function' ) {
306305if ( type === Fragment ) {
307306// Serialized precompiled JSX.
308- if ( props . tpl ) {
307+ if ( ' tpl' in props ) {
309308let out = EMPTY_STR ;
310309for ( let i = 0 ; i < props . tpl . length ; i ++ ) {
311310out = out + props . tpl [ i ] ;
@@ -338,7 +337,7 @@ function _renderToString(
338337}
339338
340339return out ;
341- } else if ( props . UNSTABLE_comment ) {
340+ } else if ( ' UNSTABLE_comment' in props ) {
342341// Fragments are the least used components of core that's why
343342// branching here for comments has the least effect on perf.
344343return (
@@ -402,7 +401,8 @@ function _renderToString(
402401let isTopLevelFragment =
403402rendered != null &&
404403rendered . type === Fragment &&
405- rendered . key == null ;
404+ rendered . key == null &&
405+ ! ( 'tpl' in rendered . props ) ;
406406rendered = isTopLevelFragment ?rendered . props . children :rendered ;
407407
408408try {
@@ -437,7 +437,8 @@ function _renderToString(
437437let isTopLevelFragment =
438438rendered != null &&
439439rendered . type === Fragment &&
440- rendered . key == null ;
440+ rendered . key == null &&
441+ ! ( 'tpl' in rendered . props ) ;
441442rendered = isTopLevelFragment ?rendered . props . children :rendered ;
442443
443444str = _renderToString (
@@ -467,7 +468,7 @@ function _renderToString(
467468rendered != null &&
468469rendered . type === Fragment &&
469470rendered . key == null &&
470- rendered . props . tpl == null ;
471+ ! ( ' tpl' in rendered . props ) ;
471472rendered = isTopLevelFragment ?rendered . props . children :rendered ;
472473
473474try {