Launchway - The Remix SaaS Starter Kit - Client-side validation in Remix with Zod and clientActions
Exploring a novel method for client-side form validation in Remix using Zod and clientActions
Exploring a novel method for client-side form validation in Remix using Zod and clientActions
Handle environment variables in Remix using Zod for type-safety and validation
A guide to uploading files in Remix using S3-compatible storage providers
Step-by-step guidance on how to deploy your Remix Todo App to production.
Add a theme switcher to your Remix Todo App to support light and dark modes.
Improve user experience by adding pending states and implementing network-aware UI feedbacks.
Learn how to implement multiple forms with a single button for mutations and handle concurrent mutations efficiently in Remix.
Discover how to load data into components and manage mutations using Remix forms.
Learn how to set up the layout and structure of your Remix Todo App.
Learn how to easily generate QR codes in your Remix app to share URLs and other information with your users.
Today we go over how actions inside of React Router v7 / Remix.run work. How you submit to them, what happens when you do, how they re-trigger loaders, resource routes, multiple forms on a single page handling. Custom HoC and middleware and much much more! 👍 Don't forget to like, comment, and subscribe for more episodes in this series! Join our coding community and let's build something amazing together. 📌 Stay Connected: Twitter: https://twitter.com/AlemTuzlak GitHub: https://github.com/AlemTuzlak Company Github: https://github.com/forge42dev ⏱️ Timestamps: 00:00 - Intro 00:33 - What are remix actions? 01:04 - Usual submission flow 03:37 - Action submission flow 06:13 - loaders re-triggering flow 07:19 - what you can use re-triggers for 07:59 - Why re-triggers are awesome 08:26 - what happens when you submit to an action? 08:46 - returning response from an action 09:36 - throwing responses 09:57 - throwing a redirect response 10:36 - when is it useful to throw responses 11:02 - throwing non-redirect responses 12:05 - difference between a thrown redirect and normal response 12:53 - useActionData important info 13:45 - resource routes 15:28 - why are resource routes awesome 17:13 - setting up the playground 17:56 - adding a progressively enhanced form 18:37 - triggering an action 19:03 - adding fields to the form 19:37 - seeing our server data 20:23 - progressive enhancement with no JS 22:19 - handling multiple forms on a page with single action 26:05 - handling multiple forms on a page with resource routes & tRPC like loaders 29:59 - redirecting from actions to new routes 31:30 - throwing responses & errors into error boundaries 33:03 - redirecting on successful submissions 33:39 - adding action middleware 35:20 - outro 🔖 Tags: Remix framework, Vite, Remix Vite, web development, frontend development, Remix tutorial, coding tutorial, Remix Vite tutorial, open source, coding community, remix framework tutorial
Learn how Remix's flat file-based routing generates routes from file names.
Today we go over how loaders inside of React Router v7 / Remix.run work. How you can cache loaders, how you can optimize them, where and how they re-trigger, and by the end of this video you will be ready to use them for any situation that might come up. 👍 Don't forget to like, comment, and subscribe for more episodes in this series! Join our coding community and let's build something amazing together. 📌 Stay Connected: Twitter: https://twitter.com/AlemTuzlak GitHub: https://github.com/AlemTuzlak Company Github: https://github.com/forge42dev ⏱️ Timestamps: 00:56 - What are loaders exactly? 04:19 - Single fetch approach with loaders 07:40 - What can you return from loaders 08:32 - Successful responses 08:50 - Thrown responses 09:25 - Error responses 09:54 - Streaming the data 11:53 - Streaming the data with single fetch 13:28 - When do loaders re-fire 13:43 - re-fire on action submission 14:40 - re-fire on param change 15:56 - re-fire on search param change 16:37 - re-fire on useRevalidate trigger 17:04 - re-fire on navigation to the same page 18:02 - how to stop loader re-triggers 20:14 - Practical examples 23:29 - Defering slow requests 25:56 - Using server caching for faster response times 28:25 - Caching with headers 30:25 - Using shouldRevalidate 32:44 - clientLoader caching (with remix-client-cache) 32:59 - Defer with single fetch 🔖 Tags: Remix framework, Vite, Remix Vite, web development, frontend development, Remix tutorial, coding tutorial, Remix Vite tutorial, open source, coding community, remix framework tutorial
Introduction I had some questions around Cache Control and using them in Remix. This is kind of just me answering my own questions lol. Before going over my questions, let's look at two examples and some of the values. Cache-Control without stale-whi...
Today we go over how to switch your Remix vanilla server over to Hono.js in your remix vite projects, how to type your AppLoadContext with TypeScript tricks and how to use middleware in Remix. We also use the i18n middleware for localization and internationalization. 🔗 Resources and Links: GitHub Repo: https://github.com/AlemTuzlak/remix-ecommerce 👍 Don't forget to like, comment, and subscribe for more episodes in this series! Join our coding community and let's build something amazing together. 📌 Stay Connected: Twitter: https://twitter.com/AlemTuzlak GitHub: https://github.com/AlemTuzlak Company Github: https://github.com/forge42dev ⏱️ Timestamps: 00:00 - Intro 00:28 - Going over what we need 01:25 - Adding the Hono server to Remix vite 02:20 - Extending our vite config 03:10 - Creating the load context 05:55 - Typing our app load context 07:28 - Adding internationalization i18n middleware 08:04 - Modifing our project 10:02 - Going over our implementation 11:10 - Going over what else you could do 🔖 Tags: Remix framework, Vite, Remix Vite, web development, frontend development, Remix tutorial, coding tutorial, Remix Vite tutorial, open source, coding community, Hono.js
Introduction This post is for my younger self. A post that would've helped me get up to speed with Remix faster. What is Remix? Remix is a web framework built on top of the Web Fetch API, allowing for deployment on multiple platforms. It acts as a ce...
Create your own route convention. Use a custom glob pattern. Add layouts automatically, or prepend an optional language segment.
Ever feel like updating your Remix app's UI is a circus act? One small change, and suddenly everything's breaking? You're not alone. This fragility often comes from tightly coupled components – a change in one place triggers a domino effect throughout your code. But there's a solution: hexagonal architecture. This pattern,
Lingui is an alternative to i18next for internationalization in Javascript project. It offers a different approach to i18n and is now available for Remix.run projects with Vite.
Snippets of code translated from Next.js to Remix. Learn Remix by example.
Learn more about Software Development
In Today's episode will cover: - @Stripe Integration - Webhook Setup - Checkout Session and Payment Testing These videos are free and created for the community, support will be much appreciated! 🫶
Debouncing helps reduce server load. Create a custom fetcher hook that adds debounce support. Modify the type of useFetcher to support extra features.
Challenges, learnings, and scripts — still not done yet 😰
Remix 2.7 introduced official Vite support, making it ideal to migrate our Remix Apps to Vite. In today's episode, we'll step by step migrate a base Remix App to Vite. 00:00 Introduction 00:14 Step 1: Setup Vite 00:40 Step 2: HMR & HDR 00:58 Step 3: TypeScript Integration 01:26 Step 4: Migrating Remix App Server 02:00 Step 5: Path Aliases 02:26 Step 6: Remove @remix-run/css-bundle 03:00 Step 7: Enabling TailwindCSS 03:24 App Migration (Remix + Vite)
Brooks walks through how to get started with Remix SPA mode (ssr: false) and how to setup a simple GitHub Action to deploy to GitHub Pages. Repo: https://github.com/brookslybrand/remix-gh-pages 00:00 - Intro 00:19 - Setting up a Remix SPA mode project 02:26 - Setting up GitHub Pages 03:47 - Setting up a GitHub Action 06:12 - Fixing asset 404s with basename 08:44 - Outro Learn more at https://remix.run
Learn how to implement internationalization (i18n) in your Remix project. Discover the significance of i18n, gain an understanding of the core principles, and learn various strategies for effective i18n management with Remix.
Drizzle is a typescript ORM for type-safe database access and automatic migrations. Add it to your Remix app to get started with Cloudflare D1.
Learn how our new Remix adapters and templates add support for Vite with Remix for both Netlify Functions and Edge Functions.
Use formdata for progressive enhancement and json for a better developer experience. Parse request bodies based on their content type, and parse fetchers read pending requests.
Remix is an excellent Web Application Framework I would use when building complex React-based applications.
Learn how to create a custom CMS using Xata, Remix, Novel, LiteLLM, and Vercel.
Remix est un framework de React qui permet de développer des applications web full-stack. Son routing puissant permet de créer un fichier dans le dossier routes pour créer une route API ou une vue.
Welcome back to the "Remix Done Right" series! In this episode, we'll delve into the world of internationalization (i18n) in Remix Vite projects. Join me as I show you how to seamlessly integrate i18n into your Remix applications. 🛠️ What You'll Learn in Part 3: Setting Up i18n: Learn the intricacies of configuring internationalization in Remix Vite projects, ensuring smooth localization of your web apps. Language Switcher: Implement a language switcher to empower users to seamlessly toggle between different language options. Translating Content: Dive into translating content within your application, from static text to dynamic data, ensuring a fully localized user experience. 🚀 Get Ready to Remix: Follow along and code with us as we lay the foundation for a globally accessible Remix application with robust internationalization support. Whether you're new to i18n or a seasoned developer, this tutorial is designed to be beginner-friendly yet packed with advanced insights. 🔗 Resources and Links: GitHub Repo: https://github.com/AlemTuzlak/remix-ecommerce Remix Documentation: https://remix.run/docs/en/main Vite Documentation: https://vitejs.dev/ 👍 Don't forget to like, comment, and subscribe for more episodes in this series! Join our coding community and let's build something amazing together. 📌 Stay Connected: Twitter: https://twitter.com/AlemTuzlak59192 GitHub: https://github.com/AlemTuzlak ⏱️ Timestamps: 00:00 - Intro 00:39 - Basic setup and overview 01:21 - Revealing entry files 02:00 - entry.client setup 02:20 - Adding everything we need 03:26 - Adding our first language file 04:06 - Adding resources file 05:45 - Modifying entry.server 08:02 - Modifying the root.tsx file 10:35 - Adding our first translation 10:46 - Fixing a Vite specific error with remix-i18n 11:14 - Our first demo 11:50 - Adding another language 12:37 - Making our resources type-safe 15:22 - Adding a language switcher 15:44 - Final demo 16:17 - Outro 🔖 Tags: Remix framework, Vite, Remix Vite, internationalization, i18n, web development, frontend development, Remix tutorial, coding tutorial, i18n tutorial, Remix Vite tutorial, web app localization, i18n setup, language switcher, translating content, developer tools, open source, coding community.
Incremental Static Regeneration (ISR) is a powerful pattern for rendering pages on the web. Remix has useful tools to do fine-grained ISR and other advanced caching patterns when deployed to Netlify. This guide will show you how to do it.
Remix Done Right Series - Part 1: Project Setup with Remix and Vite Welcome to the first installment of our "Remix Done Right" series! In this episode, we dive into the essential steps of setting up the foundation for our Remix app using Vite. Get ready to embark on a journey of creativity and coding as we create a powerful remix application from scratch. 🛠️ What You'll Learn in Part 1: Project Setup: We guide you through the process of setting up a basic project structure using Remix and Vite, ensuring a solid foundation for your app. Remix Development Tools Installation: Learn how to install and configure Remix development tools to streamline your workflow and enhance the development experience. Plugin Integration: Discover the power of plugins as we add some essential ones to supercharge your Remix app development. Tailwindcss: Learn how to install tailwindcss in Remix and use it to style your projects. 🚀 Get Ready to Remix: Follow along and code with me as we lay the groundwork for an exciting and feature-rich Remix application. Whether you're a seasoned developer or just starting, this series is designed to be beginner-friendly and packed with valuable insights. 🔗 Resources and Links: Remix Documentation: https://remix.run/docs/en/main Vite Documentation: https://vitejs.dev/ Remix Development Tools: https://github.com/Code-Forge-Net/Remix-Dev-Tools 👍 Don't forget to like, comment, and subscribe for more episodes in this series! Join our coding community and let's build something amazing together. 📌 Stay Connected: Twitter: https://twitter.com/AlemTuzlak59192 GitHub: https://github.com/AlemTuzlak ⏱️ Timestamps: 00:00 - Intro 01:23 - Installing a fresh Remix.run project 01:52 - Remix Vite vs old Remix bundler rant 04:12 - Initialing the project 05:02 - Going over what we initialized 05:33 - Modifing our Vite config & adding remix-development-tools 06:54 - tsconfig.json overview 08:49 - Looking at our application with remix dev tools 09:31 - Adding tailwindcss to the project 12:08 - Overview of app with tailwind 12:29 - Adding remix dev tools plugins 14:32 - Our first plugin overview 15:40 - Adding the icons plugin 16:58 - Outro & info on the part 2
Automatically generate responsive images on Remix using Unpic
If you're building a Remix web app, and then you decide to expose an API from that app, you may be tempted to try to reuse the same routes …
If you're using Remix, you can ask it to prefetch the data of a new route using `<Link prefetch`> prop, but if you need to use `fetcher.loa…