Syntax - Tasty Web Development Treats

by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers
Full Stack Developers Wes Bos and Scott Tolinski dive deep into web development topics, explaining how they work and talking about their own experiences. They cover from JavaScript frameworks like React, to the latest advancements in CSS to simplifying web tooling.
Episodes

977: We built a CSS Challenge platform
Scott and Wes break down how they built SynHax, the real-time CSS Battle app powering the upcoming Mad CSS tournament. From SvelteKit and Zero to diffing algorithms, sync conflicts, and a last-minute hackweek glow-up, this one’s a deep dive into shipping ambitious web apps fast. Show Notes 00:00 Welcome to Syntax! 00:50 March Mad CSS Tournament. 03:19 Brought to you by Sentry.io. 03:59 What the heck is a CSS Battle? 05:34 The tech stack. 06:30 Svelte Kit. 06:44 Zero Sync. Zero Docs Zero Svelte. 07:32 Drizzle. 07:58 Supabase. 08:23 Graffiti. 10:45 Sync Server. 12:10 Cloudflare Workers. 12:23 Local File System. 13:26 How Zero Works. 13:48 Zero Sync Client. 15:39 API server. 19:34 Dealing with states and conflicts. 24:25 The Hackweek Project. 25:29 The Diffing Algorithm. 35:22 The bugs. Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

976: Pi - The AI Harness That Powers OpenClaw W/ Armin Ronacher & Mario Zechner
Wes and Scott talk with Armin Ronacher and Mario Zechner about PI, a minimalist agent harness powering tools like OpenClaw. They unpack why Bash is “all you need,” the risks of agents, workflow adaptability, and where AI coding agents are actually headed. Show Notes 00:00 Welcome to Syntax! 03:28 What is Pi, and why does it matter? OpenClaw 05:54 What do we actually mean by “agents”? 11:04 Prompt injection: how LLMs get tricked 14:19 Is Claude Cowork actually secure? 22:01 How Armin and Mario use agents day to day 26:37 Brought to you by Sentry.io 27:25 Memory and search: teaching agents to remember 33:04 Do coding agents even need memory? 34:36 “Bash is all you need” 37:21 Adding power: how agents learn new tricks 47:02 Tools and models Armin and Mario are using right now 54:15 Sick picks + shameless plugs Sick Picks Mario: Cards for Ukraine Armin: Pro-Ject Audio Turntable Shameless Plugs Armin: Thorsten Ball Newsletter Simon Willison Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

975: What’s Missing From the Web Platform?
Scott and Wes run through their wishlist for the web platform, digging into the UI primitives, DOM APIs, and browser features they wish existed (or didn’t suck). From better form controls and drag-and-drop to native reactivity, CSS ideas, and future-facing APIs, it’s a big-picture chat on what the web could be. Show Notes 00:00 Welcome to Syntax! Wes Tweet 00:39 Exploring What’s Missing from the Web Platform 02:26 Enhancing DOM Primitives for Better User Experience 03:59 Multi-select + Combobox. Open-UI 04:49 Date Picker. Thibault Denis Tweet 07:18 Tabs. 08:01 Image + File Upload. 09:08 Toggles. 10:23 Native Drag and Drop that doesn’t suck. 12:03 Syntax wishlist. 12:06 Type Annotations. 15:07 Pipe Operator. 16:33 APIs We Wish to See on the Web 18:31 Brought to you by Sentry.io 19:51 Identity. 21:33 getElementByText() 24:09 Native Reactive DOM. Templating in JavaScript. 24:48 Sync Protocol. 25:52 Virtualization that doesn’t suck. 27:40 Put, Patch, and Delete on forms. Ollie Williams Tweet SnorklTV Tweet 28:55 Text metrics: get bounding box of individual characters. 29:42 Lower Level Connections. 29:50 Bluetooth API. 30:47 Sockets. 31:29 NFC + RFID. 34:34 Things we want in CSS. 34:40 Specify transition speed. 35:24 CSS Strict Mode. 36:25 Safari moving to Chromium. 36:37 The Need for Diverse Browser Engines 37:48 AI Access. 44:49 Other APIs 46:59 Qwen TTS 48:07 Sick Picks + Shameless Plugs Sick Picks Scott: Monarch Wes: Slonik Headlamp Shameless Plugs Scott: Syntax on YouTube Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

