Hacker News new | ask | show | jobs
by chillbill 1099 days ago
I've used Svelte 3 and I like it, but honestly this is the problem I have with most JS projects. Svelte 3 had 3000+ experimental features and hacky stuff, why go into 4 when 3 itself has not mature yet?! Software support is basically the thousands of low-paid js dev jobs that companies hire to update their stack every 6 months?
3 comments

I hear you, but you might be projecting a bit. FTA:

> "Svelte 3 was released more than four years ago! In JavaScript-framework-time, that's eons. Svelte’s freshness has persisted throughout, but Node.js and browser APIs have evolved during that time and today we’re updating Svelte to take advantage of some of these improvements. Svelte 4 is mainly a maintenance release, bumping minimum version requirements and tightening up the design in specific areas."

This seems eminently reasonable to me.

Maybe they shouldn't call it Svelte 4 then. Major version in semver are usually breaking.
It definitely qualifies, given e.g. its minimum required node.js version.
Did you read the article? Svelte 4 is mostly a maintenance release. It is largely backwards compatible with Svelte 3 code.
"largely"
I count a total of 3 API changes [1].

[1] https://svelte.dev/docs/v4-migration-guide

read TFA:

> "Svelte 3 was released more than four years ago... Svelte 4 is mainly a maintenance release, bumping minimum version requirements and tightening up the design in specific areas."

Major Changes breaking: Minimum supported Node version is now Node 16 (#8566)

breaking: Minimum supported webpack version is now webpack 5 (#8515)

breaking: Bundlers must specify the browser condition when building a frontend bundle for the browser (#8516)

breaking: Minimum supported vite-plugin-svelte version is now 2.4.1. SvelteKit users can upgrade to 1.20.0 or newer to ensure a compatible version ([#8516] (#8516))

breaking: Minimum supported rollup-plugin-svelte version is now 7.1.5 (198dbcf)

breaking: Minimum supported svelte-loader is now 3.1.8 (198dbcf)

breaking: Minimum supported TypeScript version is now TypeScript 5 (it will likely work with lower versions, but we make no guarantees about that) ([#8488] (#8488))

breaking: Remove svelte/register hook, CJS runtime version and CJS compiler output (#8613)

breaking: Stricter types for createEventDispatcher (see PR for migration instructions) (#7224)

breaking: Stricter types for Action and ActionReturn (see PR for migration instructions) (#7442)

breaking: Stricter types for onMount - now throws a type error when returning a function asynchronously to catch potential mistakes around callback functions (see PR for migration instructions) (#8136)

breaking: Overhaul and drastically improve creating custom elements with Svelte (see PR for list of changes and migration instructions) ([#8457](https://github. com//pull/8457))

breaking: Deprecate SvelteComponentTyped in favor of SvelteComponent (#8512)

breaking: Make transitions local by default to prevent confusion around page navigations (#6686)

breaking: Error on falsy values instead of stores passed to derived (#7947)

breaking: Custom store implementers now need to pass an update function additionally to the set function ([#6750](https://github.com/sveltejs/svelte/pull/ 6750))

breaking: Do not expose default slot bindings to named slots and vice versa (#6049)

breaking: Change order in which preprocessors are applied (#8618)

breaking: The runtime now makes use of classList.toggle(name, boolean) which does not work in very old browsers ([#8629](https://github.com/sveltejs/svelte/ pull/8629))

breaking: apply inert to outroing elements (#8627)

breaking: use CustomEvent constructor instead of deprecated createEvent method (#8775)

These are just catch up releases, nothing seriously breaking.

to give you perspective, Nodejs went from v10 to v20 in the same time frame.

This is why the JS ecosystem sucks...