React + TypeScript

React + TypeScript

In this episode of Syntax, Scott and Wes talk about using React with Typescript — how to set it up, components, state, props, passing data, custom hooks, and more! Freshbooks - Sponsor Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the “How did you hear about us?” section. Sentry - Sponsor If you want to know what’s happening with your code, track errors and monitor performance with Sentry. Sentry’s Application Monitoring platform helps developers see performance issues, fix errors faster, and optimize their code health. Cut your time on error resolution from hours to minutes. It works with any language and integrates with dozens of other services. Syntax listeners new to Sentry can get two months for free by visiting Sentry.io and using the coupon code TASTYTREAT during sign up. Linode - Sponsor Whether you’re working on a personal project or managing enterprise infrastructure, you deserve simple, affordable, and accessible cloud computing solutions that allow you to take your project to the next level. Simplify your cloud infrastructure with Linode’s Linux virtual machines and develop, deploy, and scale your modern applications faster and easier. Get started on Linode today with a $100 in free credit for listeners of Syntax. You can find all the details at linode.com/syntax. Linode has 11 global data centers and provides 24/7/365 human support with no tiers or hand-offs regardless of your plan size. In addition to shared and dedicated compute instances, you can use your $100 in credit on S3-compatible object storage, Managed Kubernetes, and more. Visit linode.com/syntax and click on the “Create Free Account” button to get started. Show Notes 04:55 - Components Strategies Example: type Props = { value: string; } const App = (props: Props) => Return type? JSX.Element FC or FunctionComponent It’s discouraged for this reason: It means that all components accept children, even if they're not supposed to It could be useful for a return type 12:13 - Props Default props: const defaultJoke: JokeProps = { joke: 'LOL JOE', id: 'YEAH', status: 200, }; function JokeItem({ joke = defaultJoke }: JokeProps): JSX.Element { return ( {joke.joke} = {joke.id} ); } Because props are always destructured, you often have to make a new type for your props. You can’t just type each argument by itself. 18:38 - State Just like Generics, State can be inferred If your type is simple and you’re using useState, it just works: const [user, setUser] = useState(null); 22:27 - useEffect Nothing special required Good use of void: If you want to use a Promise function but not worry about await or .then(), you can pop a void in front of it: useEffect(() => { console.log('Mounted'); // getJoke().then(console.log).catch(console.error); void getJoke(); }, [getJoke]); 26:09 - Refs Very similar to state however some interesting things with null: const ref1 = useRef(null!); “Instantiating the ref with a current value of null but lying to TypeScript that it’s not null.” 29:33 - Custom Hooks This is a great use case for Tuples 31:00 - Context This is probably the most complex thing in this list First define the types Use generic to pass in types OR null This can also be non-null if you have default values in createContext: const AppCtx = React.createContext(null); 35:21 - Events The React events system is better than Vanilla JS Can handle them inline and have it inferred: onClick={e ⇒ yeah(e.target)} const onSetType = (e: React.ChangeEvent) => setType(e.target.value) React has a bunch of events built in — many of them take a Generic argument so you can specify the type of element that triggered it. Handy for native API methods like play and pause. 39:27 - ForwardRef Again use of to pass in forwarded ref type as param 1, Props types as param 2: type Props = { children: React.ReactNode; type: "submit" | "button" }; export type Ref = HTMLButtonElement; export const FancyButton = React.forwardRef((props, ref) => ( {props.children} )); 41:30 - ESLint Typescript-react is good Extend your own Most JS rules apply to TS 46:20 - React as Global React 17 Also add JSX: True to eslint globals for typing things like JSX.Element global.d.ts import * as react from "react" import * as react_dom from "react-dom" declare global { type React = typeof react type ReactDOM = typeof react_dom } 48:08 - TSConfig jsx: "react" React emit .js files with JSX changed Preserve .jsx file output React-native → .js files with jsx not changed 53:05 - Frameworks? Next.js makes this a TREAT Gatsby just use .tsx extensions https://www.gatsbyjs.com/plugins/gatsby-plugin-ts-config/ Links https://github.com/typescript-cheatsheets/react Tanner Linsley https://github.com/wesbos/eslint-config-wesbos Deno Architect https://fav.farm/ Snowpack Vite Parcel 2 Foam ××× SIIIIICK ××× PIIIICKS ××× Scott: Obsidian Wes: Folding Allen Keys Shameless Plugs Scott: 1: Level Up Tutorials Pro Spring Sale - 50% off annual subscriptions! 2: SvelteKit Course Wes: Beginner Javascript Course - Use the coupon code ‘Syntax’ for $10 off! Tweet us your tasty treats! Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets

