PageSourceSearch

https://sveltekit.io/_app/immutable/chunks/sveltekit-roadmap.FboS7XiJ.js

js sveltekit.io collected 2026-09-25 21:58:53 UTC 62,361 bytes, 58 lines download raw bytes

1import{s as gi,p as Wn,q as ui,e as a,k as o,H as jt,c as l,o as i,m as p,a as Kt,r as It,d as t,f as u,u as r,i as n,n as yi}from"./scheduler.nkQMAI2i.js";import{S as Ti,i as Hi,c as Nn,a as Bn,m as Un,t as Qn,b as Zn,d as Jn}from"./index.0kLV5Zph.js";import{g as xi,a as ci}from"./Icon.7kVD2M3T.js";import{M as Li,I as Mi,F as _i}from"./FaqAccordion.Nra8iH9i.js";function Ci(qt){let c,C='The SvelteKit roadmap is split up between a few resources, however the main reference we have is the <a href="https://github.com/sveltejs/kit/milestones" rel="nofollow">GitHub Milestones page</a>. This is a list of issues and feature requests largely contributed by the community.',M,d,h="By following the tags and discussions, there’s some indication of what’s coming sooner rather than later. And by the discussions and upvotes, we can get a fair idea of what’s popular within the community.",f,_,zt,U,Xn="So in this article, we’ll discuss what lies ahead for SvelteKit, and talk about some of the most exciting features we may get to see before, and <strong>with</strong> v3.",Et,Q,ea='<a href="#faqs">Skip to FAQ’s</a>',Gt,S,ta='<a href="#the-priority-important-category">The Priority Important Category</a>',Dt,Z,sa="This is the group of features and bugs labeled as <em>p1-important</em> (priority 1), which is at the top of the priorities list. The label set by the team defines it as:",$t,J,na="<p>SvelteKit cannot be used by a large number of people, basic functionality is missing, etc.</p>",At,X,aa="These are the issues the SvelteKit team is actively looking to incorporate. With these issues, the question is more ”<strong>when</strong> will it be included?” rather than ”<strong>if</strong> it will be?“.",Ot,v,la='<iframe src="https://giphy.com/embed/nwUSrDKaoquNWKkat1" loading="lazy" title="It&#39;s coming" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',ee,ia='<a href="https://giphy.com/gifs/mafs-reaction-tv-reactions-nwUSrDKaoquNWKkat1">via GIPHY</a>',Vt,te,oa="In this section we’ll go through the more prominant features up ahead. The issues here that won’t be covered are either bug fixes, or features with very simple workarounds specified in the linked discussion.",Yt,se,pa="The features we’ll talk about are:",Rt,ne,ra='<li><a href="#native-support-for-websockets-in-svelte">Native Support for Websockets in Svelte</a></li> <li><a href="#language-translations-and-i18n">Language Translations and i18n</a>, and</li> <li><a href="#provide-access-to-history-state">Provide Access to History State</a></li>',Ft,ae,ua='You can see the <a href="#the-full-list-of-top-priority-features-for-sveltekit">full list of top-priority features here</a>.',Wt,P,ca='<a href="#native-support-for-websockets-in-svelte">Native Support for Websockets in Svelte</a>',Nt,le,ha='This one is extremeley popular, and many devs in the community were hoping for it to be announced with the release of <a href="https://sveltekit.io/blog/sveltekit-2" rel="nofollow">version 2</a>. Whilst we got <a href="https://sveltekit.io/blog/shallow-routing" rel="nofollow">shallow routing</a>, we didn’t get <a href="https://github.com/sveltejs/kit/issues/1491" rel="nofollow">websockets</a>, despite the fact that it’s been on the cards since mid-2021 - well before even SvelteKit 1.0 was released.',Bt,ie,fa='To add to injury, it seems as though websockets won’t get a look in until at least after the <a href="https://sveltekit.io/blog/svelte-5" rel="nofollow">Svelte 5</a> release. Here’s what SvelteKit maintainer <a href="https://github.com/benmccann" rel="nofollow">Ben McCann</a> has said:',Ut,oe,da=`<p>The core team won’t be implementing this in the near future as we’re currently focused on a very exciting set of changes in Svelte 5…
2<a href="https://github.com/sveltejs/kit/issues/1491#issuecomment-1692256622" rel="nofollow">Source</a></p>`,Qt,m,va='<iframe src="https://giphy.com/embed/SqflD5OvHoWILB7qWm" loading="lazy" title="Here&#39;s a tissue" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',pe,ma='<a href="https://giphy.com/gifs/moodman-SqflD5OvHoWILB7qWm">via GIPHY</a>',Zt,re,ka="But he also mentioned that they’ll still be reviewing pull requests in the meantime in case the community is willing to have a crack at it.",Jt,j,wa='<a href="#in-the-meantime">In the meantime</a>',Xt,ue,ba="Whilst we wait for websockets to be natively built into SvelteKit, there are a few workarounds which were noted in the same thread.",es,ce,ga='The solution that received the most attention and is likely the most used for SvelteKit at the moment, is using the <a href="https://kit.svelte.dev/docs/adapter-node" rel="nofollow">Node Adapter</a> with <a href="https://socket.io/" rel="nofollow">Socket.io</a>.',ts,K,ya='<a href="#how-to-set-up-websockets-in-sveltekit">How to set up websockets in SvelteKit</a>',ss,he,Ta="<li>First install the Node Adapter package:</li>",ns,fe,as,fi='<code class="language-bash"><span class="token function">npm</span> i <span class="token parameter variable">-D</span> @sveltejs/adapter-node</code>',ls,I,Ha="<li>Install the Socket.io server and client:</li>",is,de,os,di='<code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> socket.io socket.io-client</code>',ps,q,xa="<li>Modify your <code>vite.config.ts</code> file to add in the <code>adapter-node</code> package</li>",rs,ve,us,vi=`<code class="language-ts"><span class="token keyword">
2import</span> <span class="token punctuation">&#123;</span> Server <span class="token punctuation">&#125;</span> <span class="token keyword">from</span> <span class="token string">'socket.io'</span><span class="token punctuation">;</span>
3<span class="token keyword">import</span> <span class="token punctuation">&#123;</span> <span class="token keyword">type</span> <span class="token class-name">ViteDevServer</span><span class="token punctuation">,</span> defineConfig <span class="token punctuation">&#125;</span> <span class="token keyword">from</span> <span class="token string">'vite'</span><span class="token punctuation">;</span>
4
5<span class="token keyword">const</span> webSocketServer <span class="token operator">=</span> <span class="token punctuation">&#123;</span>
6	name<span class="token operator">:</span> <span class="token string">'websocket'</span><span class="token punctuation">,</span>
7	<span class="token function">configureServer</span><span class="token punctuation">(</span>server<span class="token operator">:</span> ViteDevServer<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span>
8		<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>server<span class="token punctuation">.</span>httpServer<span class="token punctuation">)</span> <span class="token keyword">return</span><span class="token punctuation">;</span>
9
10		<span class="token keyword">const</span> io <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Server</span><span class="token punctuation">(</span>server<span class="token punctuation">.</span>httpServer<span class="token punctuation">)</span><span class="token punctuation">;</span>
11
12		io<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'connection'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span>connection<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span>
13			connection<span class="token punctuation">.</span><span class="token function">emit</span><span class="token punctuation">(</span><span class="token string">'eventFromServer'</span><span class="token punctuation">,</span> <span class="token string">'✅ Connected'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
14		<span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
15	<span class="token punctuation">&#125;</span>
16<span class="token punctuation">&#125;</span><span class="token punctuation">;</span>
17
18<span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token function">defineConfig</span><span class="token punctuation">(</span><span class="token punctuation">&#123;</span>
19	plugins<span class="token operator">:</span> <span class="token punctuation">[</span><span class="token function">sveltekit</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> webSocketServer<span class="token punctuation">]</span>
20<span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>`,cs,z,La="<li>The use it from your Svelte components:</li>",hs,me,fs,mi=`<code class="language-svelte"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>ts<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token script"><span class="token language-javascript">
21	<span class="token keyword">import</span> <span class="token punctuation">&#123;</span> io <span class="token punctuation">&#125;</span> <span class="token keyword">from</span> <span class="token string">'socket.io-client'</span><span class="token punctuation">;</span>
22
23	<span class="token keyword">const</span> websocket <span class="token operator">=</span> <span class="token function">io</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
24
25	websocket<span class="token punctuation">.</span><span class="token function">on</span><span class="token punctuation">(</span><span class="token string">'eventFromServer'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token parameter">message</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span>
26		console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>message<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// will log '✅ Connected';</span>
27	<span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
28
29	<span class="token keyword">let</span> <span class="token literal-property property">currentMessage</span><span class="token operator">:</span> string <span class="token operator">=</span> <span class="token string">''</span><span class="token punctuation">;</span>
30	<span class="token literal-property property">$</span><span class="token operator">:</span> currentMessage<span class="token punctuation">,</span> websocket<span class="token punctuation">.</span><span class="token function">emit</span><span class="token punctuation">(</span><span class="token string">'eventFromClient'</span><span class="token punctuation">,</span> currentMessage<span class="token punctuation">)</span><span class="token punctuation">;</span>
31</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">></span></span>
32
33<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name"><span class="token namespace">bind:</span>value=</span><span class="token language-javascript"><span class="token punctuation">&#123;</span>currentMessage<span class="token punctuation">&#125;</span></span> <span class="token punctuation">/></span></span></code>`,ds,ke,Ma="So in this example, when we mount the component (or page) and connect to the websocket, we log <code>✅ Connected</code> on the client, and then whenever <code>currentMessage</code> changes from the input, it will also be sent to the server.",vs,we,_a="An example like this would be used if you had 2 people connected to a server ‘room’, where both people could see the current message the other person was typing, before they sent it.",ms,k,Ca='<iframe src="https://giphy.com/embed/a6kvnRvtBPo2ebZKm3" loading="lazy" title="We&#39;re in sync" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',be,Sa='<a href="https://giphy.com/gifs/G2Esports-esports-g2-g2esports-a6kvnRvtBPo2ebZKm3">
33via GIPHY</a>',ks,ge,Pa="Now let’s look at another major feature the SvelteKit team are working on; support for i18n.",ws,E,ja='<a href="#language-translations-and-i18n">Language Translations and i18n</a>',bs,ye,Ka="For quite some time, the Svelte team have been looking into how to best make the decision of providing translation and i18n support out of the box for SvelteKit apps.",gs,Te,Ia='Between the <a href="https://github.com/sveltejs/kit/issues/553" rel="nofollow">i18n brainstorming</a> and <a href="https://github.com/sveltejs/kit/issues/1274" rel="nofollow">Translations</a> GitHub issues, it’s likely we’ll get some opinionated approach to this before SvelteKit v3.',ys,He,qa='<a href="https://github.com/sveltejs/kit/releases/tag/%40sveltejs%2Fkit%402.3.0" rel="nofollow">SvelteKit 2.3.0</a> introduced the <a href="https://kit.svelte.dev/docs/hooks#universal-hooks-reroute" rel="nofollow"><code>reroute</code> hook</a>, which allows you to edit a URL before SvelteKit uses it to render a route - even whilst showing the origin URL to the user.',Ts,xe,za="The <code>reroute</code> hooks runs before <code>handle</code> and checks the requested <code>url</code> against a <code>translated</code> object in order to serve the correct page with the assumed translation.",Hs,Le,Ea="You could implement it like this:",xs,Me,Ga="<strong><code>src/hooks.server.ts</code></strong>",Ls,_e,Ms,ki=`<code class="language-ts"><span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">&#123;</span> Reroute <span class="token punctuation">&#125;</span> <span class="token keyword">from</span> <span class="token string">
33'@sveltejs/kit'</span><span class="token punctuation">;</span>
34
35<span class="token keyword">const</span> translated<span class="token operator">:</span> Record<span class="token operator">&lt;</span><span class="token builtin">string</span><span class="token punctuation">,</span> <span class="token builtin">string</span><span class="token operator">></span> <span class="token operator">=</span> <span class="token punctuation">&#123;</span>
36	<span class="token string-property property">'/en/about'</span><span class="token operator">:</span> <span class="token string">'/en/about'</span><span class="token punctuation">,</span>
37	<span class="token string-property property">'/de/ueber-uns'</span><span class="token operator">:</span> <span class="token string">'/de/about'</span><span class="token punctuation">,</span>
38	<span class="token string-property property">'/fr/a-propos'</span><span class="token operator">:</span> <span class="token string">'/fr/about'</span>
39<span class="token punctuation">&#125;</span><span class="token punctuation">;</span>
40
41<span class="token keyword">export</span> <span class="token keyword">const</span> reroute<span class="token operator">:</span> <span class="token function-variable function">Reroute</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">&#123;</span> url <span class="token punctuation">&#125;</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">&#123;</span>
42	<span class="token keyword">if</span> <span class="token punctuation">(</span>url<span class="token punctuation">.</span>pathname <span class="token keyword">in</span> translated<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span>
43		<span class="token keyword">return</span> translated<span class="token punctuation">[</span>url<span class="token punctuation">.</span>pathname<span class="token punctuation">]</span><span class="token punctuation">;</span>
44	<span class="token punctuation">&#125;</span>
45<span class="token punctuation">&#125;</span><span class="token punctuation">;</span></code>`,_s,Ce,Da='So if the user requested <code>/de/ueber-uns</code>, it would resolve the page <code>/de/about</code>, which would be your regular <code>src/routes/about</code> page, with the German language. You would however, be required to implement the translations on your own accord, or use a library like <a href="https://wikimedia.github.io/banana-i18n/" rel="nofollow">Banana i18n</a>.',Cs,w,$a='<iframe src="https://giphy.com/embed/7i6iLh3DpHVPG" loading="lazy" title="I don&#39;t speak your language" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',Se,Aa='<a href="https://giphy.com/gifs/7i6iLh3DpHVPG">via GIPHY</a>',Ss,Pe,Oa="The only problem with this <code>reroute</code> as it currently stands is that you would have content in 2 places, for example:",Ps,je,Va="<li><code>https://sveltekit.io/about</code>, and</li> <li><code>https://sveltekit.io/en/about</code></li>",js,Ke,Ya='So you would typically redirect the latter (<em>with</em> ‘en’) to the former (<em>without</em> ‘en’). This can have repercussions for SEO, and there’s obviously a better way. That’s why in the <a href="https://github.com/sveltejs/kit/issues/11595" rel="nofollow"><code>reroute</code> enhancements</a> GitHub issue, there’s discussion as to how to best make modifications to <code>reroute</code>. And interestingly, it’s currently set to be <a href="#expectations-for-sveltekit-3">addressed in SvelteKit 3</a>.',Ks,Ie,Ra="Sorting out first class i18n is the primary feature focus for the SvelteKit team post-2.0 release. There’s still work to be done and decisions to be made by the team, but they are obviously keen to hear as much as possible from the community on this issue.",Is,G,Fa='<a href="#provide-access-to-history-state">Provide Access to History State</a>',qs,qe,Wa='Most of the discussion on this topic was resolved by the <a href="https://sveltekit.io/blog/shallow-routing" rel="nofollow">shallow routing</a> feature released with <a href="https://sveltekit.io/blog/sveltekit-2" rel="nofollow">SvelteKit v2</a>. The <a href="https://sveltekit.io/blog/shallow-routing#the-pushstate-function" rel="nofollow"><code>pushState</code></a> and <a href="https://sveltekit.io/blog/shallow-routing#the-replacestate-function" rel="nofollow"><code>replaceState</code></a> functions were implemented to have more control over history entries in the user’s browser. And beyond that, <a href="https://sveltekit.io/blog/shallow-routing#pop-up-views" rel="nofollow">pop-up views</a> were implemented for rendering other page’s data inside of the current page.',zs,ze,Na='The only thing that needs to be developed on this issue is manipulating the <em>state</em> in <a href="https://kit.svelte.dev/docs/modules#$app-navigation-beforenavigate" rel="nofollow"><code>beforeNavigate</code></a>.',Es,Ee,Ba="For complex apps with many state variables, it can be important to do something <em>before</em> navigating - like making sure they wish to navigate, or telling them what’s about to happen (e.g. a dialog saying that the modal will close and their page state will vanish).",Gs,Ge,Ua='So it’s likely that we’ll receive some optional additional parameter in the <a href="https://sveltekit.io/blog/shallow-routing#the-pushstate-function" rel="nofollow"><code>pushState</code></a> and <a href="https://sveltekit.io/blog/shallow-routing#the-replacestate-function" rel="nofollow"><code>replaceState</code></a> functions to address this.',Ds,b,Qa='<iframe src="https://giphy.com/embed/YrHhjtAttUN94FgoZh" loading="lazy" title="I need to be on the right side of history" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',De,Za='<a href="https://giphy.com/gifs/taylorswift-netflix-taylor-swift-miss-americana-YrHhjtAttUN94FgoZh">via GIPHY</a>',$s,D,Ja='<a href="#the-full-list-of-top-priority-features-for-sveltekit">The full list of top priority features for SvelteKit</a>',As,$e,Xa="If you want to look at <strong>all</strong> of the upcoming <em>priority</em> features, you can read the discussions:",Os,Ae,el='<li><a href="https://github.com/sveltejs/kit/issues/1491" rel="nofollow">Native support for web sockets</a></li> <li><a href="https://github.com/sveltejs/kit/issues/553" rel="nofollow">i18n brainstorming</a></li> <li><a href="https://github.com/sveltejs/kit/issues/1274" rel="nofollow">Translations</a></li> <li><a href="https://github.com/sveltejs/kit/issues/1485" rel="nofollow">Shim SvelteKit runtime import aliases / Importing <code>$app/*</code> fails</a></li> <li><a href="https://github.com/sveltejs/kit/issues/4941" rel="nofollow">Add option to always reinstantiate a component on navigation</a></li> <li><a href="https://github.com/sveltejs/kit/issues/5478" rel="nofollow">Provide access to history state</a></li> <li><a href="https://github.com/sveltejs/kit/issues/9785" rel="nofollow">Rejecting streamed data</a></li> <li><a href="https://github.com/sveltejs/kit/issues/10192" rel="nofollow">CSS file not found error</a></li> <li><a href="https://github.com/sveltejs/kit/issues/10904" rel="nofollow">docs: links to types are missing</a></li>',Vs,$,tl='<a href="#expectations-for-sveltekit-3">Expectations for SvelteKit 3</a>',Ys,Oe,sl="It hasn’t been long since SvelteKit 2 was released, however we already have an insight as to what is targeted for the future release of SvelteKit v3.",Rs,Ve,nl="The best speculation we have for the release date of SvelteKit v3 is the 14th December 2024. This is purely based on the past pattern of releasing major versions annually on the 14th December.",Fs,g,al='<iframe src="https://giphy.com/embed/3osxYaDlxLcexsQiKk" loading="lazy" title="Now I&#39;m intrigued" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',Ye,ll='<a href="https://giphy.com/gifs/dominosuk-pizza-feelings-dominos-3osxYaDlxLcexsQiKk">via GIPHY</a>',Ws,Re,il='The high-level roadmap suggests that the focus is first to bring <a href="https://sveltekit.io/blog/svelte-5" rel="nofollow">Svelte 5</a> to fruition in early 2024, and <em>then</em> shift more towards building out some of the features for SvelteKit 3.',Ns,Fe,ol="So whilst it’s still a while before any of this gets released, let’s have a look at the current 3.0 task list.",Bs,We,pl="The most exciting topics we’ll go over are:",Us,Ne,rl='<li><a href="#expanded-support-for-svelte-5">
45Expanded support for Svelte 5</a>,</li> <li><a href="#reroute-enhancements"><code>reroute</code> Enhancements</a></li>',Qs,Be,ul="The details and discussions for these issue are very early-stage and minimal, so we’ll go through some of them in no great detail. As the ideas and methods become more solidified, we’ll amend what we know.",Zs,A,cl='<a href="#expanded-support-for-svelte-5">Expanded support for Svelte 5</a>',Js,Ue,hl="Svelte 5 is expected to be released in the first quarter of 2024, and after that there’ll be no shortage of features to develop and improve upon.",Xs,y,fl='<iframe src="https://giphy.com/embed/V4fffoiyqS8aHKflxy" loading="lazy" title="Svelte 5.0" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',Qe,dl='<a href="https://giphy.com/gifs/getflexseal-phil-rate-swift-V4fffoiyqS8aHKflxy">via GIPHY</a>',en,Ze,vl='So in the official SvelteKit 3 release, <a href="https://github.com/sveltejs/kit/issues/10761" rel="nofollow">the team is in very early discussions</a> of moving the built-in stores to be <a href="https://sveltekit.io/blog/runes" rel="nofollow">rune-based</a>.',tn,Je,ml='This means that after Svelte 5, the <a href="https://kit.svelte.dev/docs/modules#$app-stores" rel="nofollow"><code>$app/stores</code></a> will undergo some API changes, in favor of a Rune character.',sn,O,kl='<a href="#reroute-enhancements"><code>reroute</code> Enhancements</a>',nn,Xe,wl='We discussed the <code>reroute</code> function in the <a href="#language-translations-and-i18n">Language Translations and i18n</a> section, and know that it’s a priority-1 feature for SvelteKit. This issue is interested in removing the requirement for having content <strong>in 2 places</strong> to handle a standard route (<code>https://sveltekit.io/about</code>) and a language-based route (<code>https://sveltekit.io/en/about</code>)',an,et,bl="Given that the improvements for this function are placed in the 3.0 category, it seems as though the team will put an emphasis on this as a primary feature of SvelteKit 3.",ln,V,gl='<a href="#the-full-list-of-current-sveltekit-3-features">The full list of current SvelteKit 3 features</a>',on,tt,yl="If you want to look at <strong>all</strong> of the upcoming features assigned to the v3 release, you can read the discussions:",pn,st,Tl='<li><a href="https://github.com/sveltejs/kit/issues/10761" rel="nofollow">Expanded support for Svelte 5</a></li> <li><a href="https://github.com/sveltejs/kit/issues/7178" rel="nofollow">use <code>undefined</code> instead of <code>null</code> for empty <code>form</code> prop</a></li> <li><a href="https://github.com/sveltejs/kit/issues/11190" rel="nofollow">revisit modulepreload options?</a></li> <li><a href="https://github.com/sveltejs/kit/issues/11595" rel="nofollow"><code>reroute</code> enhancements</a></li> <li><a href="https://github.com/sveltejs/kit/issues/11724" rel="nofollow">Disclose render mode</a></li> <li><a href="https://github.com/sveltejs/kit/issues/11782" rel="nofollow">SvelteKit 3 various breaking changes notes</a></li>',rn,T,Hl='<iframe src="https://giphy.com/embed/FVrRnUjSH9z2R5yfzQ" loading="lazy" title="It&#39;s early" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',nt,xl='<a href="https://giphy.com/gifs/youngertv-tv-land-younger-forever-FVrRnUjSH9z2R5yfzQ">via GIPHY</a>',un,Y,Ll='<a href="#other-features">Other Features</a>',cn,at,Ml='There are over 100 open issues/tasks sitting rather uncategorized as <a href="https://github.com/sveltejs/kit/milestone/4" rel="nofollow">‘soon’</a>. This is the high-level umbrella page which also includes all the features mentioned so far.',hn,lt,_l="Many of the ‘soon’ tasks are bug fixes and documentation changes, so we’ll only talk about the upcoming features that <em>may</em> be introduced to SvelteKit over the coming months.",fn,it,Cl='<li><a href="#generated-types-for-pages-and-endpoints">Generated types for pages/endpoints</a></li> <li><a href="#image-processing">Image Processing</a></li> <li><a href="#sitemaps-and-programmatically-get-all-routes">Sitemaps and programmatically get all routes</a></li>',dn,R,Sl='<a href="#generated-types-for-pages-and-endpoints">Generated Types For Pages and Endpoints</a>',vn,ot,Pl='In addition to providing types to Svelte components with our <code>load</code> functions, the <a href="https://github.com/sveltejs/kit/issues/647" rel="nofollow">team is also looking to add types</a> to:',mn,pt,jl='<li><a href="https://kit.svelte.dev/docs/modules#$app-navigation-goto" rel="nofollow"><code>goto</code> functions</a>,</li> <li><a href="https://kit.svelte.dev/docs/web-standards#fetch-apis" rel="nofollow"><code>fetch</code> functions</a>, and</li> <li>typed links in anchor tags (<code>&lt;a&gt;</code>)</li>',kn,rt,Kl="This would allow us to have intellisense when choosing navigation, and build errors to catch invalid navigation instances.",wn,H,Il='<iframe src="https://giphy.com/embed/THjWYDatNstGINCBig" loading="lazy" title="Very helpful" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',ut,ql='<a href="https://giphy.com/gifs/abcnetwork-jeopardy-college-championship-jeopardycollegechampionship-THjWYDatNstGINCBig">via GIPHY</a>',bn,ct,zl='This will also provide more direction when accessing <code>GET</code>/<code>POST</code> functions in our <code>+server.ts</code> endpoints. This <em>may</em> even resolve the issue raised in the <a href="https://sveltekit.io/blog/sveltekit-backend#are-form-actions-type-safe" rel="nofollow">SvelteKit backend</a> article on the issue of typesafe server functions.',gn,ht,El='The most in depth contribution to the topic was made by SvelteKit contributor <a href="https://github.com/ivanhofer" rel="nofollow">ivanhofer</a> in 2021. In the proposal, he offers a method to achieve all this this under the hood, which is too verbose to go into in this article. However, from Vite’s <code>import.meta.glob</code>, we could generate something to this effect:',yn,ft,Tn,wi=`<code class="language-ts"><span class="token keyword">type</span> <span class="token class-name">Endpoints</span> <span class="token operator">=</span> <span class="token punctuation">&#123;</span>
46	<span class="token constant">
46GET</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/'</span><span class="token punctuation">,</span> <span class="token string">'products'</span><span class="token punctuation">]</span> <span class="token operator">|</span> <span class="token punctuation">[</span><span class="token string">'/'</span><span class="token punctuation">,</span> <span class="token string">'products'</span><span class="token punctuation">,</span> <span class="token string">'/'</span><span class="token punctuation">,</span> id<span class="token punctuation">]</span><span class="token punctuation">;</span>
47	<span class="token constant">POST</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/'</span><span class="token punctuation">,</span> <span class="token string">'products'</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
48	<span class="token constant">PATCH</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">'/'</span><span class="token punctuation">,</span> <span class="token string">'products'</span><span class="token punctuation">,</span> <span class="token string">'/'</span><span class="token punctuation">,</span> id<span class="token punctuation">]</span><span class="token punctuation">;</span>
49<span class="token punctuation">&#125;</span><span class="token punctuation">;</span></code>`,Hn,dt,Gl="And then when accessing the API routes:",xn,vt,Ln,bi=`<code class="language-ts"><span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
50<span class="token comment">// @ts-expect-error</span>
51<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'products'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
52<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products/12345'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
53<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> method<span class="token operator">:</span> <span class="token string">'POST'</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
54<span class="token comment">// @ts-expect-error</span>
55<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> method<span class="token operator">:</span> <span class="token string">'PATCH'</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
56<span class="token comment">// @ts-expect-error</span>
57<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products/12345'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> method<span class="token operator">:</span> <span class="token string">'POST'</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
58<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/products/12345'</span><span class="token punctuation">,</span> <span class="token punctuation">&#123;</span> method<span class="token operator">:</span> <span class="token string">'PATCH'</span> <span class="token punctuation">&#125;</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>`,Mn,mt,Dl="This is just for <code>fetch</code> calls, however for routes, it’s a similar deal, however less complex. The only issue with this is that it still leaves room for error in the expected <code>body</code> of <code>POST</code> calls, and query <code>params</code> of <code>GET</code> calls.",_n,kt,$l="As there hasn’t been much meaningful movement towards resolving this issue recently, it’s yet to be seen whether this gets implemented <em>before</em> SvelteKit 3. Though a feature like this would be a fantastic addition to a major release.",Cn,F,Al='<a href="#image-processing">Image Processing</a>',Sn,wt,Ol='The image processing feature has been released with the <a href="https://sveltekit.io/blog/sveltekit-images#using-the-sveltekit-enhanced-img-method" rel="nofollow"><code>@sveltejs/enhanced-img</code> package</a>. This processes all the local images used in your app, and serves them to the user in a web-based format (<code>.avif</code> or <code>.webp</code>), and serves the correct size to suit their device.',Pn,x,Vl='<iframe src="https://giphy.com/embed/SslOM6oiSkIYBqVcMJ" loading="lazy" title="Look at this photograph" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',bt,Yl='<a href="https://giphy.com/gifs/photograph-nickelback-look-at-this-SslOM6oiSkIYBqVcMJ">via GIPHY</a>',jn,gt,Rl="It’s been released as <em>experimental</em>, as they work to iron out some bugs and collect feedback from the community, however there’s another part of this that would make using the package a whole lot better.",Kn,yt,Fl='The team are considering extending the functionality to serve <em>dynamic</em> images. As discussed in <a href="https://github.com/sveltejs/kit/pull/10323" rel="nofollow">another GitHub issue</a>, you may be able to use <code>enhanced:img</code> for serving CDN images, or images from a database.',In,Tt,Wl="This would address the main pain-point of serving images with the package now, and 
58you could use <code>&lt;enhance:img /&gt;</code> on almost everything!",qn,W,Nl='<a href="#sitemaps-and-programmatically-get-all-routes">Sitemaps and programmatically get all routes</a>',zn,Ht,Bl='SvelteKit’s approach to SEO is self-described as “uncompromising”, so it’s said that they’ll provide some out-of-the-box solution to build sitemaps with ease. The discussion of potential approaches to achieve this can be found in <a href="https://github.com/sveltejs/kit/issues/1142" rel="nofollow">this GitHub issue</a>.',En,xt,Ul='It’s safe to say that in order to achieve sitemap generations, they’ll have to expose some API to get all routes in the project, which is also a <a href="https://github.com/sveltejs/kit/issues/5793" rel="nofollow">topic on the “soon” list</a>.',Gn,L,Ql='<iframe src="https://giphy.com/embed/nme1q652furtKdzOAL" loading="lazy" title="I want it all" width="100%" height="100%" style="position:absolute" frameborder="0" class="giphy-embed" allowfullscreen=""></iframe>',Lt,Zl='<a href="https://giphy.com/gifs/bigbrother-big-brother-bb24-season-24-nme1q652furtKdzOAL">via GIPHY</a>',Dn,Mt,Jl='Since there’s been no progress from the team with this, community members have published packages to handle sitemap generations, including <a href="https://github.com/jasongitmail/super-sitemap" rel="nofollow">super-sitemap</a> and <a href="https://github.com/bartholomej/svelte-sitemap" rel="nofollow">svelte-sitemap</a>.',$n,N,Xl='<a href="#conclusion">Conclusion</a>',An,_t,ei="As there will be constant completions, additions and modifications made to the features described in this post, there will be regular updates to reflect the current state.",On,Ct,ti='We have only touched on the <strong>big upcoming features</strong> in this article, so there’s plenty more smaller and niche features that the big-brains might enjoy getting into the weeds of. As mentioned, you can go through all of the <a href="https://github.com/sveltejs/kit/milestone/4" rel="nofollow">milestones on GitHub</a>, and contribute where possible.',Vn,St,si="Given that Svelte 5 is around the corner, progress on these milestones may be sluggish for a moment. This should change later in the year leading up to the SvelteKit 3 release.",Yn,B,ni='<a href="#faqs">FAQ’s</a>',Rn,Pt,Fn;return _=new Mi({props:{src:"/post-images/sveltekit-roadmap/sveltekit-roadmap.jpg",alt:"This is how it feels to look through the SvelteKit GitHub issues."}}),Pt=new _i({props:{faqs:[{question:"Does SvelteKit have a public roadmap?",answer:"The public roadmap for SvelteKit is very minimal and does not mention any of the upcoming features. It is best to go to the SvelteKit GitHub and looks through the issues an milestones to get an idea of when features will be released."},{question:"Does SvelteKit have Websockets?",answer:"SvelteKit does not have websockets natively built in yet. It is on the roadmap however and is expected to be introduced into the meta-framework some time in 2024."}]}}),{c(){c=a("p"),c.innerHTML=C,M=o(),d=a("p"),d.textContent=h,f=o(),Nn(_.$$.fragment),zt=o(),U=a("p"),U.innerHTML=Xn,Et=o(),Q=a("p"),Q.innerHTML=ea,Gt=o(),S=a("h2"),S.innerHTML=ta,Dt=o(),Z=a("p"),Z.innerHTML=sa,$t=o(),J=a("blockquote"),J.innerHTML=na,At=o(),X=a("p"),X.innerHTML=aa,Ot=o(),v=a("div"),v.innerHTML=la,ee=a("p"),ee.innerHTML=ia,Vt=o(),te=a("p"),te.textContent=oa,Yt=o(),se=a("p"),se.textContent=pa,Rt=o(),ne=a("ol"),ne.innerHTML=ra,Ft=o(),ae=a("p"),ae.innerHTML=ua,Wt=o(),P=a("h3"),P.innerHTML=ca,Nt=o(),le=a("p"),le.innerHTML=ha,Bt=o(),ie=a("p"),ie.innerHTML=fa,Ut=o(),oe=a("blockquote"),oe.innerHTML=da,Qt=o(),m=a("div"),m.innerHTML=va,pe=a("p"),pe.innerHTML=ma,Zt=o(),re=a("p"),re.textContent=ka,Jt=o(),j=a("h4"),j.innerHTML=wa,Xt=o(),ue=a("p"),ue.textContent=ba,es=o(),ce=a("p"),ce.innerHTML=ga,ts=o(),K=a("h5"),K.innerHTML=ya,ss=o(),he=a("ol"),he.innerHTML=Ta,ns=o(),fe=a("pre"),as=new jt(!1),ls=o(),I=a("ol"),I.innerHTML=Ha,is=o(),de=a("pre"),os=new jt(!1),ps=o(),q=a("ol"),q.innerHTML=xa,rs=o(),ve=a("pre"),us=new jt(!1),cs=o(),z=a("ol"),z.innerHTML=La,hs=o(),me=a("pre"),fs=new jt(!1),ds=o(),ke=a("p"),ke.innerHTML=Ma,vs=o(),we=a("p"),we.textContent=_a,ms=o(),k=a("div"),k.innerHTML=Ca,be=a("p"),be.innerHTML=Sa,ks=o(),ge=a("p"),ge.textContent=Pa,ws=o(),E=a("h3"),E.innerHTML=ja,bs=o(),ye=a("p"),ye.textContent=Ka,gs=o(),Te=a("p"),Te.innerHTML=Ia,ys=o(),He=a("p"),He.innerHTML=qa,Ts=o(),xe=a("p"),xe.innerHTML=za,Hs=o(),Le=a("p"),Le.textContent=Ea,xs=o(),Me=a("p"),Me.innerHTML=Ga,Ls=o(),_e=a("pre"),Ms=new jt(!1),_s=o(),Ce=a("p"),Ce.innerHTML=Da,Cs=o(),w=a("div"),w.innerHTML=$a,Se=a("p"),Se.innerHTML=Aa,Ss=o(),Pe=a("p"),Pe.innerHTML=Oa,Ps=o(),je=a("ol"),je.innerHTML=Va,js=o(),Ke=a("p"),Ke.innerHTML=Ya,Ks=o(),Ie=a("p"),Ie.textContent=Ra,Is=o(),G=a("h3"),G.innerHTML=Fa,qs=o(),qe=a("p"),qe.innerHTML=Wa,zs=o(),ze=a("p"),ze.innerHTML=Na,Es=o(),Ee=a("p"),Ee.innerHTML=Ba,Gs=o(),Ge=a("p"),Ge.innerHTML=Ua,Ds=o(),b=a("div"),b.innerHTML=Qa,De=a("p"),De.innerHTML=Za,$s=o(),D=a("h3"),D.innerHTML=Ja,As=o(),$e=a("p"),$e.innerHTML=Xa,Os=o(),Ae=a("ol"),Ae.innerHTML=el,Vs=o(),$=a("h2"),$.innerHTML=tl,Ys=o(),Oe=a("p"),Oe.textContent=sl,Rs=o(),Ve=a("p"),Ve.textContent=nl,Fs=o(),g=a("div"),g.innerHTML=al,Ye=a("p"),Ye.innerHTML=ll,Ws=o(),Re=a("p"),Re.innerHTML=il,Ns=o(),Fe=a("p"),Fe.textContent=ol,Bs=o(),We=a("p"),We.textContent=pl,Us=o(),Ne=a("ol"),Ne.innerHTML=rl,Qs=o(),Be=a("p"),Be.textContent=ul,Zs=o(),A=a("h3"),A.innerHTML=cl,Js=o(),Ue=a("p"),Ue.textContent=hl,Xs=o(),y=a("div"),y.innerHTML=fl,Qe=a("p"),Qe.innerHTML=dl,en=o(),Ze=a("p"),Ze.innerHTML=vl,tn=o(),Je=a("p"),Je.innerHTML=ml,sn=o(),O=a("h3"),O.innerHTML=kl,nn=o(),Xe=a("p"),Xe.innerHTML=wl,an=o(),et=a("p"),et.textContent=bl,ln=o(),V=a("h3"),V.innerHTML=gl,on=o(),tt=a("p"),tt.innerHTML=yl,pn=o(),st=a("ol"),st.innerHTML=Tl,rn=o(),T=a("div"),T.innerHTML=Hl,nt=a("p"),nt.innerHTML=xl,un=o(),Y=a("h2"),Y.innerHTML=Ll,cn=o(),at=a("p"),at.
58innerHTML=Ml,hn=o(),lt=a("p"),lt.innerHTML=_l,fn=o(),it=a("ul"),it.innerHTML=Cl,dn=o(),R=a("h3"),R.innerHTML=Sl,vn=o(),ot=a("p"),ot.innerHTML=Pl,mn=o(),pt=a("ul"),pt.innerHTML=jl,kn=o(),rt=a("p"),rt.textContent=Kl,wn=o(),H=a("div"),H.innerHTML=Il,ut=a("p"),ut.innerHTML=ql,bn=o(),ct=a("p"),ct.innerHTML=zl,gn=o(),ht=a("p"),ht.innerHTML=El,yn=o(),ft=a("pre"),Tn=new jt(!1),Hn=o(),dt=a("p"),dt.textContent=Gl,xn=o(),vt=a("pre"),Ln=new jt(!1),Mn=o(),mt=a("p"),mt.innerHTML=Dl,_n=o(),kt=a("p"),kt.innerHTML=$l,Cn=o(),F=a("h3"),F.innerHTML=Al,Sn=o(),wt=a("p"),wt.innerHTML=Ol,Pn=o(),x=a("div"),x.innerHTML=Vl,bt=a("p"),bt.innerHTML=Yl,jn=o(),gt=a("p"),gt.innerHTML=Rl,Kn=o(),yt=a("p"),yt.innerHTML=Fl,In=o(),Tt=a("p"),Tt.innerHTML=Wl,qn=o(),W=a("h3"),W.innerHTML=Nl,zn=o(),Ht=a("p"),Ht.innerHTML=Bl,En=o(),xt=a("p"),xt.innerHTML=Ul,Gn=o(),L=a("div"),L.innerHTML=Ql,Lt=a("p"),Lt.innerHTML=Zl,Dn=o(),Mt=a("p"),Mt.innerHTML=Jl,$n=o(),N=a("h2"),N.innerHTML=Xl,An=o(),_t=a("p"),_t.textContent=ei,On=o(),Ct=a("p"),Ct.innerHTML=ti,Vn=o(),St=a("p"),St.textContent=si,Yn=o(),B=a("h2"),B.innerHTML=ni,Rn=o(),Nn(Pt.$$.fragment),this.h()},l(e){c=l(e,"P",{"data-svelte-h":!0}),i(c)!=="svelte-153m7wx"&&(c.innerHTML=C),M=p(e),d=l(e,"P",{"data-svelte-h":!0}),i(d)!=="svelte-i1t1wn"&&(d.textContent=h),f=p(e),Bn(_.$$.fragment,e),zt=p(e),U=l(e,"P",{"data-svelte-h":!0}),i(U)!=="svelte-1qh3ope"&&(U.innerHTML=Xn),Et=p(e),Q=l(e,"P",{"data-svelte-h":!0}),i(Q)!=="svelte-u8lrdx"&&(Q.innerHTML=ea),Gt=p(e),S=l(e,"H2",{id:!0,"data-svelte-h":!0}),i(S)!=="svelte-11xeed7"&&(S.innerHTML=ta),Dt=p(e),Z=l(e,"P",{"data-svelte-h":!0}),i(Z)!=="svelte-1njnvyf"&&(Z.innerHTML=sa),$t=p(e),J=l(e,"BLOCKQUOTE",{"data-svelte-h":!0}),i(J)!=="svelte-y5l2qw"&&(J.innerHTML=na),At=p(e),X=l(e,"P",{"data-svelte-h":!0}),i(X)!=="svelte-1k52v8"&&(X.innerHTML=aa),Ot=p(e),v=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(v)!=="svelte-1ksdyvb"&&(v.innerHTML=la),ee=l(e,"P",{"data-svelte-h":!0}),i(ee)!=="svelte-grepw5"&&(ee.innerHTML=ia),Vt=p(e),te=l(e,"P",{"data-svelte-h":!0}),i(te)!=="svelte-mlfe3f"&&(te.textContent=oa),Yt=p(e),se=l(e,"P",{"data-svelte-h":!0}),i(se)!=="svelte-qhnjj4"&&(se.textContent=pa),Rt=p(e),ne=l(e,"OL",{"data-svelte-h":!0}),i(ne)!=="svelte-vjnbk"&&(ne.innerHTML=ra),Ft=p(e),ae=l(e,"P",{"data-svelte-h":!0}),i(ae)!=="svelte-lf3o5x"&&(ae.innerHTML=ua),Wt=p(e),P=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(P)!=="svelte-rfzbud"&&(P.innerHTML=ca),Nt=p(e),le=l(e,"P",{"data-svelte-h":!0}),i(le)!=="svelte-eqzx1b"&&(le.innerHTML=ha),Bt=p(e),ie=l(e,"P",{"data-svelte-h":!0}),i(ie)!=="svelte-tom3mm"&&(ie.innerHTML=fa),Ut=p(e),oe=l(e,"BLOCKQUOTE",{"data-svelte-h":!0}),i(oe)!=="svelte-14wgbnk"&&(oe.innerHTML=da),Qt=p(e),m=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(m)!=="svelte-153e156"&&(m.innerHTML=va),pe=l(e,"P",{"data-svelte-h":!0}),i(pe)!=="svelte-1kedn8h"&&(pe.innerHTML=ma),Zt=p(e),re=l(e,"P",{"data-svelte-h":!0}),i(re)!=="svelte-1a2r531"&&(re.textContent=ka),Jt=p(e),j=l(e,"H4",{id:!0,"data-svelte-h":!0}),i(j)!=="svelte-nkzfj8"&&(j.innerHTML=wa),Xt=p(e),ue=l(e,"P",{"data-svelte-h":!0}),i(ue)!=="svelte-1qwbdwe"&&(ue.textContent=ba),es=p(e),ce=l(e,"P",{"data-svelte-h":!0}),i(ce)!=="svelte-1wi7v00"&&(ce.innerHTML=ga),ts=p(e),K=l(e,"H5",{id:!0,"data-svelte-h":!0}),i(K)!=="svelte-1kbmvu0"&&(K.innerHTML=ya),ss=p(e),he=l(e,"OL",{"data-svelte-h":!0}),i(he)!=="svelte-i1jfno"&&(he.innerHTML=Ta),ns=p(e),fe=l(e,"PRE",{class:!0});var s=Kt(fe);
58as=It(s,!1),s.forEach(t),ls=p(e),I=l(e,"OL",{start:!0,"data-svelte-h":!0}),i(I)!=="svelte-1jxdn6s"&&(I.innerHTML=Ha),is=p(e),de=l(e,"PRE",{class:!0});var ai=Kt(de);os=It(ai,!1),ai.forEach(t),ps=p(e),q=l(e,"OL",{start:!0,"data-svelte-h":!0}),i(q)!=="svelte-wil4nz"&&(q.innerHTML=xa),rs=p(e),ve=l(e,"PRE",{class:!0});var li=Kt(ve);us=It(li,!1),li.forEach(t),cs=p(e),z=l(e,"OL",{start:!0,"data-svelte-h":!0}),i(z)!=="svelte-mro12l"&&(z.innerHTML=La),hs=p(e),me=l(e,"PRE",{class:!0});var ii=Kt(me);fs=It(ii,!1),ii.forEach(t),ds=p(e),ke=l(e,"P",{"data-svelte-h":!0}),i(ke)!=="svelte-4pr7wa"&&(ke.innerHTML=Ma),vs=p(e),we=l(e,"P",{"data-svelte-h":!0}),i(we)!=="svelte-vm2k6x"&&(we.textContent=_a),ms=p(e),k=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(k)!=="svelte-p77bv7"&&(k.innerHTML=Ca),be=l(e,"P",{"data-svelte-h":!0}),i(be)!=="svelte-kmleb4"&&(be.innerHTML=Sa),ks=p(e),ge=l(e,"P",{"data-svelte-h":!0}),i(ge)!=="svelte-lwqzx7"&&(ge.textContent=Pa),ws=p(e),E=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(E)!=="svelte-vkdwsr"&&(E.innerHTML=ja),bs=p(e),ye=l(e,"P",{"data-svelte-h":!0}),i(ye)!=="svelte-1wbfo7b"&&(ye.textContent=Ka),gs=p(e),Te=l(e,"P",{"data-svelte-h":!0}),i(Te)!=="svelte-o3lbn7"&&(Te.innerHTML=Ia),ys=p(e),He=l(e,"P",{"data-svelte-h":!0}),i(He)!=="svelte-gd0hmn"&&(He.innerHTML=qa),Ts=p(e),xe=l(e,"P",{"data-svelte-h":!0}),i(xe)!=="svelte-1q3zvmy"&&(xe.innerHTML=za),Hs=p(e),Le=l(e,"P",{"data-svelte-h":!0}),i(Le)!=="svelte-5ksdj5"&&(Le.textContent=Ea),xs=p(e),Me=l(e,"P",{"data-svelte-h":!0}),i(Me)!=="svelte-15adgyl"&&(Me.innerHTML=Ga),Ls=p(e),_e=l(e,"PRE",{class:!0});var oi=Kt(_e);Ms=It(oi,!1),oi.forEach(t),_s=p(e),Ce=l(e,"P",{"data-svelte-h":!0}),i(Ce)!=="svelte-ngpj90"&&(Ce.innerHTML=Da),Cs=p(e),w=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(w)!=="svelte-zelom7"&&(w.innerHTML=$a),Se=l(e,"P",{"data-svelte-h":!0}),i(Se)!=="svelte-1ewvbjn"&&(Se.innerHTML=Aa),Ss=p(e),Pe=l(e,"P",{"data-svelte-h":!0}),i(Pe)!=="svelte-sdk2ht"&&(Pe.innerHTML=Oa),Ps=p(e),je=l(e,"OL",{"data-svelte-h":!0}),i(je)!=="svelte-1lei8jl"&&(je.innerHTML=Va),js=p(e),Ke=l(e,"P",{"data-svelte-h":!0}),i(Ke)!=="svelte-1obblqw"&&(Ke.innerHTML=Ya),Ks=p(e),Ie=l(e,"P",{"data-svelte-h":!0}),i(Ie)!=="svelte-s1jafz"&&(Ie.textContent=Ra),Is=p(e),G=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(G)!=="svelte-1gwhzf"&&(G.innerHTML=Fa),qs=p(e),qe=l(e,"P",{"data-svelte-h":!0}),i(qe)!=="svelte-9pznur"&&(qe.innerHTML=Wa),zs=p(e),ze=l(e,"P",{"data-svelte-h":!0}),i(ze)!=="svelte-1cp1alr"&&(ze.innerHTML=Na),Es=p(e),Ee=l(e,"P",{"data-svelte-h":!0}),i(Ee)!=="svelte-jdtp81"&&(Ee.innerHTML=Ba),Gs=p(e),Ge=l(e,"P",{"data-svelte-h":!0}),i(Ge)!=="svelte-1ycsbr1"&&(Ge.innerHTML=Ua),Ds=p(e),b=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(b)!=="svelte-pds815"&&(b.innerHTML=Qa),De=l(e,"P",{"data-svelte-h":!0}),i(De)!=="svelte-11o8v4b"&&(De.innerHTML=Za),$s=p(e),D=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(D)!=="svelte-1yfihct"&&(D.innerHTML=Ja),As=p(e),$e=l(e,"P",{"data-svelte-h":!0}),i($e)!=="svelte-587qcw"&&($e.innerHTML=Xa),Os=p(e),Ae=l(e,"OL",{"data-svelte-h":!0}),i(Ae)!=="svelte-1wnyyf1"&&(Ae.innerHTML=el),Vs=p(e),$=l(e,"H2",{id:!0,"data-svelte-h":!0}),i($)!=="svelte-x58zmc"&&($.innerHTML=tl),Ys=p(e),Oe=l(e,"P",{"data-svelte-h":!0}),i(Oe)!=="svelte-vb1x1o"&&(Oe.textContent=sl),Rs=p(e),Ve=l(e,"P",{"data-svelte-h":!0}),i(Ve)!=="svelte-1u8vaxc"&&(Ve.textContent=nl),Fs=p(e),g=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(g)!=="svelte-asa26w"&&(g.innerHTML=al),Ye=l(e,"P",{"data-svelte-h":!0}),i(Ye)!=="svelte-kxg1s3"&&(Ye.innerHTML=ll),Ws=p(e),Re=l(e,"P",{"data-svelte-h":!0}),i(Re)!=="svelte-y0n0rp"&&(Re.innerHTML=il),Ns=p(e),Fe=l(e,"P",{"data-svelte-h":!0}),i(Fe)!=="svelte-1vzeitk"&&(Fe.textContent=ol),Bs=p(e),We=l(e,"P",{"data-svelte-h":!0}),i(We)!=="svelte-1tcbcnq"&&(We.textContent=pl),Us=p(e),Ne=l(e,"OL",{"data-svelte-h":!0}),i(Ne)!=="svelte-zcrr9c"&&(Ne.innerHTML=rl),Qs=p(e),Be=l(e,"P",{"data-svelte-h":!0}),i(Be)!=="svelte-1bvh1bm"&&(Be.textContent=ul),Zs=p(e),A=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(A)!=="svelte-qvre57"&&(A.innerHTML=cl),Js=p(e),Ue=l(e,"P",{"data-svelte-h":!0}),i(Ue)!=="svelte-1s67pc7"&&(Ue.textContent=hl),Xs=p(e),y=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(y)!=="svelte-gy4wi2"&&(y.innerHTML=fl),Qe=l(e,"P",{"data-svelte-h":!0}),i(Qe)!=="svelte-1gevity"&&(Qe.innerHTML=dl),en=p(e),Ze=l(e,"P",{"data-svelte-h":!0}),i(Ze)!=="svelte-1n6n6je"&&(Ze.innerHTML=vl),tn=p(e),Je=l(e,"P",{"data-svelte-h":!0}),i(Je)!=="svelte-1ltx3vb"&&(Je.innerHTML=ml),sn=p(e),O=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(O)!=="svelte-8u3hnk"&&(O.innerHTML=kl),nn=p(e),Xe=l(e,"P",{"data-svelte-h":!0}),i(Xe)!=="svelte-mdq5aq"&&(Xe.innerHTML=wl),an=p(e),et=l(e,"P",{"data-svelte-h":!0}),i(et)!=="svelte-mnurgp"&&(et.textContent=bl),ln=p(e),V=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(V)!=="svelte-1m5omkh"&&(V.innerHTML=gl),on=p(e),tt=l(e,"P",{"data-svelte-h":!0}
58),i(tt)!=="svelte-nctd5x"&&(tt.innerHTML=yl),pn=p(e),st=l(e,"OL",{"data-svelte-h":!0}),i(st)!=="svelte-gu0d4c"&&(st.innerHTML=Tl),rn=p(e),T=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(T)!=="svelte-4zexlc"&&(T.innerHTML=Hl),nt=l(e,"P",{"data-svelte-h":!0}),i(nt)!=="svelte-hzmsaf"&&(nt.innerHTML=xl),un=p(e),Y=l(e,"H2",{id:!0,"data-svelte-h":!0}),i(Y)!=="svelte-1bcieet"&&(Y.innerHTML=Ll),cn=p(e),at=l(e,"P",{"data-svelte-h":!0}),i(at)!=="svelte-1bkciyx"&&(at.innerHTML=Ml),hn=p(e),lt=l(e,"P",{"data-svelte-h":!0}),i(lt)!=="svelte-6x04s"&&(lt.innerHTML=_l),fn=p(e),it=l(e,"UL",{"data-svelte-h":!0}),i(it)!=="svelte-ahrj42"&&(it.innerHTML=Cl),dn=p(e),R=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(R)!=="svelte-1bshrzs"&&(R.innerHTML=Sl),vn=p(e),ot=l(e,"P",{"data-svelte-h":!0}),i(ot)!=="svelte-1peqkf4"&&(ot.innerHTML=Pl),mn=p(e),pt=l(e,"UL",{"data-svelte-h":!0}),i(pt)!=="svelte-qjab5f"&&(pt.innerHTML=jl),kn=p(e),rt=l(e,"P",{"data-svelte-h":!0}),i(rt)!=="svelte-1xeqs1n"&&(rt.textContent=Kl),wn=p(e),H=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(H)!=="svelte-38xirp"&&(H.innerHTML=Il),ut=l(e,"P",{"data-svelte-h":!0}),i(ut)!=="svelte-8rhxki"&&(ut.innerHTML=ql),bn=p(e),ct=l(e,"P",{"data-svelte-h":!0}),i(ct)!=="svelte-fj772t"&&(ct.innerHTML=zl),gn=p(e),ht=l(e,"P",{"data-svelte-h":!0}),i(ht)!=="svelte-131h6jn"&&(ht.innerHTML=El),yn=p(e),ft=l(e,"PRE",{class:!0});var pi=Kt(ft);Tn=It(pi,!1),pi.forEach(t),Hn=p(e),dt=l(e,"P",{"data-svelte-h":!0}),i(dt)!=="svelte-sytbpl"&&(dt.textContent=Gl),xn=p(e),vt=l(e,"PRE",{class:!0});var ri=Kt(vt);Ln=It(ri,!1),ri.forEach(t),Mn=p(e),mt=l(e,"P",{"data-svelte-h":!0}),i(mt)!=="svelte-106ef9"&&(mt.innerHTML=Dl),_n=p(e),kt=l(e,"P",{"data-svelte-h":!0}),i(kt)!=="svelte-1mjw4oq"&&(kt.innerHTML=$l),Cn=p(e),F=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(F)!=="svelte-x69w1e"&&(F.innerHTML=Al),Sn=p(e),wt=l(e,"P",{"data-svelte-h":!0}),i(wt)!=="svelte-1xzy8zy"&&(wt.innerHTML=Ol),Pn=p(e),x=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(x)!=="svelte-10ps9ug"&&(x.innerHTML=Vl),bt=l(e,"P",{"data-svelte-h":!0}),i(bt)!=="svelte-1v4r669"&&(bt.innerHTML=Yl),jn=p(e),gt=l(e,"P",{"data-svelte-h":!0}),i(gt)!=="svelte-dg59tx"&&(gt.innerHTML=Rl),Kn=p(e),yt=l(e,"P",{"data-svelte-h":!0}),i(yt)!=="svelte-1can68s"&&(yt.innerHTML=Fl),In=p(e),Tt=l(e,"P",{"data-svelte-h":!0}),i(Tt)!=="svelte-rg2n0z"&&(Tt.innerHTML=Wl),qn=p(e),W=l(e,"H3",{id:!0,"data-svelte-h":!0}),i(W)!=="svelte-p5wa1m"&&(W.innerHTML=Nl),zn=p(e),Ht=l(e,"P",{"data-svelte-h":!0}),i(Ht)!=="svelte-1tu7ibl"&&(Ht.innerHTML=Bl),En=p(e),xt=l(e,"P",{"data-svelte-h":!0}),i(xt)!=="svelte-7ehrjp"&&(xt.innerHTML=Ul),Gn=p(e),L=l(e,"DIV",{style:!0,"data-svelte-h":!0}),i(L)!=="svelte-1mhsenq"&&(L.innerHTML=Ql),Lt=l(e,"P",{"data-svelte-h":!0}),i(Lt)!=="svelte-1hs3els"&&(Lt.innerHTML=Zl),Dn=p(e),Mt=l(e,"P",{"data-svelte-h":!0}),i(Mt)!=="svelte-1wmed07"&&(Mt.innerHTML=Jl),$n=p(e),N=l(e,"H2",{id:!0,"data-svelte-h":!0}),i(N)!=="svelte-kmpttn"&&(N.innerHTML=Xl),An=p(e),_t=l(e,"P",{"data-svelte-h":!0}),i(_t)!=="svelte-1dmx0rb"&&(_t.textContent=ei),On=p(e),Ct=l(e,"P",{"data-svelte-h":!0}),i(Ct)!=="svelte-1hv75hm"&&(Ct.innerHTML=ti),Vn=p(e),St=l(e,"P",{"data-svelte-h":!0}),i(St)!=="svelte-egm5rf"&&(St.textContent=si),Yn=p(e),B=l(e,"H2",{id:!0,"data-svelte-h":!0}),i(B)!=="svelte-16j8f54"&&(B.innerHTML=ni),Rn=p(e),Bn(Pt.$$.fragment,e),this.h()},h(){u(S,"id","the-priority-important-category"),r(v,"width","100%"),r(v,"height","0"),r(v,"padding-bottom","56%"),r(v,"position","relative"),u(P,"id","native-support-for-websockets-in-svelte"),r(m,"width","100%"),r(m,"height","0"),r(m,"padding-bottom","80%"),r(m,"position","relative"),u(j,"id","in-the-meantime"),u(K,"id","how-to-set-up-websockets-in-sveltekit"),as.a=null,u(fe,"class","language-bash"),u(I,"start","2"),os.a=null,u(de,"class","language-bash"),u(q,"start","3"),us.a=null,u(ve,"class","language-ts"),u(z,"start","4"),fs.a=null,u(me,"class","language-svelte"),r(k,"width","100%"),r(k,"height","0"),r(k,"padding-bottom","56%"),r(k,"position","relative"),u(E,"id","language-translations-and-i18n"),Ms.a=null,u(_e,"class","language-ts"),r(w,"width","100%"),r(w,"height","0"),r(w,"padding-bottom","56%"),r(w,"position","relative"),u(G,"id","provide-access-to-history-state"),r(b,"width","100%"),r(b,"height","0"),r(b,"padding-bottom","56%"),r(b,"position","relative"),u(D,"id","the-full-list-of-top-priority-features-for-sveltekit"),u($,"id","expectations-for-sveltekit-3"),r(g,"width","100%"),r(g,"height","0"),r(g,"padding-bottom","50%"),r(g,"position","relative"),u(A,"id","expanded-support-for-svelte-5"),r(y,"width","100%"),r(y,"height","0"),r(y,"padding-bottom","56%"),r(y,"position","relative"),u(O,"id","reroute-enhancements"),u(V,"id","the-full-list-of-current-sveltekit-3-features"),r(T,"width","100%"),r(T,"height","0"),r(T,"padding-bottom","100%"),r(T,"position","relative"),u(Y,"id","other-features"),u(R,"id","generated-types-for-pages-and-endpoints"),r(H,"width","100%"),r(H,"height","0"),r(H,"padding-bottom","56%"),r(H,"position","relative"),Tn.a=null,u(ft,"class","language-ts"),Ln.a=null,u(vt,"class","language-ts"),u(F,"id","image-processing"),r(x,"width","100%"),r(x,"height","0"),r(x,"padding-bottom","55%"),r(x,"position","relative"),u(W,"id","sitemaps-and-programmatically-get-all-routes"),r(L,"width","100%"),r(L,"height","0"),r(L,"padding-bottom","56%"),r(L,"position","relative"),u(N,"id","conclusion"),u(B,"id","faqs")},m(e,s){n(e,c,s),n(e,M,s),n(e,d,s),n(e,f,s),Un(_,e,s),n(e,zt,s),n(e,U,s),n(e,Et,s),n(e,Q,s),n(e,Gt,s),n(e,S,s),n(e,Dt,s),n(e,Z,s),n(e,$t,s),n(e,J,s),n(e,At,s),n(e,X,s),n(e,Ot,s),n(e,v,s),n(e,ee,s),n(e,Vt,s),n(e,te,s),n(e,Yt,s),n(e,se,s),n(e,Rt,s),n(e,ne,s),n(e,Ft,s),n(e,ae,s),n(e,Wt,s),n(e,P,s
58),n(e,Nt,s),n(e,le,s),n(e,Bt,s),n(e,ie,s),n(e,Ut,s),n(e,oe,s),n(e,Qt,s),n(e,m,s),n(e,pe,s),n(e,Zt,s),n(e,re,s),n(e,Jt,s),n(e,j,s),n(e,Xt,s),n(e,ue,s),n(e,es,s),n(e,ce,s),n(e,ts,s),n(e,K,s),n(e,ss,s),n(e,he,s),n(e,ns,s),n(e,fe,s),as.m(fi,fe),n(e,ls,s),n(e,I,s),n(e,is,s),n(e,de,s),os.m(di,de),n(e,ps,s),n(e,q,s),n(e,rs,s),n(e,ve,s),us.m(vi,ve),n(e,cs,s),n(e,z,s),n(e,hs,s),n(e,me,s),fs.m(mi,me),n(e,ds,s),n(e,ke,s),n(e,vs,s),n(e,we,s),n(e,ms,s),n(e,k,s),n(e,be,s),n(e,ks,s),n(e,ge,s),n(e,ws,s),n(e,E,s),n(e,bs,s),n(e,ye,s),n(e,gs,s),n(e,Te,s),n(e,ys,s),n(e,He,s),n(e,Ts,s),n(e,xe,s),n(e,Hs,s),n(e,Le,s),n(e,xs,s),n(e,Me,s),n(e,Ls,s),n(e,_e,s),Ms.m(ki,_e),n(e,_s,s),n(e,Ce,s),n(e,Cs,s),n(e,w,s),n(e,Se,s),n(e,Ss,s),n(e,Pe,s),n(e,Ps,s),n(e,je,s),n(e,js,s),n(e,Ke,s),n(e,Ks,s),n(e,Ie,s),n(e,Is,s),n(e,G,s),n(e,qs,s),n(e,qe,s),n(e,zs,s),n(e,ze,s),n(e,Es,s),n(e,Ee,s),n(e,Gs,s),n(e,Ge,s),n(e,Ds,s),n(e,b,s),n(e,De,s),n(e,$s,s),n(e,D,s),n(e,As,s),n(e,$e,s),n(e,Os,s),n(e,Ae,s),n(e,Vs,s),n(e,$,s),n(e,Ys,s),n(e,Oe,s),n(e,Rs,s),n(e,Ve,s),n(e,Fs,s),n(e,g,s),n(e,Ye,s),n(e,Ws,s),n(e,Re,s),n(e,Ns,s),n(e,Fe,s),n(e,Bs,s),n(e,We,s),n(e,Us,s),n(e,Ne,s),n(e,Qs,s),n(e,Be,s),n(e,Zs,s),n(e,A,s),n(e,Js,s),n(e,Ue,s),n(e,Xs,s),n(e,y,s),n(e,Qe,s),n(e,en,s),n(e,Ze,s),n(e,tn,s),n(e,Je,s),n(e,sn,s),n(e,O,s),n(e,nn,s),n(e,Xe,s),n(e,an,s),n(e,et,s),n(e,ln,s),n(e,V,s),n(e,on,s),n(e,tt,s),n(e,pn,s),n(e,st,s),n(e,rn,s),n(e,T,s),n(e,nt,s),n(e,un,s),n(e,Y,s),n(e,cn,s),n(e,at,s),n(e,hn,s),n(e,lt,s),n(e,fn,s),n(e,it,s),n(e,dn,s),n(e,R,s),n(e,vn,s),n(e,ot,s),n(e,mn,s),n(e,pt,s),n(e,kn,s),n(e,rt,s),n(e,wn,s),n(e,H,s),n(e,ut,s),n(e,bn,s),n(e,ct,s),n(e,gn,s),n(e,ht,s),n(e,yn,s),n(e,ft,s),Tn.m(wi,ft),n(e,Hn,s),n(e,dt,s),n(e,xn,s),n(e,vt,s),Ln.m(bi,vt),n(e,Mn,s),n(e,mt,s),n(e,_n,s),n(e,kt,s),n(e,Cn,s),n(e,F,s),n(e,Sn,s),n(e,wt,s),n(e,Pn,s),n(e,x,s),n(e,bt,s),n(e,jn,s),n(e,gt,s),n(e,Kn,s),n(e,yt,s),n(e,In,s),n(e,Tt,s),n(e,qn,s),n(e,W,s),n(e,zn,s),n(e,Ht,s),n(e,En,s),n(e,xt,s),n(e,Gn,s),n(e,L,s),n(e,Lt,s),n(e,Dn,s),n(e,Mt,s),n(e,$n,s),n(e,N,s),n(e,An,s),n(e,_t,s),n(e,On,s),n(e,Ct,s),n(e,Vn,s),n(e,St,s),n(e,Yn,s),n(e,B,s),n(e,Rn,s),Un(Pt,e,s),Fn=!0},p:yi,i(e){Fn||(Qn(_.$$.fragment,e),Qn(Pt.$$.fragment,e),Fn=!0)},o(e){Zn(_.$$.fragment,e),Zn(Pt.$$.fragment,e),Fn=!1},d(e){e&&(t(c),t(M),t(d),t(f),t(zt),t(U),t(Et),t(Q),t(Gt),t(S),t(Dt),t(Z),t($t),t(J),t(At),t(X),t(Ot),t(v),t(ee),t(Vt),t(te),t(Yt),t(se),t(Rt),t(ne),t(Ft),t(ae),t(Wt),t(P),t(Nt),t(le),t(Bt),t(ie),t(Ut),t(oe),t(Qt),t(m),t(pe),t(Zt),t(re),t(Jt),t(j),t(Xt),t(ue),t(es),t(ce),t(ts),t(K),t(ss),t(he),t(ns),t(fe),t(ls),t(I),t(is),t(de),t(ps),t(q),t(rs),t(ve),t(cs),t(z),t(hs),t(me),t(ds),t(ke),t(vs),t(we),t(ms),t(k),t(be),t(ks),t(ge),t(ws),t(E),t(bs),t(ye),t(gs),t(Te),t(ys),t(He),t(Ts),t(xe),t(Hs),t(Le),t(xs),t(Me),t(Ls),t(_e),t(_s),t(Ce),t(Cs),t(w),t(Se),t(Ss),t(Pe),t(Ps),t(je),t(js),t(Ke),t(Ks),t(Ie),t(Is),t(G),t(qs),t(qe),t(zs),t(ze),t(Es),t(Ee),t(Gs),t(Ge),t(Ds),t(b),t(De),t($s),t(D),t(As),t($e),t(Os),t(Ae),t(Vs),t($),t(Ys),t(Oe),t(Rs),t(Ve),t(Fs),t(g),t(Ye),t(Ws),t(Re),t(Ns),t(Fe),t(Bs),t(We),t(Us),t(Ne),t(Qs),t(Be),t(Zs),t(A),t(Js),t(Ue),t(Xs),t(y),t(Qe),t(en),t(Ze),t(tn),t(Je),t(sn),t(O),t(nn),t(Xe),t(an),t(et),t(ln),t(V),t(on),t(tt),t(pn),t(st),t(rn),t(T),t(nt),t(un),t(Y),t(cn),t(at),t(hn),t(lt),t(fn),t(it),t(dn),t(R),t(vn),t(ot),t(mn),t(pt),t(kn),t(rt),t(wn),t(H),t(ut),t(bn),t(ct),t(gn),t(ht),t(yn),t(ft),t(Hn),t(dt),t(xn),t(vt),t(Mn),t(mt),t(_n),t(kt),t(Cn),t(F),t(Sn),t(wt),t(Pn),t(x),t(bt),t(jn),t(gt),t(Kn),t(yt),t(In),t(Tt),t(qn),t(W),t(zn),t(Ht),t(En),t(xt),t(Gn),t(L),t(Lt),t(Dn),t(Mt),t($n),t(N),t(An),t(_t),t(On),t(Ct),t(Vn),t(St),t(Yn),t(B),t(Rn)),Jn(_,e),Jn(Pt,e)}
58}}function Si(qt){let c,C;const M=[qt[0],hi];let d={$$slots:{default:[Ci]},$$scope:{ctx:qt}};for(let h=0;h<M.length;h+=1)d=Wn(d,M[h]);return c=new Li({props:d}),{c(){Nn(c.$$.fragment)},l(h){Bn(c.$$.fragment,h)},m(h,f){Un(c,h,f),C=!0},p(h,[f]){const _=f&1?xi(M,[f&1&&ci(h[0]),f&0&&ci(hi)]):{};f&2&&(_.$$scope={dirty:f,ctx:h}),c.$set(_)},i(h){C||(Qn(c.$$.fragment,h),C=!0)},o(h){Zn(c.$$.fragment,h),C=!1},d(h){Jn(c,h)}}}const hi={title:"The SvelteKit Roadmap",description:"This article goes through some the priorities of the SvelteKit team and discusses the upcoming features being introduced to SvelteKit this year. We also look at what's currently scheduled for SvelteKit v3.",datePublished:"2024-02-05T01:40:00+10:00",dateModified:"2024-02-05T01:40:00+10:00",categories:["svelte"],articleType:"article",skillLevel:"intermediate",published:!0,author:"Jack Landon",image:"/post-images/sveltekit-roadmap/sveltekit-roadmap.jpg",faqs:[{question:"Does SvelteKit have a public roadmap?",answer:"The public roadmap for SvelteKit is very minimal and does not mention any of the upcoming features. It is best to go to the SvelteKit GitHub and looks through the issues an milestones to get an idea of when features will be released."},{question:"Does SvelteKit have Websockets?",answer:"SvelteKit does not have websockets natively built in yet. It is on the roadmap however and is expected to be introduced into the meta-framework some time in 2024."}],headings:[{depth:2,value:"The Priority Important Category",id:"the-priority-important-category"},{depth:3,value:"Native Support for Websockets in Svelte",id:"native-support-for-websockets-in-svelte"},{depth:4,value:"In the meantime",id:"in-the-meantime"},{depth:5,value:"How to set up websockets in SvelteKit",id:"how-to-set-up-websockets-in-sveltekit"},{depth:3,value:"Language Translations and i18n",id:"language-translations-and-i18n"},{depth:3,value:"Provide Access to History State",id:"provide-access-to-history-state"},{depth:3,value:"The full list of top priority features for SvelteKit",id:"the-full-list-of-top-priority-features-for-sveltekit"},{depth:2,value:"Expectations for SvelteKit 3",id:"expectations-for-sveltekit-3"},{depth:3,value:"Expanded support for Svelte 5",id:"expanded-support-for-svelte-5"},{depth:3,value:"reroute Enhancements",id:"reroute-enhancements"},{depth:3,value:"The full list of current SvelteKit 3 features",id:"the-full-list-of-current-sveltekit-3-features"},{depth:2,value:"Other Features",id:"other-features"},{depth:3,value:"Generated Types For Pages and Endpoints",id:"generated-types-for-pages-and-endpoints"},{depth:3,value:"Image Processing",id:"image-processing"},{depth:3,value:"Sitemaps and programmatically get all routes",id:"sitemaps-and-programmatically-get-all-routes"},{depth:2,value:"Conclusion",id:"conclusion"},{depth:2,value:"FAQ’s",id:"faqs"}]};function Pi(qt,c,C){return qt.$$set=M=>{C(0,c=Wn(Wn({},c),ui(M)))},c=ui(c),[c]}class zi extends Ti{constructor(c){super(),Hi(this,c,Pi,Si,gi,{})}}export{zi as default,hi as metadata};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.