Jacob Paris
โ† Back to all content

#27 Epic Web Conf 2024 Recap and more โ€“ Remix Community Newsletter

Hey folks!

It's Jacob Paris here with the 27th issue of Moulton

Last month's issue was delayed due to prep for Epic Web Conf and many (MANY) international travels but I'm back to stability so here we go!

I travelled to Park City Utah to speak at Epic Web Conf and meet some amazing people in the community, including several folks from the Remix team themselves.

It wasn't a Remix conference, but Remix appeared in several talks.

FEATURED ๐ŸŽค What makes the web Epic?

Kent opened the conference with a talk on web development and the web platform and what makes it different from mobile or desktop platforms which are governed by marketplaces.

youtu.be/Q0fwzlwTLWk?t=2313

๐ŸŽค The Recipe for Local First

At Epic Web Conf, R. Alex Anderson shows how to use Replicache within remix to build a local-first application that works offline

youtu.be/Q0fwzlwTLWk?t=11985

๐ŸŽค Things you probably didn't know about Remix

Lina Mahrouch explains Remix's routing and data flow features.

youtu.be/8117-JmjgOA?t=15251

๐ŸŽค High Performance CRUD

I took a look at many features that different apps could have and showed how to use Remix to support most of them and then to improve performance by layering on a cache with clientLoader and optimistic UI with some useFetcher based tools.

youtu.be/0l7qFQ2E3Gk?t=17108

At the end of the talk I formally announced that I am launching a workshop with EpicWeb.dev teaching how to build high performance CRUD applications in Remix! I'll talk more about that in the next issue.

๐Ÿ“บ What's next in Remix?

In Remix's last planning meeting, they mentioned a few cool things coming up next

There's gonna be some SSG as an enhancement to SPA mode, where you'll be able to define a list of routes that you want pre-rendered at build time, possibly similar to Next's old getStaticPaths.

Remix is working on their initial React Server Components implementation, which will allow you to return JSX directly from loaders and actions.

And they're also doing an initial step toward Server Actions with a proposal called "Action Functions". Anywhere a form or submit function allows you to specify a URL, you'll be able to pass a function and Remix will call that function when the form is submitted. Initially this will only be client side, but eventually by just adding "use server" the function will be hoisted to an endpoint, so that'll be much less work to create actions.

youtu.be/7kdulqXtPII

๐Ÿ“„ Epic PWA Offline Guide

The Remix PWA team has converted the Epic Stack into a progressive web application, allowing it to work fully offline. This guide documents how to do it.

remix-pwa.run/docs/main/offline

๐Ÿ“บ๐Ÿ“„ Migrating Remix to Vite

Daniel recorded a video walkthrough migrating an old Remix app to Vite

youtu.be/CTgQhNFqn5E

Fernando wrote a post mortem on his experience migrating a 2.5 year old remix project to Vite

fernandoabolafio.medium.com/migrating-remix-to-vite

๐Ÿ”ฅ Remix Global App Data

Kiliman showed how to define global data server-side and use it anywhere in your app, including error boundaries.

github.com/kiliman/remix-global-data

๐Ÿ“„ Add i18n to a Remix app

Sergio wrote a tutorial showing how to use remix-i18n to set the user's locale in a cookie and use that for language internationalization.

sergiodxa.com/tutorials/add-i18n-to-a-remix-vite-app

๐Ÿ”ฅ Remix Vite + Nitro

Nitro is an open source server toolkit that powers Nuxt and other frameworks. Allesandro built an example showing how to use Remix with Nitro via Vite

github.com/alessandrojcm/remix-nitro

๐Ÿ“บ Deploy Remix SPA Mode to GitHub Pages

Brooks from the Remix team recorded a demo showing how to compile a Remix app into an SPA and deploy it to GitHub Pages

You'll set up GitHub Pages, create an Action that builds the app on CI, and learn how to set up your assets to work well here

youtu.be/EO_-KwSslWQ

๐Ÿ“„ Remix + Cloudflare Pages

I wrote a few articles on how to set up Remix on Cloudflare pages, and then integration guides for Drizzle on either Cloudflare D1 or with a Postgres database

jacobparis.com/content/remix-cloudflare-pages

jacobparis.com/content/remix-drizzle-cloudflare-d1

jacobparis.com/content/remix-drizzle-cloudflare-pg

๐Ÿ“„ Create your first Remix app

The Valley of Code has produced a new beginner level Remix tutorial that walks you through creating your first Remix app

thevalleyofcode.com/remix

๐Ÿ”ฅ Zero config Vite PWA for Remix

The Vite PWA project launched a new plugin for creating progressive web applications with Remix

github.com/vite-pwa/remix

๐Ÿ“„ Build a simple login and logout

Sergio wrote a tutorial showing how to build a simple auth system with cookie session storage

sergiodxa.com/tutorials/build-a-simple-login-and-logout-with-remix

๐Ÿ”ฅ File based routing for React Router

This is a Vite plugin that adds a file based routing convention similar to Remix's, but for regular React Router apps

github.com/ws-rush/unplugin-remix-router