Jaksot(970)

866: 2025 Web Development Predictions

866: 2025 Web Development Predictions

Scott and Wes look into their crystal ball to predict what’s coming in web development next year. From the rise of on-device AI to the vanilla CSS comeback, Bun’s big moves, and React’s evolution, this episode is packed with bold predictions and hot takes! Show Notes 00:00 Welcome to Syntax! 02:00 Brought to you by Sentry.io. 03:09 The agenda. 03:40 Temporal Javascript api will ship in Safari and Chrome. Temporal Proposal. 06:23 On device AI. WebGPU API Dawn Native WebGPU 10:26 Models will plateau. Bolt.new, v0, Lovable.dev. 13:40 Web Awesome will become the most used web components library. Web Awesome. 15:57 We will be using more web components. 16:59 A push towards the ‘standard stack’. 19:38 We can really use relative color. 21:39 Vanilla CSS comeback. 23:35 A complete Mixins / Functions API for CSS. 24:27 Conditionals will ship in all browsers. 25:50 People will still make vertical centering jokes. 27:08 VSCode will be feature parity with Cursor. 28:22 Framework choice will matter less with AI tools. 29:12 OpenAI will launch a browser. Dupe.com. Buy Now! The Shopping Conspiracy. Krazy Binz. 37:18 React will drop Babel. BabelJS. 38:05 React Server Components will pop. 39:46 Remix will relaunch as something entirely different. 41:11 React Native will have it’s time. 42:06 Svelte will get component-based islands or data loading. 44:19 Server Runtimes, Bun will continue to do non-standard, lovable things. 44:44 Bun will release a PAS to compete with NPM, Vercel, and Vite. 46:06 Laravel will release a CMS. 47:57 Vite will stay king. 48:03 Rolldown ships in the next version of Vite. Rolldown. Statamic. 49:35 Sick Picks & Shameless Plugs. Sick Picks Scott: PHILIPS A19 Ultra Definition Dimmable Light Bulb. Wes: Stats App. 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

8 Tammi 202552min

865: CSS Performance × Rate Limiting × Array Sort Behavior - STUMP'd

865: CSS Performance × Rate Limiting × Array Sort Behavior - STUMP'd

Scott and Wes challenge each other’s knowledge on everything from array sorting quirks to browser isolation types in a rapid-fire trivia format. They dive deep into performance optimizations, TypeScript type safety, and HTML best practices while uncovering surprising edge cases that every web developer should know about. Show Notes 00:00 Welcome to Syntax! 00:43 Brought to you by Sentry.io. 01:23 Question 1: Array Sort Default Behavior. 03:24 Question 2: Splitting Into Individual Words & Characters. 06:06 Question 3: NodeJS Stream Backpressure. 09:07 Question 4: Custom Middleware Rate Limiting. 13:00 Question 5: Transform Function Property Changes. 15:18 Question 6: TranslateZ & Will-Change Performance. 17:52 Question 7: Table Structure Best Practices. 20:23 Question 8: Dialog vs Div with Dialog Role. 23:21 Question 9: TypeScript Unknown vs Any & Never. 26:31 Question 10: Response Type Safety in TypeScript. 29:48 Question 11: Browser Isolation Types. 32:54 Question 12: HTML Quirks Mode Behavior. 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

6 Tammi 202535min

864: Durable Objects × Tab State Hacks × Headless CMS Choices + More

864: Durable Objects × Tab State Hacks × Headless CMS Choices + More

Scott and Wes ring in the new year, answering listener questions on the rise of durable objects, handling tricky tab state in e-commerce apps, and their top picks for headless CMS. They also chat about the future of CSS, deployment platforms, and whether Syntax beanies might finally be a thing! Show Notes 00:00 Welcome to Syntax! 00:52 Brought to you by Sentry.io. 03:10 What Are Durable Objects? 08:25 CSS Anchor Positioning: Cross-Browser Support Update. Implement CSS Anchor Positioning. 12:48 Freelancers: UX and Design Skills vs. Functional Expertise. 16:47 Choosing the Best Deployment Platform. Syntax Episode 615. 20:49 Making Websites WCAG Compliant. Polypane. 22:35 Managing Tab State in Complex Apps. 28:43 Will CSS Ever Be Complete? 33:21 When Will Syntax Beanies Drop? Syntax Swag Store. 35:21 The Best Headless CMS for a Tech Blog. 42:15 From Many Packages to Monolithic Frameworks. 46:41 Sick Picks + Shameless Plugs. Sick Picks Scott: The Sheet with Jeff Marek. Wes: 28” 4K+ BenQ Programming Monitor. 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

