[HN Gopher] SvelteKit 1.0
       ___________________________________________________________________
        
       SvelteKit 1.0
        
       Author : theodorejb
       Score  : 615 points
       Date   : 2022-12-14 17:15 UTC (5 hours ago)
        
 (HTM) web link (svelte.dev)
 (TXT) w3m dump (svelte.dev)
        
       | FractalHQ wrote:
       | Sveltekit has been transformational for me. I can't express
       | enough gratitude to the legendary team who made this happen.
       | Congrats guys!!!
        
       | adamnemecek wrote:
       | Perfect timing!
       | 
       | I literally started working on a project in Svelte after spending
       | like two afternoons trying to do it in React.
       | 
       | Svelte is such a God send. So much simpler and powerful than
       | React. Not to mention the fact that React only handles the UI
       | layer but is too unopinionated w.r.t. the application
       | architecture.
        
       | omnibrain wrote:
       | All the praise for SvelteKit in this thread peaked my interest.
       | But where would I start?
       | 
       | I'm currently looking around to find a modern "toolkit" to write
       | a new webbased frontend for our traditional desktop app. It's
       | goin to be more or less CRUD with lots of tables/grids.
       | 
       | Currently I favour vue.js with Quasar because of all the tooling
       | and ressources it offers. It looks like it's easy to start with a
       | traditional "navigation on the left, content on the right"
       | layout.
       | 
       | I need nothing fancy, it's going to be business CRUD for a small
       | circle of users. Deployed on premises at our customers sites.
        
         | arxpoetica wrote:
         | You can start here: https://learn.svelte.dev/tutorial/welcome-
         | to-svelte
        
           | cschmidt wrote:
           | It is a really wonderful interactive tutorial. So well done.
        
           | encryptluks2 wrote:
           | > Yikes! We couldn't start the app. Please ensure third party
           | cookies are enabled for this site.
           | 
           | Yikes! No thanks.
        
             | swyx wrote:
             | or go incognito mode
        
             | samtp wrote:
             | You can also just install the demo package and play around
             | with it on your own computer.
        
         | theo-steiner wrote:
         | https://learn.svelte.dev/ is a great place to start!
        
       | pier25 wrote:
       | Bravo! Congrats!
        
       | domakidis wrote:
       | What would be the best route to upgrade a medium sized project
       | from say `1.0.0-next.263`?
       | 
       | There's 327 intermediate versions up to this one and a
       | considerable amount of breaking changes.
        
       | stephenstuder wrote:
       | Its so freaking good, hope large orgs start using it
        
       | efields wrote:
       | Congrats to Svelte. More than a couple years ago, I gave my team
       | the opportunity to go React, Vue or Svelte after giving them time
       | to test them out. React was basically the legacy code that we
       | were familiar with. This was right around the first hooks release
       | and after using it for a while, and we had a nasty redux state
       | manager, and nothing about React felt truly great for DX besides
       | JSX, and that was everywhere already.
       | 
       | I'm happy with Vue but every time I look at Svelte code I get a
       | bit jealous. Its a very nice environment, one I would pick up for
       | personal projects if that time was there, and I wish Svelte
       | godspeed and a huge adoption curve.
        
       | samtp wrote:
       | While the breaking changes were rough this year, the new
       | structure is a huge improvement over before. It is now extremely
       | clear the order that items are loaded, and what is loaded on the
       | server vs client. Form actions are also amazing.
       | 
       | Congrats to the team and thanks for all the hard work!
        
       | SebastianKra wrote:
       | While I like Svelte, I fear it looses some of the flexible API-
       | building enabled by React.
       | 
       | Specifically: since it uses a templating system, you can't pass
       | around interface definitions easily:
       | 
       | - https://github.com/sveltejs/svelte/issues/3480 (no dynamic
       | slots)
       | 
       | - https://github.com/sveltejs/svelte/issues/5381 (can't wrap
       | children)
       | 
       | You can always find workarounds for these cases, often using
       | `<svelte:component>`, but React's Javascript/Typescript-centric
       | design avoids such issues before they even occur. For instance, I
       | can trivially define a tabbed interface by mixing strings, JSX,
       | and components, without imposing any DOM-structure. The component
       | that reads this definition can use it to build a tabbed-view on
       | mobile, and a master-detail-view on desktop. It could even build
       | a table of contents.
       | 
       | In the definition, I can still work mostly with strings, but fall
       | back to JSX in the rare case where I do need some advanced
       | formatting:                 const tabs = [        { name: "Tab
       | 1", icon: <img ... />, content: MainTab },        { name: <>Tab
       | with <b>bold<b/> text</>, icon: <MyIconComponent ... />, content:
       | SecondTab },       ]
       | 
       | Again, I like Svelte, but I'm not yet sure whether the better
       | syntax is worth the reduced expressivity.
        
         | sesm wrote:
         | Not sure what you mean by `React's Typescript-centric design`,
         | React used Flow from the very start and also had PropTypes for
         | plain JS. Typescript support came much later.
        
           | SebastianKra wrote:
           | I was thinking about the full power of JavaScript while still
           | being perfectly typesafe.
           | 
           | I edited the comment to hopefully better reflect that.
        
       | foxbee wrote:
       | I've been waiting for this for months! Credit to the team.
       | Looking forward to the weekend to play around with it. Also,
       | super excited for svelte 4
        
       | Tade0 wrote:
       | As someone who wrote his first lines of JS in 2001, working with
       | Svelte feels a lot like the good old days of JS when front-end
       | was simple.
       | 
       | To me the main selling point is that the stack trace is actually
       | useful for a change - you especially can find in there the line
       | which caused the re-render and subsequent error.
       | 
       | JS frameworks/libraries by and large lost that feature a decade
       | ago.
        
       | jerriclynsjohn wrote:
       | Been using Sveltekit and love what the community has done to the
       | framework. Makes life of a developer very straightforward and I'm
       | sure that Sveltekit will rise to be a dominant frontend framework
       | soon.
        
       | jmull wrote:
       | I'm just completing a job using svelte/kit, tailwind, postgres,
       | typescript.
       | 
       | Actually, I was new to the entire stack, but it went smooth as
       | butter. (Though I have plenty of experience with JS, HTML, CSS,
       | other databases, etc.)
       | 
       | IMO, svelte and sveltekit are well designed and have a great dev
       | experience.
       | 
       | LOL, as I was writing this he was apologizing on the stream for
       | the breaking changes. That was a bit of a pain, but not really
       | that bad. My only real gripe is using folders to organize both
       | layout hierarchy and route hierarchy is going to turn out to be a
       | mistake.
        
         | crucialfelix wrote:
         | Yes, it's easy to get confused with folders and folders of
         | +page.svelte
         | 
         | [slug].svelte would be better [slug]/index.svelte
         | [slug]/[category].svelte
         | 
         | Etc
         | 
         | There is a vscode extension that helps a little bit, but it's
         | still the one thing I am not fond of.
        
           | yencabulator wrote:
           | The src/routes/posts/[slug]/+page.svelte thing is pretty
           | recent, it used to be just src/routes/posts/[slug].svelte.
           | I'm not exactly thrilled with the new naming...
        
             | MentallyRetired wrote:
             | I left the framework for this reason. When I asked about
             | it, I was told "this is what Next will be doing soon". I
             | need more reasoning than that, and it was indicative of the
             | decision making process. Turned me off. Aside from that,
             | Svelte is SUPER fast and easy to use. I may give it another
             | go at some point.
        
         | culi wrote:
         | > My only real gripe is using folders to organize both layout
         | hierarchy and route hierarchy is going to turn out to be a
         | mistake.
         | 
         | +1 to this. I think Next.js made this mistake too and is now
         | backtracking
        
       | kretaceous wrote:
       | SvelteKit 1.0 is the one release I was actually waiting for. I've
       | seen a lot of flashy stuff launch in the frontend framework
       | recently but this one feels...genuine?
       | 
       | Huge congratulations to Rich and team! Hope I'll be able to
       | contribute to Svelte's growth someday.
        
       | moklick wrote:
       | Congrats to the launch. This looks so good :)
        
       | dceddia wrote:
       | Exciting to see this hit 1.0! The new tutorial site looks great
       | and I love that the sidebar is searchable now. Also the Cmd-K
       | search on the docs (https://kit.svelte.dev/) is awesome to have
       | as well.
       | 
       | I've been really enjoying working with Svelte for the last year
       | or so now. My main project is a video editor, running under Tauri
       | and using plain client-side Svelte, but I've also used SvelteKit
       | to throw together a few little admin dashboard-y things and it's
       | been very quick to get started with. Right now those projects are
       | pretty lightweight too, just SvelteKit with TypeScript, the pg-
       | promise package to connect with Postgres, and a handful of
       | handwritten SQL queries.
       | 
       | Congrats to the team! Looking forward to see what the future
       | holds for Svelte[Kit].
        
       | qprofyeh wrote:
       | While most of the comments here seem positive... A custom
       | template language is like another programming language to learn
       | (to make mistakes in). I prefer JSX/TSX which is closer to
       | reusing HTML.
        
         | dcre wrote:
         | Speaking as nearly-exclusively a JSX/TSX user, it is not really
         | true that it is closer to HTML than Svelte's templating. People
         | who like and use Svelte report the opposite.
        
           | ovao wrote:
           | Agree with this. Iterating with Array.map and returning nodes
           | to compose, say, unordered lists in JSX is most decidedly un-
           | HTML-like.
           | 
           | I can see the drawback to learning yet another templating
           | language, and on this point I'd just say "to each their own".
           | I feel like either approach is fine. Svelte's templating is
           | _pretty_ minimal, so there isn't much to learn.
        
         | kalkr wrote:
         | IMO Svelte feels much more like HTML than JSX does.
        
       | hu3 wrote:
       | This is how I move fast and break nothing. By having fullstack
       | type-safety from database all the way to the frontend with auto-
       | completion. My current stack:
       | 
       | + SvelteKit (could be Next, Nuxt, Solid or any other TypeScript
       | framework)
       | 
       | + tRPC (typed calls between frontend and backend,
       | https://trpc.io)
       | 
       | + trpc-sveltekit (glues SvelteKit and tRPC,
       | https://github.com/icflorescu/trpc-sveltekit)
       | 
       | + Prisma (ORM, https://www.prisma.io)
        
         | capableweb wrote:
         | > This is how I move fast and break nothing
         | 
         | Absolutely impressive how you are one of the first to find a
         | approach that leads to a 100% bug-free development methodology.
         | 
         | Or, you still have bugs right, so sometimes things break? Maybe
         | you meant something like: _This is how I move fast and don 't
         | have a certain section of bugs anymore_?
        
           | throwaway39048 wrote:
           | I bet they don't even move "fast" since that's relative and
           | we haven't determined any baseline paramters. Very
           | misleading. The comment should be "This is how I move
           | (metaphorically speaking, not physically e.g. increased
           | typing speed) with what I perceive to be faster than
           | alternative stacks that I have explored and that doesn't have
           | a certain section of bugs anymore".
        
         | gavinray wrote:
         | I use the same, but with Hasura and Next.js with GraphQL
         | 
         | + Next.js
         | 
         | + GraphQL Zeus / GraphQL Code Generator (typed calls between
         | frontend/backend)
         | 
         | + Hasura (generates GraphQL API for database)
        
         | gmaster1440 wrote:
         | Curious how you handle `request.formData()` in Form Actions and
         | ensuring type safety there.
        
           | naasking wrote:
           | > Curious how you handle `request.formData()` in Form Actions
           | and ensuring type safety there.
           | 
           | Hopefully the same way typed programming languages do it:
           | parsing and type checking.
        
           | hu3 wrote:
           | We use and recommend Zod for that:
           | 
           | https://github.com/colinhacks/zod#error-handling
        
           | harunurhan wrote:
           | Like any user input, you do runtime type-checking and
           | validation. TypeScript is especially great for that because
           | it has type narrowing [0].
           | 
           | [0] - https://www.typescriptlang.org/docs/handbook/2/narrowin
           | g.htm...
        
         | whycombagator wrote:
         | How do you typically deploy such a stack?
        
         | JoeyJoJoJr wrote:
         | You should also mention Zod, which acts as the type safe glue
         | between the different boundaries.
         | 
         | I have been using Google Sheets as a kind of hacky database. By
         | defining the schemas in Zod I am able to automatically validate
         | my sheets data and coerce the string cell values into their
         | proper types.
         | 
         | Zod schemas can be used all over the stack, imported for form
         | validation, and avoid heaps of duplication and tests.
        
           | mccorrinall wrote:
           | While Zod is hyped by Next.ja developers (I think mostly
           | because Theo Brown has such a huge reach), I think Ajv is
           | better, because it lets you generate OpenAPI documentation
           | and it fully json schema compliant.
           | 
           | I really like nextjs for its opinions on the frontend part,
           | but it is lacking these strong, but great opinions on the
           | backend. Wish love to see some design decisions from fastify
           | adopted here. Matteo did really do some great stuff.
        
             | intelekshual wrote:
             | Zod has plugins that let you generate OpenAPI specs (and TS
             | types, and JSON Schema, etc.) from your Zod schemas, so if
             | that's the only reason you think Ajv is better, then it
             | might be time to take another look at Zod? It really is
             | great, especially if you buy into the "parse, don't
             | validate" principle that it's built around.
        
         | mitch3x3 wrote:
         | How are you liking Prisma compared to a pure SQL approach?
        
           | qudat wrote:
           | When I used prisma a few years ago I was not impressed and it
           | couldn't do a lot of what I needed so I had to dump into raw
           | sql queries anyway. It was easier for me to use knex and get
           | the types mostly right.
        
             | lf-non wrote:
             | You should take a look at ts-sql-query [1] - it is not as
             | popular as the older alternatives that have been around for
             | a while, but it is a very feature rich query builder that
             | takes type safety very seriously and supports most
             | mainstream databases.
             | 
             | [1] https://ts-sql-query.readthedocs.io
        
             | Trufa wrote:
             | A lot has changed in the past years of Prisma, it's a
             | really great tool, to be honest, "raw sql" escape hatches
             | to do anything raw when you need it, if you haven't tried
             | it in years, I'd recommend you to try again since if you
             | tried it years ago, it was a very different maturity level.
        
               | abraxas wrote:
               | Do they (Prisma) still rely on a Rust sidecar? This
               | caused multiple issues with container deployment and the
               | CI/CD pipeline of my employer.
        
               | braden-lk wrote:
               | I believe the sidecar is optional now, and I think even
               | the one that exists comes in the form of their paid
               | service called Prisma Proxy. It doesn't seem necessary
               | for most use cases.
        
           | devjab wrote:
           | I'm not the person you ask, but we use fullstack Typescript
           | in our dev department. We're a weird mix of a green energy
           | company and an investment bank, so inhouse development is
           | very small-scale, and this means you share resources. Using
           | one language for everything helps with this, since the one
           | person who is really good at React can take a vacation or a
           | sickday without being glued to a laptop since everyone else
           | can also work on the front-end even though it's not their
           | daily thing (and vice versa). More than that though it lets
           | us do things like code reviews, troubleshoot solutions and
           | generally work together really well, even though we're
           | working on very different projects. It also lets us build
           | libraries that can be used for everything. One example is our
           | ODATA query and client library, which makes it incredibly
           | easy to debug issues related to it, because everyone uses it.
           | 
           | Anyway, the one place where Typescript isn't great in the
           | fullstack approach is the Database stuff. We used Prismo for
           | the better part of a year, until we eventually moved on to
           | Mikro-orm which has been great so far.
           | 
           | I'm personally not a big fan of OOP or "over architecture",
           | because I've seen how bad it can go too many times. Instead I
           | favour functional programming and keeping things as simple as
           | possible, even having "almost duplicate" code once in a
           | while. So with this in mind, it may strike you as odd that we
           | moved from Prisma to Mirko-orm, but Prisma just clashes with
           | the way we want an ORM to work in so many ways.
           | 
           | Maybe this is by design. Prisma doesn't want to be a "real"
           | ORM after all, but things like having to put everything in a
           | single schema file is bothersome. Yes, you can put it in
           | different files and then cat them together, but that leads to
           | other issues. Like the VSC Prisma extension highlights not
           | working outside the main Prisma.Schema file. More than that
           | though. We like to have "ID, UpdatedAt, UpdatedBy, CreatedAt"
           | sort of things on basically all our models, and since Prisma
           | doesn't have the inheritance I almost never use, that means
           | you need to duplicate it soooo many times. It's also hard to
           | write generic methods for basic CRUD stuff because of the way
           | Prisma uses the Prisma Client Classes it auto-generates to
           | operate. On top of that, migrations can't go backwards in
           | Prisma.
           | 
           | Some of these issues are on the Prisma road map, others
           | aren't, and you're always going to bang heads with an ORM,
           | but Prisma just didn't feel as mature as it's extremely
           | excellent documentation (and marketing) might lead you to
           | believe in my experience.
           | 
           | I can certainly see myself using it again, once their roadmap
           | is a little further ahead though.
        
             | ravenstine wrote:
             | Duplicate code is one of the biggest near-non-problems
             | programmers waste a ton of time trying to address.
             | 
             | Sure, duplication isn't a goal, but DRY shouldn't hold back
             | work as long as it has no meaningful consequence on
             | performance. In some cases, duplication is a good thing,
             | but your average programmer will address duplication by
             | making a routing more complicated and further away from
             | where it's being used. This is often a mistake.
             | 
             | Worse yet is when programmers DRY up tests. Tests are the
             | worst place to be applying DRY. The point of testing isn't
             | to write an entirely new application on top of your actual
             | application. If you're DRYing up your tests a lot, you're
             | probably writing a second application and should probably
             | stop doing that.
        
             | lmm wrote:
             | > I'm not the person you ask, but we use fullstack
             | Typescript in our dev department. We're a weird mix of a
             | green energy company and an investment bank, so inhouse
             | development is very small-scale, and this means you share
             | resources. Using one language for everything helps with
             | this, since the one person who is really good at React can
             | take a vacation or a sickday without being glued to a
             | laptop since everyone else can also work on the front-end
             | even though it's not their daily thing (and vice versa).
             | More than that though it lets us do things like code
             | reviews, troubleshoot solutions and generally work together
             | really well, even though we're working on very different
             | projects. It also lets us build libraries that can be used
             | for everything.
             | 
             | We do this the other way around, by using Scala.js so we
             | can use Scala on the frontend as well as the backend. It's
             | very nice.
        
         | rapind wrote:
         | Postgresql > PostgREST > Elm
        
         | jherdman wrote:
         | I'd love to hear about your testing story with Prisma. I
         | recently looked into it but was disappointed to see the
         | recommended approach was more or less to nuke the contents of
         | the DB (https://www.prisma.io/docs/guides/testing/integration-
         | testin...) instead of just rolling back a named transaction at
         | the end of a test (a la
         | https://hexdocs.pm/ecto_sql/Ecto.Adapters.SQL.Sandbox.html, or
         | just about every other framework I've used with Ruby or
         | Elixir).
        
         | bdougherty wrote:
         | What is the benefit of tRPC over built-in SvelteKit data
         | loading?
        
         | yamtaddle wrote:
         | I prefer static types all the way, but my looser rule I've come
         | up with in order to play nicely with others is that you're not
         | allowed to interface something with poor type
         | definitions/enforcement with _another_ thing that 's also bad
         | at that. Including transport/wire formats, so if you're
         | presenting JSON you'd better be able to tell me a good story
         | about type safety on both the sender and receiver.
         | 
         | That at least keeps the blast radius of type-related bugs very
         | limited, and makes it easier to figure out where the problem
         | is.
        
         | jmull wrote:
         | Personally, I'd remove tRPC on down (and choose a database).
         | 
         | It's nice there's type-safety between layers, but that's a
         | bunch of layers that you don't even need. (A layer that doesn't
         | exist takes is 100% type-safe and takes 0 hours to develop and
         | maintain).
        
           | kekkidy wrote:
        
           | deepsun wrote:
           | In Mongo you don't need to manage a schema, because it's
           | SCHEMALESS! /s
        
           | shepherdjerred wrote:
           | > A layer that doesn't exist takes is 100% type-safe
           | 
           | How are you ensuring your database accesses are type-safe in
           | this case?
        
             | jmull wrote:
             | That's fair... I do typically have a layer that sits at the
             | level of an ORM, whose purpose is to reduce boilerplate and
             | handle/verify types.
             | 
             | So I can't really claim I have nothing at the ORM level...
             | However...
             | 
             | In my experience, when you pull in an off-the-shelf ORM and
             | an off-the-shelf RPC framework _you end up building app-
             | level wrappers anyway_ to deal with the complexity and
             | impedance mismatch between what you want your app to use
             | for data access code and what layer provides.
             | 
             | So I think you might as well put your app-level database
             | wrapper as directly around the database as you can manage
             | (that probably means using the common, unopinionated client
             | for your db... e.g., node-postgres for server-side
             | javascript and postgres, or whatever the equivalent is for
             | your backend/database).
        
         | 5e92cb50239222b wrote:
         | Same, but with ASP.NET (which produces an OpenAPI
         | specification) + Entity Framework on the server, React +
         | TypeScript on the client (which consume that specification
         | through openapi-generator).
         | 
         | https://github.com/OpenAPITools/openapi-generator
         | 
         | I chuckle every time I read claims about Go (or whatever) being
         | amazingly productive. I don't think it's possible to beat this
         | stack with regards to both productivity and ease of long-term
         | support, at least without going to very niche technologies
         | where you'll have other problems.
         | 
         | Database schema is generated from models described in C# (or
         | reverse-engineered from an existing schema). You don't have to
         | compromise your schema to satisfy the ORM (another claim I
         | often read on HN), as it's very adaptable to your needs.
         | 
         | Migrations are generated automatically -- change your models,
         | ask it to generate migration code in C# + a SQL migration
         | script, review the generated SQL, and apply.
         | 
         | The vast majority of database queries (pretty much everything
         | besides reports) is written in type-safe LINQ, which makes it
         | easy to refactor code, and also construct & combine queries at
         | runtime. Unlike that specification abomination JPA expects you
         | to use, LINQ queries look something like this:
         | var latestOrders = _db.Orders         .Where(ord =>
         | ord.CreatedAt >= DateTime.Today)         .Where(ord =>
         | !ord.Deleted)         .OrderByDescending(ord => ord.CreatedAt)
         | .Take(25)         .Select(ord => new {           OrderId =
         | ord.Id,           Customer = ord.Customer.Name,
         | CreatedAt = ord.CreatedAt,           Products =
         | ord.Products.Select(prod => new {             ProductId =
         | prod.Id,             Title = prod.Title,           })
         | })         .ToList();
         | 
         | If you change your schema and forget to update one of the
         | queries accordingly (although using an IDE makes this pretty
         | much impossible), your code won't even compile.
        
           | NDizzle wrote:
           | Could you go into a little bit more detail?
        
           | lmm wrote:
           | > Database schema is generated from models described in C#
           | (or reverse-engineered from an existing schema). You don't
           | have to compromise your schema to satisfy the ORM (another
           | claim I often read on HN), as it's very adaptable to your
           | needs.
           | 
           | Generating the schema from the models is easy mode, the ORM
           | naturally won't generate anything it doesn't understand. The
           | claim is that the ORM can't handle advanced schema features
           | that it wouldn't generate. (Although in my experience most
           | people claiming that just never bothered to learn the ORM).
        
           | thdrtnl wrote:
           | If your are going to mention .NET in this context, why not
           | mention Blazor?
           | 
           | With Blazor you just write both the reactive frontend and
           | backend in C#. No need to write Javascript. Super productive,
           | type safe all the way.
           | 
           | Today it has even support for hot reloading. Save your C# and
           | see the changes in your browser.
           | 
           | https://dotnet.microsoft.com/en-us/apps/aspnet/web-
           | apps/blaz...
        
             | Xevi wrote:
             | Last time I looked at Blazor it only had two options, which
             | were both equally horrible for public websites.
             | 
             | You either had to ship a big and bloated WASM file, which
             | was at least 10x the size of competing JS frameworks, and
             | in some cases 100X the size. Or you had to render all
             | dynamic parts of your website on the server, which made
             | latency a huge problem, since your website feels sluggish
             | between each interaction.
        
             | FridgeSeal wrote:
             | Because last time I looked, the Blazor binaries were huge,
             | and had performance issues?
             | 
             | It's also irrevocably attached to that specific dotnet
             | framework? Want to evolve parts of your stack? Too bad.
        
           | melony wrote:
           | Do you still need to pass around "Data Transfer Objects" to
           | do simple parameter binding?
        
             | jeremycarter wrote:
             | They form the type safety
        
           | jakub_jo wrote:
           | That sounds impressive.
        
           | d0100 wrote:
           | > I chuckle every time I read claims about Go (or whatever)
           | being amazingly productive
           | 
           | You can get the same'ish with Ent and Atlas
           | 
           | I am very slowly building a big glue between DB and front-end
           | and making it pluggable into their underlying libs and native
           | libs
        
           | pevey wrote:
           | This is very backend-centric. It can't compare to a framework
           | like SvelteKit or NEXT or NUXT, where the primary benefit is
           | also shipping your tightly-integrated frontend code to the
           | browser. .NET apps are old school, full refresh apps unless
           | you are also using a separate frontend framework like React
           | or Vue standalone. And that adds a lot of time and overheard.
           | 
           | Everything you described in terms of easy migrations and
           | querying is exactly what Prisma gives you in the stack the OP
           | described.
        
             | [deleted]
        
             | stetrain wrote:
             | They are describing using .NET as an API providing a typed
             | OpenAPI contract (aka swagger).
             | 
             | Nothing about that is "full refresh" and you can use
             | whichever frontend framework you like.
        
             | brushfoot wrote:
             | Exactly.
             | 
             | With ASP.NET, a React/Angular project is separate, there's
             | a separate model layer, and you have to keep that in sync
             | with the .NET models.
             | 
             | With Next, there's true code reuse between client and
             | server. Next is smart about shipping your code where it
             | needs to run, server, client, both. You can even mix and
             | match from page to page: Server-side render one page per
             | request; statically generate another at build time.
             | 
             | As much as I like ASP.NET, Next has leapfrogged it for web
             | apps.
        
               | kcartlidge wrote:
               | > _With ASP.NET, a React /Angular project is separate,
               | there's a separate model layer, and you have to keep that
               | in sync with the .NET models._
               | 
               | The separation of models is indeed inevitable when there
               | is JS on the client and not-JS on the server. That's a
               | 'problem' common to all non-JS back-ends.
               | 
               | However there are three points I'd make.
               | 
               | 1. That's often a good thing, not a flaw, in that it
               | enforces a mapping boundary between what the server and
               | the client know and therefore strongly discourages
               | leakage of data.
               | 
               | 2. Mapping requirements of this type are much too trivial
               | to base a tech stack choice on. It's barely worth
               | considering given that mappings only need doing once and
               | updating once per change. They are also very good
               | protection against accidentally exposing new stuff
               | precisely because changes in models don't automatically
               | impact the client.
               | 
               | 3. If this model syncing was really an issue (it usually
               | isn't) you could try Blazor. By doing C# on the client as
               | well as the server you get to share the same code/models.
               | As per point 2 I don't think that's a good enough reason
               | to switch tech stacks, but Blazor also has its place.
        
               | arcturus17 wrote:
               | > As much as I like ASP.NET, Next has leapfrogged it for
               | web apps.
               | 
               | Look, I like NextJS as much as the next guy - I'd say
               | it's my main working technology right now. And I've never
               | built anything on .Net - I know its characteristics from
               | watching tutorials and reading docs.
               | 
               | My take however is that "web apps" is a very broad world.
               | NextJS gives you a thin API layer. There is no model
               | layer to speak of. You're left fending for yourself in
               | the wild, wild world of JavaScript.
               | 
               | .Net Core, on the other hand, offers a batteries-
               | included, heavy-lifting, opinionated framework, with an
               | immense toolbox and many conventions to guide you. There
               | has to be a reason why people speak such wonders of it.
               | If I had to build something enterprise-y with more than
               | handful of devs it would probably be my choice.
        
             | CharlieDigital wrote:
             | If you have .NET 6/7 installed, give this a try:
             | dotnet new webapi -minimal         dotnet run
             | 
             | I know there's been a lot of discussion about whether
             | .NET/C# are faster than X or Y or Z based on TechEmpower
             | benchmarks, but this will give you a backend that looks
             | more or less like Express with an OpenAPI schema built-in
             | (generate TS bindings for frontend) and a runtime that is
             | going to be higher thoughput than Express or Node.
             | dotnet watch
             | 
             | And you get hot reload.
        
             | arcturus17 wrote:
             | > .NET apps are old school
             | 
             | Microsoft has invested massively in modernizing .NET and
             | C#.
             | 
             | It is also widely praised by devs - .NET is ranked 4th most
             | loved framework in the SO 2022 dev survey.
             | 
             | You have built-in scaffolding to get a React + .NET app
             | right from the CLI, with hot-reload and all the facilities
             | you'd expect.
             | 
             | Hardly old school at all. Personally, if I had to build a
             | website with a thin API layer I'd reach for NextJS (or
             | equivalent) alone, but anything beyond that I'd go for .NET
             | Core any time of day.
        
         | bearjaws wrote:
         | Anyone know a good way to solve Prisma memory usage? We use a
         | database per customer and each one adds 50-80mb of RAM. Our
         | backend currently consumes 2-3GiB of RAM to host less than 100
         | customers...
         | 
         | App server has GC pauses of 50-80ms as a result of the memory
         | usage.
        
           | meowtimemania wrote:
           | how many customers do you have?
        
           | 5Qn8mNbc2FNCiVV wrote:
           | If you use a database per customer you should also run a node
           | process per customer. I don't know what exactly you're
           | selling, but that bit of RAM should be in budget alone for
           | the reason that you don't want the requests of customers
           | slowing each other down
           | 
           | I recently jumped over that "trying to minimize resources"
           | hurdle myself because it's just not economically correct for
           | me to spend even an hour of my time when I can host a few
           | months worth of servers for that money
        
         | marmada wrote:
         | I wonder if with Next.JS server components, we can just get rid
         | of tRPC + trpc-sveltekit.
        
         | rahimnathwani wrote:
         | I'd love to browse a sample codebase.
         | 
         | Do you know of any non-trivial open source projects using this
         | stack?
        
           | mattwoodnyc wrote:
           | https://trpc.io/docs/example-apps
        
             | rahimnathwani wrote:
             | Thanks. Here's the SvelteKit example linked on that page:
             | 
             | https://github.com/icflorescu/trpc-sveltekit-example
        
         | trillic wrote:
         | Might I recommend https://jawj.github.io/zapatos/ to remove the
         | last 3 lines of your stack.
        
           | tommica wrote:
           | Nice share!
        
       | Ilasky wrote:
       | Sveltekit has been an absolute DREAM to learn and use with my
       | app! Been tracking their 1.0 progress closely and it's been
       | incredible.
       | 
       | Sveltekit + TailwindCSS + FastAPI has made it super easy to whip
       | up functionality and have a fine-tuned approach as well.
       | 
       | As someone else said, the "I CAN'T BELIEVE IT WAS THAT EASY" is
       | an ongoing sentiment whenever I use it.
       | 
       | Looking forward to seeing it grow and gain more popularity
        
         | delijati wrote:
         | Do i get this right, using SvelteKit SSR frontend node server
         | and it communicates with backend FastAPI server via json. This
         | is nowadays called a normal stack oO. (by the way i like Svelte
         | but SvelteKit makes only sense if you stay in JS land, and i'm
         | not willing to jump ship from python to js/ts ;))
         | 
         | I tried htmx and so far i really like it and the + is i just
         | have "one" backend.
        
         | miohtama wrote:
         | SvelteKit SSR is a very good pair to Python backends, like
         | FastAPI.
        
           | Labo333 wrote:
           | Can you expand? I don't get how you can use SSR with another
           | language than Node. I always thought one has to use the
           | static adapter.
        
       | bkeating wrote:
       | There is so much "let me just see if this works..." _tap tapppy
       | tap_ ....  "no... NO WAY... OMG IT WORKED!" with Svelte.
       | 
       | Very little surface area. It embraces your knowledge of plain ole
       | CSS/JS/HTML and empowers you with reactivity and a means of if
       | being able to add motion to your ui.
       | 
       | Newbs and Pros alike can build _fast_ with it. That speed +
       | reactivity allows your software to better keep up with your
       | converstaions that make it all so. Thats insanely powerful.
       | 
       | It's soooo good. Congratulations to Richard Harris and everyone
       | on the Svelte/SvelteKit Team! <3
        
         | fruit2020 wrote:
         | Except it forces you to use node js, or do I read it wrong? Can
         | we get a streamlined js framework that is just about the
         | frontend and let's you use whatever backend language you want?
         | I know there is react, vue and angular but they seem so bloated
        
           | pie_flavor wrote:
           | Svelte is a frontend framework, which you can use to build
           | anything from a full SPA to a single button. SvelteKit is a
           | Node backend framework that integrates tightly with Svelte.
        
             | yencabulator wrote:
             | SvelteKit is a Javascript backend framework. It only uses
             | Node at build time (with hopes of replacing even that with
             | e.g. Deno), the deployed serverside component will happily
             | run outside of Node.
        
           | miohtama wrote:
           | We are using SvelteKit frontend with Python backend (Pyramid
           | + SQLAlchemy). When I started the project, I considered doing
           | Python backend + templated HTML frontend a la Django, but
           | SvelteKit server-side rendering was so good that I decided
           | against this. Before I have done JSP, PHP, Django, Next,
           | React and everything between, so I have some experience to
           | compare. Despite all progress on Node.js backends, they still
           | cannot compete with Python for complex SQL + ORM use cases.
           | 
           | The frontend is open source and available here if someone is
           | interested what a complex SSR heavy SvelteKit application
           | deployment looks like:
           | 
           | http://github.com/tradingstrategy-ai/frontend
           | 
           | The SSR server is a lightweight Node.js web server (Vite),
           | but you can have it nicely along your backend API web server
           | (Pyramid in our case). Both are reverse proxied behind the
           | same domain using Caddy.
        
           | hamdouni wrote:
           | Nodejs is only needed in the development phase.
        
             | michaelsbradley wrote:
             | That's true if you're developing a SPA or static site with
             | SvelteKit. However, there are APIs that involve Node being
             | run in production, i.e. the authors of SvelteKit envision
             | it being used to build hybrid apps that involve front-end
             | JS and Node.js server/s.
        
               | yencabulator wrote:
               | Yes, the whole point of SvelteKit is that it's
               | SSR+hydrate. But it doesn't need Node for that. It'll run
               | on just about any Javascript engine, including Cloudflare
               | Workers which is quite close to pure V8 + standard web
               | APIs.
        
         | unsupp0rted wrote:
         | I had the opposite feeling a month or so ago, especially with
         | stores- there's so much "magic" that I kept running into
         | confusing walls.
         | 
         | If I `export let` a variable to be reactive over here, why
         | isn't it reactive over there?
        
           | samtp wrote:
           | You seem to be conflating a few different concepts. Store are
           | absolutely reactive across all components and pages. They are
           | prefaced with $, and there are a bunch of native stores that
           | you can use such as $page.
           | 
           | You can even create variables reactive to one another by
           | declaring a variable like so:
           | 
           | $: y = x * 2
           | 
           | Using the export let x = default; option is for passing data
           | from the parent component/page to a child. If you want
           | variable changes in the child to be reflected in the parent,
           | you can use a store ($ notation), or you can use bind like
           | so:
           | 
           | <ChildComponent bind:x={someValue}>
           | 
           | In my opinion, all of this is much much easier than in
           | competing frameworks.
        
             | unsupp0rted wrote:
             | For instance I had a variable in a store.
             | 
             | On my page, I had a script tag pulling from the store. The
             | variable was reactive within the script tag.
             | 
             | I export let that into the template via "data" props.
             | 
             | I changed the value of the variable within the script tag.
             | 
             | The template did not reflect the new value.
        
               | samtp wrote:
               | I'm really struggling to follow what you're trying to do
               | - but why do you not just use the same writable store in
               | both your page and template/component?
               | 
               | Also, maybe look into store subscriptions and/or reactive
               | declarations for what you're trying to do.
               | 
               | Regardless, it sounds like you really need to just read
               | the docs or do a tutorial.
        
         | no_way wrote:
         | I had exact same experience with it "it just worked", I started
         | playing with few days ago and compared with other frameworks
         | where I had to fight my to do what I wanted to do, from
         | libraries to non oblivious behaviours. In SvelteKit it just
         | works and it's refreshing. Especially love the builtin
         | animation stuff.
        
         | pier25 wrote:
         | > _It embraces your knowledge of plain ole CSS /JS/HTML_
         | 
         | Yeah that's one of the things I love about Svelte. It tends to
         | enhance fundamental web knowledge rather than forcing you to
         | think in convoluted ways.
         | 
         | Features like actions put you close to the bare metal so to
         | speak. I use those all the time.
        
           | samtp wrote:
           | Backing up how great it is that so much of Sveltekit is built
           | using basic web standards. More often than not when I'm
           | wondering what the shape of an object or function is in
           | Sveltekit, I realize that it's exactly the same as you'd find
           | on MDN documentation.
           | 
           | It's an incredibly refreshing experience compared to other
           | frameworks that create custom concepts for everything they
           | do.
        
           | culi wrote:
           | This is what they said about React when it first blew up.
           | Compared to Angular, it's much closer to being *just
           | javascript(tm)*. But I wonder how well that'll hold up after
           | the honeymoon phase
           | 
           | The builder.io team made a tool called Mitosis[^0] that lets
           | you input a component written in almost any framework and
           | automatically recreate that same component in any other
           | framework including Vue, React, Qwik, Angular, Svelte, React
           | Native, Lit, web components, and even Swift
           | 
           | It's always interesting to try out different frameworks and
           | compare the plain HTML version of certain components with
           | this tool
           | 
           | [^0]: https://mitosis.builder.io/
        
             | NetOpWibby wrote:
             | I've been using Svelte for three years now, or close
             | enough. The honeymoon phase hasn't waned.
        
             | arxpoetica wrote:
             | Unlike React/JSX, Svelte uses ASTs that adhere to HTML,
             | JavaScript, and CSS (non-JSX) format. Yes, there is a
             | minimal Svelte-only API footprint, but the native AST
             | parsers means that parsing is much more respectful of
             | correct code validation, versus JSX's own idiomatic set of
             | ThingsYouCannotDo(tm).
        
             | samtp wrote:
             | It is absolutely crazy how much more idiomatic the Svelte
             | code is in the example on Mitosis compared to the other
             | frameworks on there.
        
             | nicoburns wrote:
             | > This is what they said about React when it first blew up
             | 
             | FWIW, I think that "it's much closer to being _just
             | javascript(tm)_ " statement has absolutely held up over
             | time (Angular, esp. the old angular.js is painful compared
             | to React for this reason), AND that Svelte is likely a step
             | closer again (which they can do because they have an entire
             | compiler and aren't reliant on embedded a DSL inside of
             | JavaScript).
        
               | culi wrote:
               | I agree Svelte is a step closer, but most people agree
               | that modern React has at least somewhat strayed from
               | _just javascript_ (tm). Server components by default,
               | hooks, JSX, synthetic events, etc have added many more
               | layers of abstraction. I fully support these
               | developments. I just think they're a necessary byproduct
               | of a project maturing. I fear that if Svelte ever blows
               | up past a niche framework, it will also stray from it's
               | "use the platform" philosophy out of necessity as well
        
       | Caged wrote:
       | Svelte is such a pleasure to write and work with. It follows my
       | mental model really well. Congrats to the team on this amazing
       | milestone!
        
       | nathias wrote:
       | I'm a React expert, but whenever I can I choose Svelte, it really
       | is a joy to use. I've been using SvelteKit for some time now,
       | it's great to see it out of beta so I can shill it to more
       | projects.
        
       | onlyspaceghost wrote:
       | Amazing!
        
       | [deleted]
        
       | mattwoodnyc wrote:
       | There are a handful of them here - https://trpc.io/docs/example-
       | apps
        
       | swyx wrote:
       | congrats team!
       | 
       | the livestream and meta discussions around the launch are
       | happening here https://www.youtube.com/watch?v=N4BRVkQVoMc
       | 
       | theres a full in browser tutorial as well:
       | https://learn.svelte.dev/
       | 
       | I've been keeping a reference implementation of a SvelteKit blog,
       | inspired by @leerob's nextjs site: https://github.com/sw-
       | yx/swyxkit/ for the past year and it's now updated for 1.0. hope
       | it helps someone get going!
        
         | jdthedisciple wrote:
         | I checked out the blog and it doesn't seem to be rendering the
         | Markup correctly.
         | 
         | For example the h2 headers appear literally as '## HEADER' on
         | the website.
        
           | swyx wrote:
           | that is a stylistic choice on purpose - i actually add the
           | #'s in with CSS - just makes headers stand out a little more
           | :)
           | 
           | i use h2, h3, and h4 often and just using font size alone
           | makes it hard to tell which level of nesting the content is
           | intended
           | 
           | you can see this on my main blog https://www.swyx.io/
        
       | davjhan wrote:
       | Congratulations to the team!
        
       | owlbynight wrote:
       | If you're just learning SvelteKit, check this tool out:
       | https://github.com/svelte-add/svelte-add
       | 
       | It will save you a ton of time by making it really easy to add
       | integrations to your projects (like Tailwind, Bootstrap,
       | Supabase, Jest, etc)
        
       | asdfdelta wrote:
       | I've been following Svelte since it first appeared on the State
       | of JS survey. So cool to see it evolve over time and happy to see
       | all the hard work pay off!
        
       | stephenstuder wrote:
       | Svelte is soooo good. Hope it starts to get used more in large
       | orgs.
        
       | theonlytails wrote:
       | congrats to everybody on the svelte team!
        
       | Chipshuffle wrote:
       | Is Svelte and in extension SvelteKit somehow the next step in the
       | evolution of frontend frameworks? From what I know it has more
       | fine grained reactivity than for example React or Vue and should
       | therefore just run more efficient? Or has the approach of Svelte
       | also drawbacks that I am not aware of?
        
         | grayrest wrote:
         | > Is Svelte and in extension SvelteKit somehow the next step in
         | the evolution of frontend frameworks?
         | 
         | I personally would say no. I like Svelte's dev experience but I
         | don't like the output code and while it has smaller
         | invalidation subsections than a full component there's not a 1
         | to 1 mapping between a piece of data changed and the exact
         | piece of DOM getting updated.
         | 
         | > Or has the approach of Svelte also drawbacks that I am not
         | aware of?
         | 
         | Svelte is superb for producing NYT infographics and other
         | relatively lightweight experiences. I work on interface
         | builders and when you're scaling up the number of components on
         | a page and the complexity then having the reactivity code
         | repeated in the components instead of shared in a library
         | becomes a drawback. What pushed me off of of Svelte was a ~500
         | loc component that had ~40 reactions and resulted in a 4.1k LoC
         | js file output. I looked through the output and didn't see any
         | particularly egregious mis-compilations, just that the Svelte's
         | approach resulted in verbose outputs. I don't think most people
         | will have components this complex so I don't think Svelte is a
         | bad choice and I do like the DX but that caused me to move on.
         | 
         | Of the current options, I recommend Solid. It has fine grained
         | reactivity all the way down, better perf, similar bundle size,
         | and the community is generally performance obsessed. They're
         | currently experimenting with islands/partial hydration/mixed
         | server+client rendering and preliminary results are halving the
         | delivered JS. As an example, their movies demo [1] is ~15k.
         | 
         | [1] https://solid-movies.dev/
        
           | swyx wrote:
           | budibase is a notable interface builder in Svelte if anyone
           | wants to compare https://github.com/Budibase/budibase
           | 
           | and ofc huggingface gradio counts too
           | https://www.svelteradio.com/episodes/gradio-with-pngwn
        
       | hedgehog wrote:
       | "This app requires modern web platform features. Please use a
       | browser other than Safari." Looks cool but not production ready.
        
         | bioemerl wrote:
         | Every website should display this message until apple either
         | fixes the browser or lets you install chrome.
        
         | wirahx wrote:
         | That's the tutorial - which uses WebContainers, which are
         | indeed an experimental technology. It has nothing to do with
         | the production readiness of SvelteKit the framework.
        
         | b-lee wrote:
         | That's for the interactive tutorial, not for the apps your
         | build with Svelte/Kit.
        
         | samtp wrote:
         | I always wonder why Hacker News is such a magnet for comments
         | trashing product announcements while also knowing almost
         | nothing about the product being announced.
        
           | hedgehog wrote:
           | In the long run the approach Svelte takes seems very
           | promising so I've kept an eye on it for a while now. I took
           | umbrage at the snooty messaging towards a browser in a tool
           | pitched as a way to "build production-grade websites".
        
             | samtp wrote:
             | Sure but the "snooty messaging" you're commenting on is
             | from their tutorial, which is used to conveniently learn
             | the framework in the browser.
             | 
             | This has nothing to do with Sveltekit itself. You can
             | download a demo repo, enter "npm run dev" and see that it
             | works on Safari without any issues. Hell, I've deployed
             | ecommerce sites using Sveltekit used by 500k people/month
             | where 60% of visitors are on mobile Safari without any
             | issues.
             | 
             | So when a product is posted that you are unfamiliar with,
             | maybe try giving it more that 30 seconds of consideration
             | before dismissing it due to something completely unrelated
             | to the product itself.
        
         | Kuinox wrote:
         | Safari is the new IE.
        
           | fncivivue7 wrote:
           | We had to support ie.
        
           | rajasimon wrote:
           | Wish it is but it's crazy fast with M1
        
       | a3k wrote:
       | Finally, I've been waiting for this moment for 2 years
        
       | yamrzou wrote:
       | There is a plethora of javascript frameworks: React, Vue, Svelte,
       | Remix, etc. If I know nothing about front-end development, and
       | would like to learn one that is:
       | 
       | - Intuitive
       | 
       | - Suitable for small projects as well as large projects.
       | 
       | - That is here to stay, i.e. either adopted by many companies, or
       | its adoption curve is going up.
       | 
       | Which one should I pick? Would Svelte be a good choice?
        
         | culi wrote:
         | If it's for your career: React + (Next or Remix). Maybe Angular
         | or Vue if the specific company you want uses it
         | 
         | If it's for yourself: Svelte. Amazing community, very likely to
         | be here in 5 years, but I don't think it's been proven to work
         | at large scales yet.
         | 
         | If you want to twist everything upside down and see the full
         | potential of what front-end dev work could be: Qwik or Elm
         | (imho)
        
           | WXLCKNO wrote:
           | What would be an example of large scale for a front-end app
           | or site?
        
             | culi wrote:
             | complex dashboards like CircleCI or client portals like
             | maybe your bank or health insurance portal
             | 
             | many pages and lots of functionality with lots of data
             | floating around like Reddit, Twitter
             | 
             | literally everything/anything like Facebook, GitHub, etc
             | 
             | For simple apps, I'd go with a PWA if possible. For single,
             | mostly informational, pages you usually just need a static
             | site. For a company blog, some of these tools could be used
             | to make the frontend for a CMS, but you can also just get
             | away with Wordpress, Squarespace, etc most of the time
             | unless they want some really custom functionality. Then
             | there's also micro-frontends and Astro and other related
             | tools if you're trying to do a lot of different things and
             | wanna mix and match different solutions to different
             | problems
        
               | sesm wrote:
               | BTW, is CircleCI still using ClojureScript + React or
               | they've changed their stack?
        
           | swyx wrote:
           | Elm hasnt had the momentum for years, its gonna be a long
           | shot for it to go anywhere from here
           | 
           | > but I don't think it's been proven to work at large scales
           | 
           | i basically have this saved now:
           | 
           | notable companies now using svelte not just for internal apps
           | but customer facing, critical stuff:
           | 
           | - huggingface (for everything, including gradio)
           | 
           | - alaska airlines (entire customer flow)
           | 
           | - razorpay (payment dialogs)
           | 
           | - schneider electric (many things)
           | 
           | - ikea (entire ecomm experience)
           | 
           | - riot games (league of legends client)
           | 
           | - Brave (search page)
           | 
           | - Square (developer portal)
           | 
           | - several YC startups
           | 
           | - and basically every notable data journalism outlet on the
           | planet (Bloomberg, the Economist, Reuters, Les Echos, german
           | and japanese publications, pudding.cool, and of course the
           | NYT)
           | 
           | https://news.ycombinator.com/item?id=33827484
        
             | culi wrote:
             | Nice. I think the most significant one listed there is
             | huggingface. It's very widely used but rarely "for
             | everything". I think that shows most companies still aren't
             | confident in it enough to bank everything on it quite yet,
             | but it seems like we're pretty close!
             | 
             | Edit: and yeah you're right about Elm. Probably not a good
             | choice for first timers. But it's a great example of what a
             | FE that adheres to functional programming philosophies
             | could look like. Given React's recent developments I think
             | the skills gained from trying it out would definitely carry
             | over to React and other emerging frameworks. Although it's
             | famously stable and error-free, it's not been battle tested
             | for very large and complex apps so it's likely only a good
             | choice for sideprojects atm.
        
           | miohtama wrote:
           | Svelte will be also the career choice in couple of years,
           | like Angular was the career choice when React launched
           | (although they have only 3 years between them).
        
             | culi wrote:
             | and before angular was jquery. But I do think there's quite
             | a big difference between React and Angular. Angular never
             | reached the level of marketshare that React has even if it
             | was close. And even when it was close it was only for a few
             | years. React has been the standard for nearly a decade now.
             | And React has been much more explicit about growing its
             | ecosystem whereas Angular has much fewer 3rd party
             | plugins/tools. In addition to all that, Svelte has
             | technically been around since 2016. Even if we cheat and
             | say it only really started getting attention in 2018-2020,
             | it has still been rising slower than Vue did when it
             | launched. In the latest StackOverflow survey (2022), Svelte
             | still hasn't even surpassed the 5% threshold for how many
             | developers have used it.
             | 
             | By pretty much every metric,[^0] svelte is a tiny community
             | still. A darling of the web dev community for sure, but has
             | not yet gained the confidence of commercial products.
             | Perhaps this has actually been good for Svelte and its
             | development. It definitely seems like it's heading towards
             | much wider adoption so I guess we'll see it tested soon
             | enough
             | 
             | [^0]: https://gist.github.com/tkrotoff/b1caa4c3a185629299ec
             | 234d231...
        
         | have_faith wrote:
         | > Suitable for small projects as well as large projects
         | 
         | > That is here to stay, i.e. either adopted by many companies,
         | or its adoption curve is going up.
         | 
         | Arguably React for ecosystem and provability at every scale.
         | 
         | > Intuitive
         | 
         | Likely Svelte. React is mostly fine but hooks come with their
         | footguns for newcomers.
        
         | swyx wrote:
         | remix isnt like those others in that you'd also need React to
         | do UI
         | 
         | at this point React Vue and Svelte are all decent production
         | choices, as for what is intuitive that really depends what YOU
         | like, different strokes different folks
         | 
         | svelte is probably the most fully integrated toolkit
         | (animations, state mgmt, server side rendering, serverless api
         | routes, etc) and ships the least javascript at this point tho
         | if u want the quick sales pitch
        
         | apozem wrote:
         | Probably React.
         | 
         | - It works in small and large applications
         | 
         | - Used in majority of new frontend apps
         | 
         | - Reasonably intuitive, especially if you stick to functional
         | components and aren't messing around with low-level renders
         | 
         | That said, I enjoyed building a web app with Svelte. It's
         | extremely simple and powerful. Its only disadvantage is it is
         | new and has a fraction of the market share.
        
         | dcre wrote:
         | Svelte would be a good choice. It's important to note that
         | there has been a ton of convergence in architecture, so for
         | example, even though Remix uses React, the app architecture it
         | encourages is quite similar to that of SvelteKit. So if you
         | learn one, you would likely find the other familiar and easy to
         | pick up.
        
         | culi wrote:
         | It's impossible to say this early. Still a very community-
         | driven project. Rust was in a similar position at one point but
         | it wasn't really until Mozilla took the helm that people felt
         | confident enough to say "it's hear to stay". At this point it's
         | been at least used by NYTimes, Facebook, Apple, Spotify, etc
         | but I don't think any of these companies have a lot betting on
         | it yet. It certainly has a huge following in the dataviz
         | community and, for historical reasons, amongst journalists.
         | Additionally it's regularly tops the State of JS surveys as the
         | most loved framework. But none of that is really concrete imo
         | 
         | If you're learning a new framework and you're concerned about
         | stability React is still definitely the way to go. I think both
         | React and Svelte are good at depending on generalizeable front-
         | end skills that can carry over to other frameworks though so if
         | your career doesn't depend on it, I don't think learning Svelte
         | is a waste of time at all
        
         | preommr wrote:
         | I would strongly recommend Vue3 in the composition style with
         | <script setup>.
         | 
         | It's really close to svelte's style, of simplicity and
         | principle of least astonishment. It also uses very explicit
         | wrappers for reactive objects so that there's isn't as much
         | magic happening. For me, vue's reactivity is order of magnitude
         | simpler than things like svelte.
         | 
         | Vue also has a pretty well established community and a pretty
         | solid foundation.
        
         | pastor_bob wrote:
         | I can't remember a time I've seen a posting advertising use of
         | Svelte on a team FWIW.
         | 
         | The headwinds against React are strong.
        
         | JonathanBeuys wrote:
         | Why do you want a framework and not just plain HTML, CSS and
         | Javascript?
         | 
         | I have been doing frontend dev for over a decade and I never
         | needed a framework. When I want to template data client side, I
         | use Handlebars.
        
           | veidelis wrote:
           | You've never ran into DOM performance issues? You use a lot
           | of createDocumentFragment? Please share more.
        
       | didiraja wrote:
       | Congrats all Svelte team and community, highly antecipated
       | project. Played a lot with the early releases. To me, Svelte
       | suite is the best option for front-end applications.
        
       | KoljaL wrote:
       | Great! Congrats to all the maintainers. I wish you will have a
       | really really nice Christmas
        
       | wirahx wrote:
       | don't forget to watch the livestream!
        
         | pier25 wrote:
         | https://www.youtube.com/watch?v=N4BRVkQVoMc
        
       | sergiotapia wrote:
       | Congratulations on the milestone!
       | 
       | I'm a bit confused, does this mean I can use Prisma with
       | Sveltekit out of the box? It's server side rendered like a
       | typical expressjs app?
        
       | kenkunz wrote:
       | Congratulations to the whole SvelteKit team!
       | 
       | I've been using Svelte / SvelteKit for 1.5 years now - it is
       | without comparison the most enjoyable and productive web
       | framework language I've ever used.
       | 
       | I'm lucky enough to work with Svelte / SvelteKit full-time. I'm
       | gratified that the site I help build and maintain is included in
       | the SvelteKit showcase: https://kit.svelte.dev
       | 
       | Trading Strategy: https://tradingstrategy.ai
        
       | lewantmontreal wrote:
       | How so people feel about client side navigation? Browsing
       | svelte.dev it appears back/forward navigation now requires a
       | request each time as browser cache is no longer usable.
       | 
       | Page refresh also seems to reset scroll position but that might
       | be unrelated.
        
         | swyx wrote:
         | its just a setting now on sveltekit. clientside navigation is a
         | single line of code
        
         | dcre wrote:
         | This appears to be deliberate depending on the page. Looking at
         | the network inspector as I click around, I see cache-control:
         | private, no-cache on the responses for docs content, but I do
         | see caching on the blog pages.
        
         | Lukas_S wrote:
         | Sveltekit saves your scroll position in session storage so
         | refresh and back/forward navigation feels like regular browser
         | behavior. If your scroll position is resetting on refresh that
         | may be a bug.
         | 
         | Navigating back/forward will only make a new request if that
         | page needs to fetch data in its +page.js component
         | https://kit.svelte.dev/docs/load
        
       | dimmke wrote:
       | Congrats to the team for this!
       | 
       | I have been building an application in SvelteKit and it's an
       | incredible framework. I really believe it's going to become the
       | dominant front-end framework in the next few years.
        
         | pevey wrote:
         | I completely agree except that I would say "full stack
         | framework" instead of "frontend framework." Just add a db and
         | you are good to go. I tried it out when building a couple of
         | non-critical internal apps for clients (basic CRUD apps, but
         | with some pretty complex business rules). SvelteKit is
         | beautifully designed. It makes things that used to be a bit of
         | a pain super easy to understand and implement. You can use
         | pretty much any NPM vanilla js/ts library. The timing here
         | could not be better for me. I will definitely be using SK for
         | my next project.
        
           | pier25 wrote:
           | > _Just add a db and you are good to go_
           | 
           | What about validation, CORS, cookies, encrypted sessions,
           | etc? A backend (or full stack) framework should at the very
           | minimum include those kind of things.
           | 
           | It's a major gripe I have with all the new full stack
           | frameworks. The focus is on rendering and dealing with
           | requests but they are quite sparse in bread and butter
           | backend features. Other than routing you're basically on your
           | own.
           | 
           | The community will probably start making third party plugins
           | but I would rather have official plugins I can 100% trust
           | like Fastify does.
        
             | miohtama wrote:
             | SvelteKit ships with a SSR server (Vite) and file system
             | based routing out of the box. It does most of things,
             | though not all. SvelteKit = Svelte + SSR + integration
             | layer.
             | 
             | Though I expect the situation improve a bit soon, as now
             | SvelteKit 1.0 release is out from the door.
        
             | pevey wrote:
             | It's full stack because you write the code that you want to
             | run on the server AND the code that you want to be shipped
             | to the browser both within SK. Not because it does
             | everything. You would want to choose your favorite
             | libraries for those things, e.g., zod is my fave for
             | validation.
        
       | dang wrote:
       | Related:
       | 
       |  _SvelteKit_ - https://news.ycombinator.com/item?id=29902450 -
       | Jan 2022 (3 comments)
       | 
       |  _My Evaluation of SvelteKit for Full-Stack Web App Development_
       | - https://news.ycombinator.com/item?id=29806385 - Jan 2022 (125
       | comments)
       | 
       |  _SvelteKit Is in Public Beta_ -
       | https://news.ycombinator.com/item?id=26557886 - March 2021 (114
       | comments)
       | 
       |  _What 's the Deal with SvelteKit?_ -
       | https://news.ycombinator.com/item?id=24996750 - Nov 2020 (2
       | comments)
        
       | batesy wrote:
       | Well after reading the comments in this thread, I'm learning
       | Svelte over the Holidays.
        
       | gedy wrote:
       | I enjoy Svelte a lot and congrats on the release. However the job
       | market for Svelte seems really weak, at least for US dev
       | salaries. I hope Sveltekit increases adoption, as it's a nice
       | alternative to NextJS
        
       | torartc wrote:
       | Congrats team. SvelteKit is a great experience.
        
       | arxpoetica wrote:
       | The Sapper is dead! Long live the SvelteKit!
        
       | gsanderson wrote:
       | Congratulations! Watching the live stream now.
        
       | newbieuser wrote:
       | After a few minor versions, I hope they don't start to deprecate
       | the newly added features.
        
       | johninvirtual wrote:
       | Congrats to all the people behind this, thanks for your work.
       | 
       | I love svelte
        
       | lairv wrote:
       | Great news and looking forward to how this goes. I still find it
       | incredible that the frontend javascript ecosystem hasn't found a
       | reliable and productive contender yet, a framework you could be
       | sure would be still relevant without too much changes in 5+
       | years, something like what Ruby on Rails is for full-stack.
       | 
       | Some would say that React/NextJS has this role but I have to
       | disagree. When using React/NextJS you still have to rely on third
       | party library for routing, state management, querying etc. like
       | React-Query, React-Router, Redux (Next has a router but you still
       | need libraries to do the rest). Some of these libraries change a
       | lot, some become less relevant, new libraries emerge, and in the
       | end when you start a React project you must go through the
       | "library shopping" step.
        
         | herrherrmann wrote:
         | > When using React/NextJS you still have to rely on third party
         | library for routing, state management, querying etc.
         | 
         | You shouldn't need react-router or other routing-related third-
         | party libraries because Next's router (and its file-based
         | navigation system) should be enough(?). I'd also say that React
         | itself has powerful-enough state management options (useState
         | hook plus React context, if needed).
         | 
         | The only annoyance I ran into was getting proper i18n working
         | and integrated with Next (with i18next). There were some issues
         | with Next's newer releases and a redesigned i18n setup that
         | broke a lot of things for me and I regretted the dependence of
         | multiple libraries and frameworks needing to work together.
         | (Storybook is another library that kept breaking.)
        
         | rglover wrote:
         | > you still have to rely on third party library for routing,
         | state management, querying etc.
         | 
         | Take a peek at Joystick [1]. I designed it as the exact
         | antithesis to this. It's full-stack (Node.js back-end with a
         | fully ssr'd component framework designed for the long-term) and
         | doesn't introduce any special paradigms (i.e., vanilla HTML,
         | CSS, and JavaScript--no attribute tricks/compilers needed).
         | Everything is designed to be a fixed-API with the only changes
         | being added functionality (i.e., no random "hey this is
         | deprecated now" rug pulls).
         | 
         | Philosophy is described here:
         | https://github.com/cheatcode/joystick#what-distinguishes-joy...
         | 
         | [1] https://github.com/cheatcode/joystick
        
           | lairv wrote:
           | Will take a look at it, and good luck with building it, such
           | projects requires effort and test of time
        
             | rglover wrote:
             | Thank you, appreciate that. If you have any questions feel
             | free to contact me directly: ryan.glover@cheatcode.co.
        
       | oxff wrote:
       | Why is there a new frontend-whatever-work / tool every week?
       | Database stuff is fairly stable, so is backend stuff. Browser
       | APIs seem stable to me too? Why can't you guys decide that this
       | is how things are best done
        
         | didiraja wrote:
         | if you know what you were doing on front-end you wouldn't
         | spelling this words aberration compilation
        
           | oxff wrote:
           | I really don't know, that's why I asked.
        
         | rk06 wrote:
         | Because it is a not a new js framework, but a higher level tool
         | based on a js framework I. E. svelte.
         | 
         | Similar meta frameworks exist for other js frameworks eg:
         | Next(react), Nuxt(vue), Remix(react), rakkas(react),
         | Solidstart(solid) etc.
        
         | arxpoetica wrote:
         | SvelteKit is nothing new. It's been kicking around for 2+ years
         | with tons of user satisfaction (and 3 years prior to that under
         | another name), but this is the first major/stable release.
         | - https://insights.stackoverflow.com/survey/2021#section-most-
         | loved-dreaded-and-wanted-web-frameworks       -
         | https://2021.stateofjs.com/en-US/libraries/front-end-
         | frameworks/       -
         | https://twitter.com/Rich_Harris/status/1589675637195042817
        
         | anon291 wrote:
         | As someone who's written both a GUI framework and a database
         | library for Haskell, the answer here is actually really
         | obvious. There's only a small set of algorithms for database
         | query execution, all of which are well understood. Thus, there
         | are best algorithms that you can implement.
         | 
         | On the other hand, there is no correct way to style, animate,
         | interact with, etc a button. The design space for UX is much
         | larger than that of databases, and existing libraries touch
         | maybe a small percentage.
        
       | ericmsimons wrote:
       | Congrats to Rich & team- SvelteKit is an amazing experience to
       | develop with. Excited to use 1.0 on some new projects!
        
       | rohanrajpal wrote:
       | Congrats team, we've built a HUGE SaaS with Sveltekit + NestJs
       | and it has been a wonderful experience
        
       | keyboards wrote:
       | Thank you so much for this. I love Svelte to bits.
        
       | joeldrake wrote:
       | Hurray!
        
       | akmittal wrote:
       | Congratulations to the team for releasing this.
       | 
       | For someone who hasn't followed svelte closely, How much JS
       | sveltekit ship by default using SSR
        
         | swyx wrote:
         | its up to you - you can ship 0 kb of js if you want by turning
         | off client side rendering https://kit.svelte.dev/docs/page-
         | options#csr
         | 
         | and you have this choice on a per page basis rather than having
         | to choose between a static site generator or a full SPA
        
           | akmittal wrote:
           | 0kb is best size of JS. Curious if I do want JS, how much is
           | extra framework overhead
        
             | crucialfelix wrote:
             | 3kB
        
               | swyx wrote:
               | as compared to nextjs' ~150kb baseline? (not a real
               | number im just guesstimating)
        
               | crucialfelix wrote:
               | 79.46 kb which includes React. That's never where the
               | bloat comes from.
        
               | ovao wrote:
               | It's not directly comparable. Svelte apps have an
               | extremely minimal runtime, because Svelte compiles
               | components into largely freestanding chunks of code.
               | 
               | The benefit is that for smaller apps, SvelteKit can be
               | extremely lean, but the cost grows as the number of
               | components and pages increases, since a number of
               | attributes can't draw from a larger, monolithic runtime
               | (or set of runtimes).
               | 
               | You do have to build moderately large apps to hit the
               | point at which it's a drawback however.
        
       | xiphias2 wrote:
       | Thanks for finally having a SvelteKit tutorial :)
       | 
       | I was using SvelteKit, but I really need the tutorial to get
       | better at it (also to adapt better to the changes that have
       | happened).
        
       | yawnxyz wrote:
       | For anyone who might have missed the announcement hidden in the
       | launch video, there's Svelte Auth now from the Vercel NextAuth
       | team: https://vercel.com/blog/announcing-sveltekit-auth
        
         | doodlesdev wrote:
         | Wow that's huge. Might need to find something to try out
         | SvelteKit now. Loved Svelte already and I was only waiting for
         | a 1.0 of SvelteKit.
        
       | joeconway wrote:
       | Congratulations to the team, you've built something really
       | excellent
        
       ___________________________________________________________________
       (page generated 2022-12-14 23:00 UTC)