https://github.com/sveltejs/svelte/discussions/10085 Skip to content Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} sveltejs / svelte Public * * Notifications * Fork 4.3k * Star 75.4k * Code * Issues 938 * Pull requests 84 * Discussions * Actions * Projects 0 * Wiki * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights Tenets #10085 Rich-Harris announced in Announcements Tenets #10085 @Rich-Harris Rich-Harris Jan 4, 2024 * 12 comments * 21 replies Return to top Discussion options * {{title}} Something went wrong. Quote reply edited * {{editor}}'s edit {{actor}} deleted this content . {{editor}}'s edit Something went wrong. [116] Rich-Harris Jan 4, 2024 Maintainer - This is an attempt to articulate the Svelte philosophy -- our bedrock principles, that guide our design decisions. Edit: for visitors from Hacker News, and anyone else who is curious, here is the video that this list came out of The web matters We work on Svelte because we believe that the web is a critically important technology, and that its continued survival is not guaranteed. Optimise for vibes People use Svelte because they like Svelte. They like it because it aligns with their aesthetic sensibilities. Instead of striving to be the fastest or smallest or whateverest, we explicitly aim to be the framework with the best vibes. Don't optimise for adoption We're not trying to be the most popular framework, we're trying to be the best framework. Sometimes that means making choices that we believe in but that go against the grain of web development trends. HTML, The Mother Language HTML is a really good language for describing UI. Svelte augments HTML in a way that makes it a really good language for describing interactive UI. Most frameworks are JS-centric, because JS is the most powerful language. But then they find themselves jumping through hoops to make it feel like you're writing HTML. We think both options are valid, but the HTML-first approach ends up feeling more natural. Embrace progress There is a tendency in the web developer community towards a harmful form of pessimistic nostalgia -- the idea that things were better in the prelapsarian age before bundlers, TypeScript, client-side routing and other trappings of modernity. This is nonsense. As a community our default position is one of optimism about technology -- the platform is getting better, our tools are getting better, our devices are getting better, and if we embrace that fact we can make better stuff. And when other frameworks introduce new ideas like signals or server components, we look at them with interest and jealousy, and try to work out how we can incorporate good ideas, instead of resting on our laurels. There is always room for improvement. Numbers lie Lighthouse has broken the brains of a generation of web developers. We have replaced good judgment with subservience to metrics that were only ever intended to be used as a diagnostic tool. Goodhart's Law states that When a measure becomes a target, it ceases to be a good measure and this is very true in web development. Numerical rigour is good, and we pay attention to the various numbers, but when designing Svelte we think qualitatively, not quantitatively. Magical, not magic There's a subtle line between something feeling magical, and something feeling like magic. We want Svelte to feel magical -- we want you to feel like a wizard when you're writing Svelte code. Historically I think Svelte went too far into magic territory, where it's not 100% clear why things work a certain way, and that's something that we're rectifying with Svelte 5. Dream big 'Choose the right tool for the job' is sensible but boring advice. It makes us small in our ambitions. I want us to dream bigger. I don't want to feel like my tools can't handle evolving requirements, or that if I want to dabble in a new field I need to learn an entirely new way of working first. Even if it turns out to be unachievable, I find it valuable to ask the question 'what would it take for SvelteKit to be the best framework for any app?', whether it's purely static content, or a realtime multiplayer app, or an offline-first productivity app, or even something built for an augmented reality headset. No-one cares Most people do not care about frameworks. They just want to build something cool, and Svelte is for those people too. So when we design things we need to think about the people who haven't read the docs in a while, if at all, and don't care about things like fine-grained rendering or configuring their build tool. This means that things need to be intuitive, that we shouldn't need to worry about manual optimisations like memoisation, that we should have as few APIs as possible, and that things need to be discoverable -- for example you should be able to hover over a rune and get a link to comprehensive documentation. This also informs our approach to documentation and tutorials -- it should be possible to build what you want by just learning the concepts that you need, and worrying about the other stuff for another day. Design by consensus Svelte is a community-driven and consensus-led project. It's important that the community -- that's you -- has a stake in the project's future. Many of Svelte's best ideas originated outside the core team. When we introduce new plans, we want to communicate them openly and provide everyone with good opportunities to offer their feedback. Those of us who work on the project every day have a vision for what kind of thing we want it to be, but we don't want to foist that vision on people against their will. And so while we can't get unanimous agreement on every change, we can at least say that dissenting voices have been heard and considered. Beta Was this translation helpful? Give feedback. 213 You must be logged in to vote 168 5 11 26 [?] 326 22 24 All reactions * 168 * 5 * 11 * 26 * [?] 326 * 22 * 24 Replies: 12 comments * 21 replies * Oldest * Newest * Top Comment options * {{title}} Something went wrong. Quote reply [105] Indyandie Jan 4, 2024 - @Rich-Harris How do you imagen sveltekit will embrace the no-one cares tenet? I dream of a world where we don't have to think of package managers as much. Beta Was this translation helpful? Give feedback. 4 You must be logged in to vote 1 [?] 6 All reactions * 1 * [?] 6 1 reply @codymikol Comment options * {{title}} Something went wrong. Quote reply codymikol Jan 4, 2024 - Check out Nix Beta Was this translation helpful? Give feedback. 9 1 [?] 2 1 All reactions * 9 * 1 * [?] 2 * 1 Comment options * {{title}} Something went wrong. Quote reply [935] tausifcreates Jan 4, 2024 - Oh, you moved from 'optimise for vibes' when you decided to deprecate export let in future version Beta Was this translation helpful? Give feedback. 4 You must be logged in to vote 6 42 All reactions * 6 * 42 13 replies Show 8 previous replies @brunnerh Comment options * {{title}} Something went wrong. Quote reply brunnerh Jan 5, 2024 - "This isn't even my final form" - Svelte 5 (Hoping for #9241 to happen.) Beta Was this translation helpful? Give feedback. 1 All reactions * 1 @AlanBreck Comment options * {{title}} Something went wrong. Quote reply AlanBreck Feb 8, 2024 - $props is probably my favorite rune since it makes it easier to reuse types for props, including making generic components a lot easier to work with @eddiemcconkie, can you explain this further (with special emphasis on the "makes it easier to reuse types for props" part)? Working on a design system where we want every component to accept a baseline of props. Will the $props rune make that possible? Any examples? Beta Was this translation helpful? Give feedback. All reactions @eddiemcconkie Comment options * {{title}} Something went wrong. Quote reply eddiemcconkie Feb 8, 2024 - @AlanBreck sure! Here's a REPL with a couple examples. If you want every component to accept a baseline of props, you can define an interface with TypeScript, and then extend that interface within each component. In the example, the circle and rectangle components both have color and stroke props, but the circle also has a radius and the rectangle also has width and height. A really handy use case, though, is if you want to extend the functionality of an existing HTML element, like a button, you can extend the HTMLButtonAttributes type provided by Svelte. This is much easier to do in Svelte 5, compared to Svelte 4. Beta Was this translation helpful? Give feedback. 1 All reactions * 1 @AlanBreck Comment options * {{title}} Something went wrong. Quote reply AlanBreck Feb 9, 2024 - Thank you! What about from a runtime perspective? Will the $props rune help determine what props are available for a component during runtime, though? Beta Was this translation helpful? Give feedback. All reactions @eddiemcconkie Comment options * {{title}} Something went wrong. Quote reply eddiemcconkie Feb 9, 2024 - Not totally sure on that one! Someone from the core team could probably give a good answer, but I'm guessing the compiled code gets optimized based on which props you destructure from $props() Beta Was this translation helpful? Give feedback. All reactions Comment options * {{title}} Something went wrong. Quote reply edited * {{editor}}'s edit {{actor}} deleted this content . {{editor}}'s edit Something went wrong. [142] codenoid Jan 4, 2024 - the first time I use Svelte & Kit I feel the same joy as I feel when the first time learning web development in 2015 I don't know how I can be thankful enough Beta Was this translation helpful? Give feedback. 8 You must be logged in to vote 8 6 All reactions * 8 * 6 1 reply @amr3k Comment options * {{title}} Something went wrong. Quote reply amr3k Jan 4, 2024 - I also started in the web track back in 2016 and I wasn't fond of frontend, but came back to it in 2020 because I heard the word svelte on reddit and watched a crash course from traversy media, and quickly fall in love with svelte & frontend. Beta Was this translation helpful? Give feedback. 4 All reactions * 4 Comment options * {{title}} Something went wrong. Quote reply edited * {{editor}}'s edit {{actor}} deleted this content . {{editor}}'s edit Something went wrong. [136] codymikol Jan 4, 2024 - I love the "Vibe Based Optimization" philosophy Beta Was this translation helpful? Give feedback. 18 You must be logged in to vote All reactions 1 reply @FlexWilliams Comment options * {{title}} Something went wrong. Quote reply FlexWilliams Jan 6, 2024 - cosign, i'm here for the aesthetic ;) Beta Was this translation helpful? Give feedback. All reactions Comment options * {{title}} Something went wrong. Quote reply [531] jycouet Jan 4, 2024 - no-one cares, that's the best vibe Beta Was this translation helpful? Give feedback. 12 You must be logged in to vote [?] 10 All reactions * [?] 10 0 replies Comment options * {{title}} Something went wrong. Quote reply [434] softwarecurator Jan 5, 2024 - RICH FOR PRESIDENT Beta Was this translation helpful? Give feedback. 17 You must be logged in to vote 10 9 2 All reactions * 10 * 9 * 2 0 replies Comment options * {{title}} Something went wrong. Quote reply [108] gevera Jan 5, 2024 - With enthusiasm and community like ours, I feel like SvelteKit in five years from now will able to do this: * +page.server.go (adapter/go) * +page.server.py (adapter/python) * +page.server.rs (adapter/rust) * +page.server.rb (adapter/ruby) * +page.server.ex (adapter/elixir) * +page.php (adapter/php) Enjoyed The Tenets Beta Was this translation helpful? Give feedback. 25 You must be logged in to vote 4 12 All reactions * 4 * 12 4 replies @SikandarJODD Comment options * {{title}} Something went wrong. Quote reply SikandarJODD Jan 5, 2024 - it would be crazy if would be able to add python to it...and integrate with ai models in seconds......or simple python integration in seconds Beta Was this translation helpful? Give feedback. 6 3 All reactions * 6 * 3 @Antonio-Bennett Comment options * {{title}} Something went wrong. Quote reply Antonio-Bennett Jan 5, 2024 - My guess is with Bun this will be possible since they make it easy to import files if they have a good C FFI. We've already seen Rust and C++ being imported easily into Bun. The only thing I'm not sure about is svelte/kit's tight coupling to vite since I assume Bun would need to do all the bundling and etc Beta Was this translation helpful? Give feedback. 5 All reactions * 5 @didier Comment options * {{title}} Something went wrong. Quote reply didier Jan 5, 2024 - That's actually a great idea. Beta Was this translation helpful? Give feedback. All reactions @jubbs Comment options * {{title}} Something went wrong. Quote reply jubbs Jan 5, 2024 - Yes please Beta Was this translation helpful? Give feedback. All reactions Comment options * {{title}} Something went wrong. Quote reply [213] kirso Jan 9, 2024 - I gave up on learning webdev some time ago. Svelte brought me back last year! I wish there was a bit more in the philosophy of going from 0 - 1 given a lot of docs and resources cater for other web framework converts. Great tenets and can't wait whats ahead! Beta Was this translation helpful? Give feedback. 4 You must be logged in to vote All reactions 0 replies Comment options * {{title}} Something went wrong. Quote reply [272] gterras Jan 11, 2024 - Beautifully said for the most part! Beta Was this translation helpful? Give feedback. 1 You must be logged in to vote All reactions 0 replies Comment options * {{title}} Something went wrong. Quote reply [114] MichaelDimmitt Jan 15, 2024 - HTML, The Mother Language ! Beta Was this translation helpful? Give feedback. 3 You must be logged in to vote All reactions 1 reply @samal-rasmussen Comment options * {{title}} Something went wrong. Quote reply samal-rasmussen Jan 19, 2024 - I've just realized that with Tailwind you put css in html, and with htmx you put js in html. It is wild how powerful just html can be. I've personally been fully converted to the church of html first I reeeally like how Svelte is html first, but then also gives you all of css and js right there in