diff --git a/packages/router-plugin/src/core/code-splitter/compilers.ts b/packages/router-plugin/src/core/code-splitter/compilers.ts index dbd24293bc6..5c2da5d3907 100644 --- a/packages/router-plugin/src/core/code-splitter/compilers.ts +++ b/packages/router-plugin/src/core/code-splitter/compilers.ts @@ -112,7 +112,7 @@ export function compileCodeSplitReferenceRoute( id: string addHmr?: boolean }, -): GeneratorResult { +): GeneratorResult | null { const ast = parseAst(opts) const refIdents = findReferencedIdentifiers(ast) @@ -132,6 +132,7 @@ export function compileCodeSplitReferenceRoute( let createRouteFn: string + let modified = false as boolean babel.traverse(ast, { Program: { enter(programPath) { @@ -170,6 +171,7 @@ export function compileCodeSplitReferenceRoute( if (t.isObjectProperty(prop)) { if (t.isIdentifier(prop.key)) { if (opts.deleteNodes!.has(prop.key.name as any)) { + modified = true return false } } @@ -181,6 +183,7 @@ export function compileCodeSplitReferenceRoute( if (!splittableCreateRouteFns.includes(createRouteFn)) { // we can't split this route but we still add HMR handling if enabled if (opts.addHmr) { + modified = true programPath.pushContainer('body', routeHmrStatement) } // exit traversal so this route is not split @@ -268,6 +271,8 @@ export function compileCodeSplitReferenceRoute( return } + modified = true + // Prepend the import statement to the program along with the importer function // Check to see if lazyRouteComponent is already imported before attempting // to import it again @@ -305,9 +310,8 @@ export function compileCodeSplitReferenceRoute( if (opts.addHmr) { programPath.pushContainer('body', routeHmrStatement) } - } - - if (splitNodeMeta.splitStrategy === 'lazyFn') { + } else { + // if (splitNodeMeta.splitStrategy === 'lazyFn') { const value = prop.value let shouldSplit = true @@ -339,6 +343,7 @@ export function compileCodeSplitReferenceRoute( if (!shouldSplit) { return } + modified = true // Prepend the import statement to the program along with the importer function if (!hasImportedOrDefinedIdentifier(LAZY_FN_IDENT)) { @@ -404,6 +409,7 @@ export function compileCodeSplitReferenceRoute( * specifiers */ if (removableImportPaths.size > 0) { + modified = true programPath.traverse({ ImportDeclaration(path) { if (path.node.specifiers.length > 0) return @@ -417,6 +423,9 @@ export function compileCodeSplitReferenceRoute( }, }) + if (!modified) { + return null + } deadCodeElimination(ast, refIdents) // if there are exported identifiers, then we need to add a warning diff --git a/packages/router-plugin/src/core/router-code-splitter-plugin.ts b/packages/router-plugin/src/core/router-code-splitter-plugin.ts index 325fc3a2d53..2fe2af28b37 100644 --- a/packages/router-plugin/src/core/router-code-splitter-plugin.ts +++ b/packages/router-plugin/src/core/router-code-splitter-plugin.ts @@ -138,6 +138,14 @@ export const unpluginRouterCodeSplitterFactory: UnpluginFactory< (userConfig.codeSplittingOptions?.addHmr ?? true) && !isProduction, }) + if (compiledReferenceRoute === null) { + if (debug) { + console.info( + `No changes made to route "${id}", skipping code-splitting.`, + ) + } + return null + } if (debug) { logDiff(code, compiledReferenceRoute.code) console.log('Output:\n', compiledReferenceRoute.code + '\n\n') diff --git a/packages/router-plugin/tests/add-hmr.test.ts b/packages/router-plugin/tests/add-hmr.test.ts index f5f28ca5fca..893b65d9c61 100644 --- a/packages/router-plugin/tests/add-hmr.test.ts +++ b/packages/router-plugin/tests/add-hmr.test.ts @@ -32,7 +32,7 @@ describe('add-hmr works', () => { targetFramework: framework, }) - await expect(compileResult.code).toMatchFileSnapshot( + await expect(compileResult?.code || code).toMatchFileSnapshot( path.join(dirs.snapshots, filename.replace('.tsx', '@true.tsx')), ) }, @@ -53,7 +53,7 @@ describe('add-hmr works', () => { targetFramework: framework, }) - await expect(compileResult.code).toMatchFileSnapshot( + await expect(compileResult?.code || code).toMatchFileSnapshot( path.join(dirs.snapshots, filename.replace('.tsx', '@false.tsx')), ) }, diff --git a/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@false.tsx b/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@false.tsx index 858c5c0e051..d80f17484f8 100644 --- a/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@false.tsx +++ b/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@false.tsx @@ -1,11 +1,11 @@ -import thing from 'thing'; +import thing from 'thing' + export function test() { const { foo: { - bar: { - destructured - } - } - } = thing; - return destructured; -} \ No newline at end of file + bar: { destructured }, + }, + } = thing + + return destructured +} diff --git a/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@true.tsx b/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@true.tsx index 858c5c0e051..d80f17484f8 100644 --- a/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@true.tsx +++ b/packages/router-plugin/tests/add-hmr/snapshots/react/destructuring@true.tsx @@ -1,11 +1,11 @@ -import thing from 'thing'; +import thing from 'thing' + export function test() { const { foo: { - bar: { - destructured - } - } - } = thing; - return destructured; -} \ No newline at end of file + bar: { destructured }, + }, + } = thing + + return destructured +} diff --git a/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@false.tsx b/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@false.tsx index b4d1f917199..4fdd9d1c686 100644 --- a/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@false.tsx +++ b/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@false.tsx @@ -1,5 +1,6 @@ -import React from 'react'; -import { createFileRoute } from '@tanstack/react-router'; +import React from 'react' +import { createFileRoute } from '@tanstack/react-router' + export const Route = createFileRoute('/')({ - component: undefined -}); \ No newline at end of file + component: undefined, +}) diff --git a/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@true.tsx b/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@true.tsx index b4d1f917199..4fdd9d1c686 100644 --- a/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@true.tsx +++ b/packages/router-plugin/tests/add-hmr/snapshots/react/explicit-undefined-component@true.tsx @@ -1,5 +1,6 @@ -import React from 'react'; -import { createFileRoute } from '@tanstack/react-router'; +import React from 'react' +import { createFileRoute } from '@tanstack/react-router' + export const Route = createFileRoute('/')({ - component: undefined -}); \ No newline at end of file + component: undefined, +}) diff --git a/packages/router-plugin/tests/code-splitter.test.ts b/packages/router-plugin/tests/code-splitter.test.ts index 6992f3be8a7..6edf37b5f12 100644 --- a/packages/router-plugin/tests/code-splitter.test.ts +++ b/packages/router-plugin/tests/code-splitter.test.ts @@ -67,7 +67,7 @@ describe('code-splitter works', () => { targetFramework: framework, }) - await expect(compileResult.code).toMatchFileSnapshot( + await expect(compileResult?.code || code).toMatchFileSnapshot( path.join(dirs.snapshots, groupName, filename), ) }, diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/destructuring.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/destructuring.tsx index 858c5c0e051..d80f17484f8 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/destructuring.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/destructuring.tsx @@ -1,11 +1,11 @@ -import thing from 'thing'; +import thing from 'thing' + export function test() { const { foo: { - bar: { - destructured - } - } - } = thing; - return destructured; -} \ No newline at end of file + bar: { destructured }, + }, + } = thing + + return destructured +} diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/explicit-undefined-component.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/explicit-undefined-component.tsx index b4d1f917199..4fdd9d1c686 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/explicit-undefined-component.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/explicit-undefined-component.tsx @@ -1,5 +1,6 @@ -import React from 'react'; -import { createFileRoute } from '@tanstack/react-router'; +import React from 'react' +import { createFileRoute } from '@tanstack/react-router' + export const Route = createFileRoute('/')({ - component: undefined -}); \ No newline at end of file + component: undefined, +}) diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/export-default-component.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/export-default-component.tsx index d67a3dbaca3..c5198b9e004 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/export-default-component.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/export-default-component.tsx @@ -1,12 +1,16 @@ -console.warn("[tanstack-router] These exports from \"export-default-component.tsx\" will not be code-split and will increase your bundle size:\n- Home\nFor the best optimization, these items should either have their export statements removed, or be imported from another location that is not a route file."); -import React, { useState } from 'react'; -import { createFileRoute } from '@tanstack/react-router'; +import React, { useState } from 'react' +import { createFileRoute } from '@tanstack/react-router' + export const Route = createFileRoute('/home')({ - component: Home -}); + component: Home, +}) + export default function Home() { - const [one, setOne] = useState('this is from a state'); - return
+ const [one, setOne] = useState('this is from a state') + + return ( +

{one}

-
; -} \ No newline at end of file +
+ ) +} diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/function-as-parameter.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/function-as-parameter.tsx index 23e2cd0f036..3ae9710cd56 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/function-as-parameter.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/function-as-parameter.tsx @@ -1,20 +1,29 @@ -import * as React from 'react'; +import * as React from 'react' // @ts-expect-error -import { useMemo } from 'tan-react'; -const useUsedVar = 'i-am-unused'; +import { useMemo } from 'tan-react' + +const useUsedVar = 'i-am-unused' + const ReactUseMemoCall1 = React.useMemo(function performAction() { - return 'true'; -}, []); -console.info(ReactUseMemoCall1); + return 'true' +}, []) + +console.info(ReactUseMemoCall1) + const ReactUseMemoCall2 = React.useMemo(() => { - return 'true'; -}, []); -console.info(ReactUseMemoCall2); + return 'true' +}, []) + +console.info(ReactUseMemoCall2) + const UseMemoCall1 = useMemo(function performAction() { - return 'true'; -}, []); -console.info(UseMemoCall1); + return 'true' +}, []) + +console.info(UseMemoCall1) + const UseMemoCall2 = useMemo(() => { - return 'true'; -}, []); -console.info(UseMemoCall2); \ No newline at end of file + return 'true' +}, []) + +console.info(UseMemoCall2) diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-export-component.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-export-component.tsx index 4f20ac984bf..1ae234de6f6 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-export-component.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-export-component.tsx @@ -1,12 +1,14 @@ -console.warn("[tanstack-router] These exports from \"retain-export-component.tsx\" will not be code-split and will increase your bundle size:\n- Layout\nFor the best optimization, these items should either have their export statements removed, or be imported from another location that is not a route file."); -import * as React from 'react'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { importedComponent as ImportedComponent, importedLoader } from '../../shared/imported'; +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../../shared/imported' + export function Layout() { - return
-
+ return ( +
+
-
; +
+ ) } + export const Route = createFileRoute('/_layout')({ component: Layout, - loader: importedLoader -}); -const HEADER_HEIGHT = '63px'; -export const SIDEBAR_WIDTH = '150px'; -const SIDEBAR_MINI_WIDTH = '80px'; -const ASIDE_WIDTH = '250px'; \ No newline at end of file + loader: importedLoader, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-const.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-const.tsx index b1d2434c9b1..f256b01a83b 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-const.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-const.tsx @@ -1,15 +1,18 @@ -console.warn("[tanstack-router] These exports from \"retain-exports-const.tsx\" will not be code-split and will increase your bundle size:\n- Layout\nFor the best optimization, these items should either have their export statements removed, or be imported from another location that is not a route file."); -import * as React from 'react'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { importedComponent as ImportedComponent, importedLoader } from '../../shared/imported'; +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../../shared/imported' + export const loaderFn = () => { - return importedLoader(); -}; + return importedLoader() +} + const Layout = () => { - return
-
+ return ( +
+
-
; -}; +
+ ) +} + export const Route = createFileRoute('/_layout')({ component: Layout, - loader: loaderFn -}); -const HEADER_HEIGHT = '63px'; -export const SIDEBAR_WIDTH = '150px'; -export const SIDEBAR_MINI_WIDTH = '80px'; -const ASIDE_WIDTH = '250px'; -export default Layout; \ No newline at end of file + loader: loaderFn, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +export const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' + +export default Layout diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-function.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-function.tsx index 81a037d6d67..298c388e650 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-function.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/retain-exports-function.tsx @@ -1,15 +1,18 @@ -console.warn("[tanstack-router] These exports from \"retain-exports-function.tsx\" will not be code-split and will increase your bundle size:\n- Layout\nFor the best optimization, these items should either have their export statements removed, or be imported from another location that is not a route file."); -import * as React from 'react'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { importedComponent as ImportedComponent, importedLoader } from '../../shared/imported'; +import * as React from 'react' +import { createFileRoute, Outlet } from '@tanstack/react-router' +import { + importedComponent as ImportedComponent, + importedLoader, +} from '../../shared/imported' + export function loaderFn() { - return importedLoader(); + return importedLoader() } + function Layout() { - return
-
+ return ( +
+
-
; +
+ ) } + export const Route = createFileRoute('/_layout')({ component: Layout, - loader: loaderFn -}); -const HEADER_HEIGHT = '63px'; -export const SIDEBAR_WIDTH = '150px'; -export const SIDEBAR_MINI_WIDTH = '80px'; -const ASIDE_WIDTH = '250px'; -export default Layout; \ No newline at end of file + loader: loaderFn, +}) + +const HEADER_HEIGHT = '63px' +export const SIDEBAR_WIDTH = '150px' +export const SIDEBAR_MINI_WIDTH = '80px' +const ASIDE_WIDTH = '250px' + +export default Layout diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/undefined-literals.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/undefined-literals.tsx index 1491ba7c3a7..0c6e4f01aa9 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/undefined-literals.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/undefined-literals.tsx @@ -1,7 +1,8 @@ -import { createFileRoute } from '@tanstack/react-router'; +import { createFileRoute } from '@tanstack/react-router' + export const Route = createFileRoute('/undefined-test')({ component: undefined, errorComponent: undefined, pendingComponent: undefined, - notFoundComponent: undefined -}); \ No newline at end of file + notFoundComponent: undefined, +}) diff --git a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/useStateDestructure.tsx b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/useStateDestructure.tsx index 5ca9e1f339e..8f79e69bf03 100644 --- a/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/useStateDestructure.tsx +++ b/packages/router-plugin/tests/code-splitter/snapshots/react/1-default/useStateDestructure.tsx @@ -1,121 +1,163 @@ -console.warn("[tanstack-router] These exports from \"useStateDestructure.tsx\" will not be code-split and will increase your bundle size:\n- VersionIndex\nFor the best optimization, these items should either have their export statements removed, or be imported from another location that is not a route file."); -import * as React from 'react'; -import { CgCornerUpLeft, CgSpinner } from 'react-icons/cg'; -import { FaBolt, FaBook, FaCheckCircle, FaCogs, FaDiscord, FaGithub, FaTshirt, FaTwitter } from 'react-icons/fa'; -import { Await, Link, getRouteApi } from '@tanstack/react-router'; -import { Carbon } from '~/components/Carbon'; -import { Footer } from '~/components/Footer'; -import { VscPreview, VscWand } from 'react-icons/vsc'; -import { TbHeartHandshake } from 'react-icons/tb'; -import SponsorPack from '~/components/SponsorPack'; -import { startProject } from '~/projects/start'; -import { createFileRoute } from '@tanstack/react-router'; -import { Framework, getBranch } from '~/projects'; -import { seo } from '~/utils/seo'; -const menu = [{ - label:
+import * as React from 'react' + +import { CgCornerUpLeft, CgSpinner } from 'react-icons/cg' +import { + FaBolt, + FaBook, + FaCheckCircle, + FaCogs, + FaDiscord, + FaGithub, + FaTshirt, + FaTwitter, +} from 'react-icons/fa' +import { Await, Link, getRouteApi } from '@tanstack/react-router' +import { Carbon } from '~/components/Carbon' +import { Footer } from '~/components/Footer' +import { VscPreview, VscWand } from 'react-icons/vsc' +import { TbHeartHandshake } from 'react-icons/tb' +import SponsorPack from '~/components/SponsorPack' +import { startProject } from '~/projects/start' +import { createFileRoute } from '@tanstack/react-router' +import { Framework, getBranch } from '~/projects' +import { seo } from '~/utils/seo' + +const menu = [ + { + label: ( +
TanStack -
, - to: '/' -}, -// { -// label: ( -//
-// Examples -//
-// ), -// to: './docs/react/examples/basic', -// }, -// { -// label: ( -//
-// Docs -//
-// ), -// to: './docs/', -// }, -// { -// label: ( -//
-// GitHub -//
-// ), -// to: `https://github.com/${startProject.repo}`, -// }, -{ - label:
+
+ ), + to: '/', + }, + // { + // label: ( + //
+ // Examples + //
+ // ), + // to: './docs/react/examples/basic', + // }, + // { + // label: ( + //
+ // Docs + //
+ // ), + // to: './docs/', + // }, + // { + // label: ( + //
+ // GitHub + //
+ // ), + // to: `https://github.com/${startProject.repo}`, + // }, + { + label: ( +
Discord -
, - to: 'https://tlinz.com/discord' -}, { - label:
+
+ ), + to: 'https://tlinz.com/discord', + }, + { + label: ( +
Merch -
, - to: `https://cottonbureau.com/people/tanstack` -}]; +
+ ), + to: `https://cottonbureau.com/people/tanstack`, + }, +] + export const Route = createFileRoute('/_libraries/start/$version/')({ component: VersionIndex, - meta: () => seo({ - title: startProject.name, - description: startProject.description - }) -}); -const librariesRouteApi = getRouteApi('/_libraries'); + meta: () => + seo({ + title: startProject.name, + description: startProject.description, + }), +}) + +const librariesRouteApi = getRouteApi('/_libraries') + export default function VersionIndex() { - const { - sponsorsPromise - } = librariesRouteApi.useLoaderData(); - const { - version - } = Route.useParams(); - const branch = getBranch(startProject, version); - const [framework, setFramework] = React.useState('react'); - const [isDark, setIsDark] = React.useState(true); + const { sponsorsPromise } = librariesRouteApi.useLoaderData() + const { version } = Route.useParams() + const branch = getBranch(startProject, version) + const [framework, setFramework] = React.useState('react') + const [isDark, setIsDark] = React.useState(true) + React.useEffect(() => { - setIsDark(window.matchMedia?.(`(prefers-color-scheme: dark)`).matches); - }, []); - const gradientText = `inline-block text-transparent bg-clip-text bg-gradient-to-r ${startProject.colorFrom} ${startProject.colorTo}`; - return
-
+ setIsDark(window.matchMedia?.(`(prefers-color-scheme: dark)`).matches) + }, []) + + const gradientText = `inline-block text-transparent bg-clip-text bg-gradient-to-r ${startProject.colorFrom} ${startProject.colorTo}` + + return ( +
+
{menu?.map((item, i) => { - const label =
{item.label}
; - return
- {item.to.startsWith('http') ? {label} : + const label = ( +
{item.label}
+ ) + + return ( +
+ {item.to.startsWith('http') ? ( + {label} + ) : ( + {label} - } -
; - })} + + )} +
+ ) + })}
-

