Svelte Radio

Kevin Åberg Kultalahti

Things about Svelte. Sometimes weekly, sometimes not.

  1. DEC 11

    Custom Renderers for Svelte with Paolo Ricciuti

    In this episode of Svelte Radio, we welcome Jeppe as a new permanent host and sit down with Paolo Ricciuti, Svelte maintainer and Senior Software Developer at Mainmatter, to dive deep into Svelte custom renderers. Paolo walks us through how custom renderers work (using React's approach with React DOM, Ink, and React Native as context), explains the technical challenges of bringing this capability to Svelte 5—including the template element trick, CSP issues, and runtime modifications—and shares his proof-of-concept work enabling Svelte to render to non-DOM targets like terminals and native mobile apps via Lynx.js. The discussion touches on potential use cases like Threlte for 3D graphics, the importance of this feature for Svelte adoption, and wraps up with picks including Screen Studio, TMCP, and Advent of Svelte. Guest Paolo Ricciuti — Svelte maintainer and ambassador, Senior Software Developer at MainmatterNew Host Jeppe joins as a permanent co-host!Topics Discussed Custom Renderers Overview Svelte Custom Renderers websiteWhat custom renderers are and why they matterHow React separates React (the diffing library) from React DOM (the renderer)Examples of React custom renderers: Ink — React for terminal/CLI applicationsReact Native — React for iOS/Android native appsRemotion — React for programmatic video creationReact PDF renderer for generating documentsSvelte's Technical Approach How Svelte 5 uses the element and innerHTML for fast renderingThe CSP (Content Security Policy) challenges with innerHTMLPaolo's compiler option contribution to enable programmatic element creationThe custom renderer API: defining operations like createElement, setText, setAttribute, appendChild, etc.Separating the Svelte runtime from DOM-specific codeLynx.js Integration Lynx.js — ByteDance's cross-platform framework (powers parts of TikTok)Why Lynx was the catalyst for custom renderer workCSS support in Lynx including Flexbox, Grid, and even TailwindThe difference between Lynx's element approach vs React Native's component importsRelated Projects & Discussions Threlte — Three.js for Svelte (created by Grisha)React Three Fiber — Three.js React rendererSvelte Native — Existing (but limited) Svelte native solutionLiveView Native (Elixir/Phoenix) as a comparison for multi-target templatingDiscussion with Grisha about mixing renderers in the same componentFunding & Open Source Mainmatter's sponsorship of Paolo's custom renderer workFirst external sponsor for this initiativeDiscussion about using Svelte Open Collective funds for this featureWhy custom renderers matter for Svelte adoption in enterprisePaolo's Recent Contributions to Svelte onChange callback for $state (PR in progress)from action utilityCSP-friendly compiler option (foundational for custom renderers)Picks Screen Studio — screen.studio — Mac screen recording app with automatic zoom animations (Kevin's pick, used for Advent of Svelte recordings)TMCP — github.com/paoloricciuti/tmcp — Paolo's TypeScript MCP (Model Context Protocol) framework, praised for being much better than the official SDK (Jeppe's pick)Advent of Svelte — svelte.dev/blog/advent-of-svelte — 24 days of Svelte features and improvements (Brittany's pick)Links SvelteSvelteKitMainmatter — Paolo's employer, specializing in Svelte and Rust consultingInk (React CLI)React NativeRemotionLynx.jsThrelteReact Three FiberScreen StudioTMCPAdvent of SvelteFollow Paolo Ricciuti: GitHub | BlueskySvelte Radio: svelteradio.com

    1h 1m
  2. DEC 6

    One Man Svelte for NGOs with Ilja

    GuestIlja - Berlin-based developer specializing in building websites and data visualizations for NGOs. Svelte Ambassador. Topics Discussed Working with NGOs vs. traditional businessesBudget constraints and project-based fundingThe AfroZensus projectSvelte 5 migrationBerlin Svelte Meetup announcementBerlin Svelte Meetup Date: December 9th (Tuesday)Venue: Datawrapper's office in BerlinTalks: Peter from XYFlow presenting SvelteFlow, plus moreRegistration: https://svelte-berlin.de/Links Mentioned Tools & Libraries svelte-render-scan (Visual debugging tool by Stanislav Khromov): https://github.com/khromov/svelte-render-scansvelte-inspect-value (Value inspector component): https://github.com/ampled/svelte-inspect-valueSvelteFlow (Node-based UI library): https://svelteflow.dev/Friendly Captcha (GDPR-compliant captcha): https://friendlycaptcha.com/SparklePost (Native-feeling PWA demo): https://sparklepost.vercel.app/@component documentation: https://svelte.dev/docs/svelte/basic-markupCompanies & Organizations Datawrapper: https://www.datawrapper.de/GitButler: https://gitbutler.com/XYFlow: https://xyflow.com/Projects Academic Freedom Index: https://academic-freedom-index.net/AfroZensus: https://afrozensus.de/AfroZensus Dashboard: https://data.afrozensus.de/Courses Practical Accessibility by Sara Soueidan: https://practical-accessibility.today/Unpopular Opinions Kevin: More people should self-hostBrittney: Lost free Copilot accessAntony: Store states, not effectsIlya: JSDoc is superior to TypeScriptPicks Kevin: SparklePost, "You can just do things", The Hierarchy book series by James IslingtonBrittney: @component documentationAntony: Friendly CaptchaIlya: svelte-render-scan, svelte-inspect-value, Practical Accessibility course

    1h 14m
4.9
out of 5
16 Ratings

About

Things about Svelte. Sometimes weekly, sometimes not.

You Might Also Like