๐Ÿ”ฅ Remix Electron Llamafile

Jacob Ebey from the Remix team built a local LLM chat app template running on Electron.

github.com/jacob-ebey/remix-electron-llamafile

๐Ÿ“„ Handle both JSON and FormData in Remix

Remix can submit both JSON and FormData to actions and use them in fetcher hooks, but they need to be handled separately. This article contains parseRequest and useFetcherBySchema utilities that let you handle both at once.

jacobparis.com/content/conform-json-formdata

๐Ÿ”ฅ Remix Deno Vite Template

This is a starter template using Remix Vite with Deno.

github.com/redabacha/remix-deno-vite-template

๐Ÿ“บ Integrate Stripe in a Remix app

Daniel recorded a video covering Stripe integration, webhook setup, and the payment flow.

youtu.be/BaEbhSCRy3g

๐Ÿ”ฅ Remix Dev Tools 4.0

The Remix Dev Tools are now an ESM only Vite plugin, reducing the bundle size by 90%

remix-development-tools.fly.dev

๐Ÿ“„ Upload handler for Cloudflare R2 Buckets

Alex Anderson created a small form handler to upload files to Cloudflare R2 buckets.

gist.github.com/alexanderson1993/77d7ca83314fbf5965944055babef4fe

๐Ÿ”ฅ Epic Stripe

Saurabh put together an example SaaS starter using the Epic Stack by integrating it with Stripe

github.com/saurabhp75/epic-stripe

๐Ÿ”ฅ๐Ÿ“„ Typed Single Data Fetch

Kiliman wrote an example and readme for using Remix's new Single Data Fetch api and returning typed responses. It includes some helper functions for inferring the types and for encoding custom data.

github.com/kiliman/remix-single-fetch

๐Ÿ”ฅ Remix on Lambda Rust Axum

Furkan built a url shortener app on Remix using AWS Lambda with a Rust Axum function

github.com/furkankly/url-shortener

๐Ÿ”ฅ Reset suspense boundaries on client navigation

Suspense boundaries will show the fallback on first load, but if you navigate to that route again they will show the old data until new data comes in.

If you want it to show the fallback every time, add a key to the Suspense boundary.

github.com/kiliman/remix-suspense

๐Ÿฆ Build a useOptimisticLocation hook

During a form navigation, Remix won't update the location until the new loader's data is ready.

Matt Aitken from Trigger.dev made a new hook that shows the new location during pending navigations.

twitter.com/mattaitken/status/1764682261683945903

๐Ÿ‡ฒ๐Ÿ‡ฆ Meet the Remix Community in Morocco and Bosnia ๐Ÿ‡ง๐Ÿ‡ฆ

There are active Remix meetups all around the world. If you're interested in meeting other Remix users, learning more about the framework, or just hanging out with some cool folks, check out one of these meetups.

  • ๐Ÿ‡ฒ๐Ÿ‡ฆ NEW: Casablanca, Morocco
  • ๐Ÿ‡ง๐Ÿ‡ฆ NEW: Sarajevo, Bosnia-Herzegovina
  • ๐Ÿ‡บ๐Ÿ‡ธ Lehi, Utah
  • ๐Ÿ‡ฎ๐Ÿ‡ณ Pune, India
  • ๐Ÿ‡ฌ๐Ÿ‡ง London, UK
  • ๐Ÿ‡บ๐Ÿ‡ธ New York City
  • ๐Ÿ‡ง๐Ÿ‡ท Sรคo Paulo, Brasil
  • ๐Ÿ‡บ๐Ÿ‡ธ Austin, Texas
  • ๐Ÿ‡บ๐Ÿ‡ธ San Francisco, California
  • ๐Ÿ‡ฒ๐Ÿ‡ฝ Mexico City, Mexico
  • ๐Ÿ‡ฉ๐Ÿ‡ฐ Copenhagen, Denmark
  • ๐Ÿ‡ฟ๐Ÿ‡ฆ Johannesburg, South Africa
  • ๐Ÿ‡จ๐Ÿ‡ท San Jose, Costa Rica
  • ๐Ÿ‡ฌ๐Ÿ‡ญ Accra, Ghana
  • ๐Ÿ‡ฆ๐Ÿ‡น Vienna, Austria

meetup.com/pro/remix-run

This is not a one-way conversation

On behalf of the whole Remix community, Iโ€™m really glad to have you here, and I want to hear from you.

If you find something cool you'd like featured, or have questions you'd like answered, that's what I'm here for. Just hit reply and let me know, or join the conversation directly in the Remix Discord

Thanks for reading!

โ€” Jacob Paris

Professional headshot
Moulton
Moulton

Hey there! I'm a developer, designer, and digital nomad building cool things with Remix, and I'm also writing Moulton, the Remix Community Newsletter

About once per month, I send an email with:

  • New guides and tutorials
  • Upcoming talks, meetups, and events
  • Cool new libraries and packages
  • What's new in the latest versions of Remix

Stay up to date with everything in the Remix community by entering your email below.

Unsubscribe at any time.