1 Tammi 202552min

863: 2024: A Year in Review

863: 2024: A Year in Review

Scott and Wes look back at 2024 and share highlights from a big year for Syntax and the web dev world. They review their 2024 predictions to see what they got right (and wrong), and break down the major moments in web development from CSS improvements to AI editors and beyond. Show Notes 00:00 Welcome to Syntax! 01:30 Changes to the Syntax podcast. 05:56 What happened this year? 06:07 React. 06:36 Solid Start. 07:04 Tanstack Start. 07:43 Remix 09:42 AI Editors. 11:53 Vite 6. 14:02 Bluesky. 19:52 CSS. 22:17 What did we do? 22:21 React Miami. React Miami Episode. 22:26 JSNation Amsterdam. 23:55 JSNation US + React Summit. 24:57 Terminal Feud. 26:28 Laravel + Terminal basketball game. 27:02 Syntax San Francisco meetup. 27:23 GitHub Universe. 28:07 FITC. 28:38 153 Syntax Episodes + Video. 29:32 Our 2024 Predictions Reviewed. 29:46 Types in JS will have real movement. 31:29 Temporal API will ship in 1 browser. 32:50 Perf tooling gets easy for everyone to understand. 33:29 CSS continues to get better where you need less JS. 34:25 Svelte v5 is very fast. 34:38 The year of the server in frameworks. 35:28 Astro is going to have a good year. 36:13 React server components. 37:03 Remix moves away from page-based loaders, to component loaders. 37:18 Hono will become more ubiquitous. 38:28 We will see a route matching Proposal move ahead. 39:23 Bun releases full node compat. 40:42 We will see a new Linter + formatter entirely replace. 42:16 New TypeScript typechecker. Ezno. 43:40 Lightning CSS pops - or does it? 45:10 You’ll hear more about Rspack and Turbopack. 45:51 Vite isn’t going to release anything big in 2024. 46:24 Relative color will land in all major browsers. 48:14 CSS contrast-color will land in chrome. 48:48 Scroll animation landing in 2 browsers. 50:03 The year of CSS discovery. 51:09 Safari will Ship 3 missing PWA Support. 52:11 Firefox usage will continue to slip. 56:53 Paid Arc features. 57:14 More XR web experiences as Apple releases in Vision Pro. 59:55 AI Tooling. 01:00:57 Small Models that run in the browser. 01:01:38 Apps get Sherlocked by OpenAI. 01:02:04 On prem corporate AI. 01:04:49 Sick Picks + Shameless Plugs. Sick Picks Scott: TCGPocket App. Wes: Huge Bag of Croc Charms 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

23 Joulu 20241h 8min

862: Svelte 5 Is Here!

862: Svelte 5 Is Here!

Is Svelte becoming React? Scott and Wes explore the exciting updates in Svelte 5, including Runes, Snippets, odd font choices, and performance benchmarks, while discussing custom event updates, migration tips, and potential performance gains. Show Notes 00:00 Welcome to Syntax! Scott’s Svelte5 Overview. 01:27 Brought to you by Sentry.io. 02:06 What’s new in Svelte 5? 02:13 Runes. 04:47 $state 07:00 $state.snapshot 11:47 $derived 12:46 $derived.by 15:41 $effect 17:24 $effect.pre 18:05 $effect use cases. 22:20 $props 24:57 Binding state. 27:15 $inspect vsode-wrap-svelte. 28:46 $inspect(…).with 30:42 Snippets. 34:22 Events now onclick instead of on:click. 36:09 Custom events now just props instead of createEventDispatcher. 36:31 Serif Font on website. 40:01 Performance. Benchmarks Doc. Benjamin McCann Tweet. 46:41 Is Svelte becoming React? 49:21 Migration. 51:41 What’s next and wish list for Svelte. 57:12 Sick Picks & Shameless Plugs. Sick Picks Scott: Dragon Quest 3. Wes: Dresscode.dev. 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

18 Joulu 20241h

861: Local Data: Sqlite, LocalStorage, Session, Cookies and IndexDB

861: Local Data: Sqlite, LocalStorage, Session, Cookies and IndexDB