974: Clawdbot (Moltbot), Agents and the Age of Personal Software
Wes and Scott talk about building hyper-specific personal software with AI. They explore personal agents, home automation, JSON-as-a-database, and how LLMs unlock fast, custom apps that reduce friction and replace bloated SaaS. Show Notes 00:00 Welcome to Syntax! 01:53 What is personal software (and why it matters) 04:49 Using AI agents to build hyper-specific apps for yourself Clawdbot ClawdHub 13:43 Supercharging your dev workflow with Tailscale 19:06 Privacy when working with LLMs MLX-Audio 21:39 Brought to you by Sentry.io 22:21 Real-world personal app ideas 39:14 Sick Picks + Shameless Plugs Sick Picks Scott: FTPManager Wes: Roku Streaming Stick Shameless Plugs Syntax YouTube Channel Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

973: The Web’s Next Form: MCP UI (with Kent C. Dodds)
Scott and Wes sit down with Kent C. Dodds to break down MCP, context engineering, and what it really takes to build effective AI-powered tools. They dig into practical examples, UI patterns, performance tradeoffs, and whether the future of the web lives in chat or the browser. Show Notes 00:00 Welcome to Syntax! 00:44 Introduction to Kent C. Dodds 02:44 What is MCP? 03:28 Context Engineering in AI 04:49 Practical Examples of MCP 06:33 Challenges with Context Bloat 08:08 Brought to you by Sentry.io 09:37 Why not give AI API access directly? 12:28 How is an MCP different from Skills 14:58 MCP optimizations and efficiency levers 16:24 MCP UI and Its Importance 19:18 Where are we at today with MCP 24:06 What is the development flow for building MCP servers? 27:17 Building out an MCP UI. 29:29 Returning HTML, when to render. 36:17 Calling tools from your UI 37:25 What is Goose? 38:42 Are browsers cooked? Is everything via chat? 43:25 Remix3 47:21 Sick Picks & Shameless Plugs Sick Picks Kent: OneWheel Shameless Plugs Kent: http://EpicAI.pro,http://EpicWeb.dev,http://EpicReact.dev Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

972: These Things Make Your App Feel Like Crap on Mobile
Wes and Scott talk about why mobile web apps often feel “janky” compared to native—and how to fix it. They cover input zooming, accidental horizontal scroll, pointer/user-select quirks, frame rate consistency, full-page refreshes, and more. Show Notes 00:00 Welcome to Syntax! 01:11 Brought to you by Sentry.io 02:57 Zooming inputs 06:11 Horizontal scrolling 08:49 Proper use of pointer-events: none, and user-select: none 11:27 Allowing zoom on everything 16:37 Cleaning up the “jank” 19:48 Full page refresh 24:05 Slow loading times 29:50 Cumulative layout shift 32:47 Address bars and viewport units Dynamic Viewport Units 35:34 Full-width scroll traps Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

971: Stackoverflow and Firefox are Dead?
Is Stack Overflow actually dying, and what does that mean in an AI-driven dev world? Scott and Wes break down the latest web dev news, from Firefox’s AI crossroads and Apple’s browser engine changes to new tools, docs, and spicy browser updates. Show Notes 00:00 Welcome to Syntax! 02:36 Stack Overflow is Officially Dead 05:40 AI’s Impact on Software Development 07:56 Brought to you by Sentry.io 08:20 Micro QuickJS for Embedded Systems 13:03 Open Workers: A Cloudflare Alternative 20:09 React Aria has new Docs 24:12 Firefox and the AI Dilemma The Mozilla Announcement 31:11 Apple’s Browser Engine Changes Using alternative browser engines in Japan. 36:12 Fractured JSON for Better Readability 37:45 New Chrome Permissions Dialogue Chrome Network Access 41:15 Sick Picks & Shameless Plugs Sick Picks Scott: TRMNL E-Ink Display Wes: ACEBOTT Shameless Plugs Scott: Syntax on YouTube Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