+ lg:text-7xl relative`} + > TanStack Start

{/*
*/} -
+ leading-none whitespace-nowrap" + > Coming Soon! {/* {version === 'latest' ? latestVersion : version} */}
{/*
*/} -

+ lg:text-5xl lg:max-w-2xl" + > Full-stack React framework{' '} powered by TanStack Router {' '}

-

+

Full-document SSR, Streaming, Server Functions, bundling and more, powered by TanStack Router, Nitro{' '} and Vite. Ready to deploy to your favorite hosting @@ -145,12 +187,21 @@ export default function VersionIndex() {

- + View TanStack.com Source - +Check it out at https://tanstack.com/start/`, + )}`} + target="_blank" + className={`flex items-center gap-2 py-2 px-4 bg-cyan-500 rounded text-white uppercase font-extrabold`} + > Tweet about it! {' '}
@@ -158,7 +209,7 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle {/*
+ >
@@ -217,7 +268,7 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle

-
*/} +
*/} {/*
@@ -263,7 +314,7 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle ) })}
-
*/} +
*/} {/*
@@ -306,17 +357,19 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle ))}
-
*/} + */}

Partners

-
+ dark:bg-gray-800 dark:shadow-none" + > Start You? @@ -326,7 +379,10 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle beyond the call of sponsorship. Are you as invested in TanStack Start as we are? Let's push the boundaries of Start together!
- + Let's chat
@@ -337,15 +393,25 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle

Sponsors

-
- } children={sponsors => { - return ; - }} /> +
+ } + children={(sponsors) => { + return + }} + />
@@ -355,8 +421,10 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle
- + This ad helps us be happy about our invested time and not burn out and rage-quit OSS. Yay money! 😉 @@ -399,7 +467,7 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle ))}
- */} + */} {/* {[''].includes(framework) ? (
@@ -416,7 +484,7 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle and let's get to work!
- ) : ( + ) : (
- )} */} + )} */} {/*
@@ -451,7 +519,8 @@ Check it out at https://tanstack.com/start/`)}`} target="_blank" className={`fle Read the Docs!
-
*/} + */}