Scott and Wes dive into the world of local data storage, breaking down the pros and cons of Sqlite, LocalStorage, SessionStorage, Cookies, and IndexedDB. They cover real-world use cases like user settings, offline data, and auth tokens, while sharing their favorite tools and strategies for keeping your data fast and secure. Show Notes 00:00 Welcome to Syntax! 00:30 Brought to you by Sentry.io. 01:43 Why store data locally. 01:55 User preferences and settings. 02:50 Not logged in state (shopping carts, etc). 03:30 Data for faster loading. 03:51 Privacy concerns. 04:25 Large files or drafts. 05:50 Auth tokens. 07:08 Where to store data. 07:11 Cookies. 07:48 Local storage. 09:15 Session storage. 10:35 IndexedDB. 12:15 BYOJS Storage. 13:41 SQlite via WASM. 14:12 Penalties of SQLite in browser via WASM. 15:29 PGLite. 16:23 Dealing with migrations. 16:55 The advantages of the approach. 18:42 Dexie. 19:59 Patch messages. 21:25 A few options. TinyBase Docs. Local First Web. 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

16 Joulu 202424min

860: Module Federation Microfrontends with ByteDance’s Zack Jackson

860: Module Federation Microfrontends with ByteDance’s Zack Jackson

Wes and Scott talk with Zack Jackson about Module Federation, and the innovative ways it streamlines collaboration across large teams and complex applications. Zack also dives into simplifying microfrontends, optimizing builds with Rspack, and his work at ByteDance. Show Notes 00:00 Welcome to Syntax! 00:48 Zach background and role at ByteDance 03:10 ByteDance’s web and native apps How ByteDance Became the World’s Most Valuable Startup Lynx ByteDance GitHub Coze Lark MarsCode 06:48 What is Module Federation? Zephyr Cloud 15:49 Evolution from V1 to V2 of Module Federation 24:47 When to consider Module Federation 29:46 How would you publish a utils package in Module Federation? 32:59 How would you do a major upgrade? 36:36 Brought to you by Sentry.io 37:01 Who owns the update process? 39:40 Handling multiple frameworks 42:10 ModernJS and Meta frameworks ModernJS Rspress 47:20 Does ByteDance have its own JavaScript runtime? NAPI 50:02 Why Zack built Rspack Rspack Rsbuild 58:15 The future of Rspack and custom bundlers Unpack 01:04:24 Module Federation’s major features 01:07:29 Sick Picks & Shameless Plugs Shameless Plugs Zack: Zephyr Cloud Midscene.js 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

13 Joulu 20241h 10min

859: Streaming Video in 2025

859: Streaming Video in 2025

Scott and Wes break down the tech behind video streaming for the web, from transcoding and variants to CDN and access control. They also share insights on tools like Mux, Cloudflare Stream, and ffmpeg, plus tips for managing bandwidth, hosting, and costs. Show Notes 00:00 Welcome to Syntax! 00:50 Brought to you by Sentry.io. 01:15 The history of video streaming. 02:10 How video streaming works: The Tech. 03:54 How video streaming works: Transcoding. 06:37 How video streaming works: Variants. ffmpeg. Wes’ R2-video-streaming. Wes’ Transcoding. YT-DL. YT-DLP. 13:13 Dynamic ad insertion. 14:29 Bandwidth and hosting. Mux. 18:03 Cloudflare. 19:13 The costs. Wes Bos Tweet Cloudflare TOS. Steve Tenuto tweet. 25:39 Media players. Media Chrome. 29:42 CDN. 32:04 Access control. 33:35 Solutions. Mux. Cloudflare Stream. Bunny.net Stream AWS Media Convert. Cloudinary. Bitmovin. 41:55 Some other features. 45:47 Sick Picks & Shameless Plugs. Sick Picks Scott: Anker MagGo. Wes: PolyCapture. 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

11 Joulu 202451min

Suosittua kategoriassa Politiikka ja uutiset

tervo-halme
aikalisa
rss-ootsa-kuullut-tasta
ootsa-kuullut-tasta-2
politiikan-puskaradio
viisupodi
rss-kuka-mina-olen
rss-vaalirankkurit-podcast
rss-podme-livebox
otetaan-yhdet
rikosmyytit
rss-kaikki-uusiksi
et-sa-noin-voi-sanoo-esittaa
rss-hyvaa-huomenta-bryssel
rss-asiastudio
radio-antro
rss-kiina-ilmiot
rss-poliittinen-talous
rss-merja-mahkan-rahat
rss-tasta-on-kyse-ivan-puopolo-verkkouutiset