970: Why Did Anthropic Buy Bun?
Wes and Scott answer your questions about whether Git GUIs beat the terminal, balancing accessibility with experimental web projects, blocking malicious traffic, smart home setups, why Anthropic bought Bun, navigating tricky team dynamics, and more! Show Notes 00:00 Welcome to Syntax! 00:51 Why did Anthropic buy Bun? 07:33 Should you use Git GUIs or the terminal? lazygit 12:54 How to make better coding videos v_framer Recut DaVinci Resolve Shure MV7+ 20:31 How do you handle a difficult dev teammate? 24:16 Brought to you by Sentry.io 24:41 Creative and experimental code vs accessible code Using luminance instead of lightness Color contrast checker Auto color 31:51 Smart home setups we actually use 35:37 How do you block bad bots and ISPs? Bad ASN list 38:02 What is SAP UI and why is it everywhere? SAP UI5 Demo Kit 41:28 Sick Picks + Shameless Plugs Sick Picks Scott: Inside Archaeology Wes: ProfessorBoots Shameless Plugs Syntax YouTube Channel Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

960: Reacting to the Weird + Creative Corners of the Web
Wes and Scott talk about the weird, creative corners of the web—from live-coded music with Strudel and wild Hydra visuals to shader wizardry, projection-mapping art, fully synced Christmas lights, and more. Show Notes 00:00 Welcome to Syntax! 01:10 Strudel https://www.tiktok.com/@dj_dave__/video/7541104277234748685 https://www.tiktok.com/@switch.angel/video/7542776528057257229 03:45 Hydra https://www.tiktok.com/@spacetiger3000/video/7552354878635511095?q=hydra%20video%20synth&t=1762879433461 05:44 P5.js https://www.tiktok.com/@julian_hespenheide/video/7408511121323248929?q=p5.js%20&t=1762879954031 https://www.tiktok.com/@m171148385929472638284/video/7544793538496679190?q=p5.js%20&t=1762879954031 08:03 ShaderToy https://shaders.com/ https://www.shadertoy.com/view/ldlcRf https://www.tiktok.com/@phi.graphics/video/6927475445059292421?q=shadertoy&t=1762879566343 https://www.tiktok.com/@fifi_cgi/video/7255109146062687494?q=shadertoy&t=1762879566343 11:13 Brought to you by Sentry.io 11:37 MadMapper https://www.tiktok.com/@dfiftyd50/video/7556202990529563920 https://www.tiktok.com/@dfiftyd50/video/7569626387577965844?q=projection%20mapping&t=1762879388084 14:13 Touch Designer https://www.reddit.com/r/TouchDesigner/ https://www.tiktok.com/@bedareveryday/video/7558850186601172246?q=Touch%20Designer&t=1762879652502 https://www.tiktok.com/@maze88196/video/7521311510488943894?q=Touch%20Designer&t=1762879652502 https://www.tiktok.com/@valen.bertol/video/7475117172847562039?q=Touch%20Designer&t=1762879652502 16:45 xLights https://www.tiktok.com/@ravespotlight/video/7311729112425516320?q=lights%20christmas&t=1762879799384 https://www.tiktok.com/@thatlightguy_/video/7315199858338565418?q=xlights%20show&t=1762879927155 20:19 Sick Picks + Shameless Plugs Sick Picks Scott: NeueCast Wes: 6 Port 2.5G Unmanaged Ethernet Switch UGREEN USB to Ethernet Adapter 2.5Gb Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

956: Should I Keep Using WordPress?
In this potluck episode, Wes and Scott answer your questions about paid vs. free SSL, the state of frontend jobs, headless WordPress trade-offs, organizing TypeScript types, and more! Show Notes 00:00 Welcome to Syntax! 00:51 Recapping the GitHub Meetup 05:14 Is there any real benefit to picking a paid SSL over Let's Encrypt? 08:03 Is the pure frontend role disappearing? 11:17 Is the gravy train over for software devs? 20:48 How Scott automates versioning with GitHub Actions changesets Intro to using changesets zero-svelte graffiti 25:16 Brought to you by Sentry.io 25:41 Thoughts on VS Code alternatives and the rise of Zed 33:01 Should I switch to headless WordPress or continue rolling my own PHP templates? 37:33 How do you organize TypeScript types in a frontend project? 40:55 How do I continue to level up as a developer? 45:36 Stay in a comfortable job or embrace new challenges? Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

955: SvelteKit has solved data loading
Scott and Wes break down SvelteKit’s new remote functions and why they finally solve the long-standing pain of page-level data in Svelte. They cover queries, forms, batching, caching, and all the clever RPC ergonomics that make Svelte’s approach feel surprisingly powerful and refreshingly simple. Show Notes 00:00 Welcome to Syntax! 00:45 Lots of RPC library options. 01:22 Svelte’s Page-Level Data Always Felt Off 02:12 Progress on the new Syntax site. 03:47 Remote functions explained. Svelte Remote Functions Docs. 04:15 Make a .remote.ts file. 05:07 Querying data. 07:52 Brought to you by Sentry.io. 08:17 Svelte’s leg up on React. 10:13 Query Arguments. 11:39 The benefits of Standard Schema. 13:13 Refreshing Queries. 13:29 query.batch 15:18 Form function. 21:13 Enhance. 22:31 Refresh. 23:16 Command query. 24:25 Prerender. 25:22 Caching. 27:44 My Local Cache Service Worker. 31:23 Sick Picks + Shameless Plugs. Sick Picks Scott: CoffeeSock ColdBrew Filter, Chemex Filter. Wes: Bosch Dishwasher. Shameless Plugs Scott: Syntax on YouTube Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

954: Fullstack TanStack! The Scoop with Tanner Linsley
Live from GitHub Universe, Wes and Scott talk with Tanner Linsley about the latest from TanStack, including TanStack DB’s local-first syncing, new routing ideas, and fresh perspectives on server components and “magic” directives. They explore performance, incremental adoption, and what’s next for the rapidly growing TanStack ecosystem — plus a few spicy takes along the way. Show Notes 00:00 Welcome to Syntax! 01:12 What’s new in the TanStack universe? 01:57 Introducing TanStack DB: local-first sync engine 05:17 How syncing and transactions actually work in TanStack DB 07:03 Next.js 16 Workflows: durable functions and the directive debate 08:46 Brought to you by Sentry.io 09:41 Tanner’s case for fewer “magic directives” 12:36 TanStack’s approach to React Server Components 14:30 The momentum of leading an ecosystem 15:38 Top-secret TanStack project in the works Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads

943: Modern React with Ricky Hanlon (React Core Dev)
Scott and Wes sit down with Ricky Hanlon from the React core team at Facebook to dive into the latest features and APIs shaping modern React development. From transitions and Suspense to fetching strategies and future directions, this episode breaks down what’s next for React and how developers can take advantage of it. Show Notes 00:00 Welcome to Syntax! 01:20 Who is Ricky Hanlon. 02:10 Setting the Stage: Modern React APIs 02:48 Brought to you by Sentry.io. 03:12 Defining Transitions in React 05:08 Practical Examples of Scheduling. 08:23 useDeferredValue. 09:30 Suspense. 11:13 Fallbacks and animations. 12:35 How do you get psychological performance data? 13:39 Are these considerations reasonable for the average dev? 15:37 useOptimistic. 17:35 Removing delayMs (referred to as maxDuration in later iterations). 19:49 How to fetch data in React. 21:58 Is React now just Nextjs? 23:23 Will React give us a Signals-based state management? 24:44 The challenges of building in public. 30:12 Making LLMs cooperate with React. 32:05 The lifting will happen at framework level. 32:59 This is not time slicing. 35:47 Sick Pick + Shameless Plug. Sick Picks Ricky: iPhone 17 Pro Shameless Plugs Ricky: https://conf.react.dev/ Hit us up on Socials! Syntax: X Instagram Tiktok LinkedIn Threads Wes: X Instagram Tiktok LinkedIn Threads Scott: X Instagram Tiktok LinkedIn Threads Randy: X Instagram YouTube Threads