⚡️The Fullstack React Framework — built on Next.js

Overview

Blitz.js


The Fullstack React Framework

"Zero-API" Data Layer — Built on Next.js — Inspired by Ruby on Rails

Read the Documentation


“Zero-API” data layer lets you import server code directly into your React components instead of having to manually add API endpoints and do client-side fetching and caching.

New Blitz apps come with all the boring stuff already set up for you! Like ESLint, Prettier, Jest, user sign up, log in, and password reset.

Provides helpful defaults and conventions for things like routing, file structure, and authentication while also being extremely flexible.


Quick Start

You need Node.js 12 or newer

Install Blitz

Run npm install -g blitz or yarn global add blitz

You can alternatively use npx

Create a New App

  1. blitz new myAppName
  2. cd myAppName
  3. blitz dev
  4. View your brand new app at http://localhost:3000



Bytes Newsletter



The Foundational Principles

  1. Fullstack & Monolithic
  2. API Not Required
  3. Convention over Configuration
  4. Loose Opinions
  5. Easy to Start, Easy to Scale
  6. Stability
  7. Community over Code

The Blitz Manifesto explains these principles in detail.


What is Blitz Designed For?

Blitz is designed for tiny to large database-backed applications that have one or more graphical user interfaces.

While we currently only support web, we are pursuing the dream of a single monolithic application that runs on web and mobile with maximum code sharing and minimal boilerplate.


Welcome to the Blitz Community 👋

The Blitz community is warm, safe, diverse, inclusive, and fun! LGBTQ+, women, and minorities are especially welcome. Please read our Code of Conduct.

Join our Discord Community where we help each other build Blitz apps. It's also where we collaborate on building Blitz itself.

For questions and longer form discussions, post in our forum.

There's still a lot of work to do, so you are especially invited to join us in building Blitz! A good place to start is The Contributing Guide.


Financial Contributors

Your financial contributions help ensure Blitz continues to be developed and maintained! We have monthly sponsorship options starting at $5/month.

👉 View options and contribute at GitHub Sponsors, PayPal, or Open Collective

🌱 Seedling Sponsors

🥉 Bronze Sponsors

🥈 Silver Sponsors

🏆 Gold Sponsors

💎 Diamond Sponsors


Core Team


Brandon Bayer

Creator

Maintainers (Level 2)

Code ownership, pull request approvals and merging, etc (see Maintainers L2)


Adam Markon

CLI

Robert Rosenberg

Website/Docs

Simon Knott

SuperJSON

Juan Martín Seery

Website/Docs

Maintainers (Level 1)

Issue triage, pull request triage, community encouragement and moderation, etc (see Maintainers L1)


Corey Brown

Jeremy Liberman

Jaga Santagostino

Satoshi Nitawaki

Alexandru Stratulat

Patrick Engelkes

Jamie Davenport

Myron Davis

Reo Ishiyama

Robert Malko

Contributors

Thanks to these wonderful people (emoji key):


Brandon Bayer

💻 🖋 🤔 👀

Rudi Yardley

💻 🤔 👀 ⚠️

Dylan Brookes

💻 🤔 👀 ⚠️ 📖

Adam Markon

💻 🤔 👀 ⚠️ 🚧

Corey Brown

💻 👀 🚧

Lori Karikari

💻 👀 🚧 📖

Elias Johansson

💻 👀 🚧

Michael Edelman

🚇 💻

Todd Geist

💵 💻

Robert Rosenberg

💻 🚧 📖

Beata Obrok

💻

Tahir Awan

💻

Camilo Gonzalez

💻

Daniel Kempner

💻

Giel

💻

Jeremy Liberman

💻 🚧 ⚠️

Jim Cummins

💻

Kristina Matuška

🎨

Jason Blalock

💻

aej11a

💻

marcoseoane

🤔

Rishabh Poddar

🤔

Lorenzo Rapetti

💻

Justin Hall

💻 📖

Sajjad Hashemian

💻

Eduardo Lopes

💻

Matthew Leffler

📖

Matt

📖

Sonny

📖

Fran Zekan

💻 📖

Jan Baykara

📖

Mike Perry Y Attara

📖

Devan

📖

Jack Clancy

💻 🚧

Nicolas Torres

⚠️ 💻 👀

Simon Knott

💻 ⚠️ 🚧

Jaga Santagostino

💻 📖 🚧

João Portela

💻

Da-Jin Chu

💻

Shinobu Hayashi

💻

Karan Kiri

💻

Alan Long

📖

codingsh

💻

Rafael Nunes

👀 💻

Simon Debbarma

🎨 🚧 📖

0xflotus

💻 📖

tmns

💻 📖

Jru Harris

📖

Ivan Medina

💻 🚧

Dwight Watson

💻 📖

Horie Issei

💻

Nhat Khanh

💻

Abu Uzayr

💻

Nabiullah elham

💻

Lachlan Campbell

💻

Enzo Ferey

💻

Pierre Grimaud

💻

Andreas Adam

💻

Kevin Tovar

💻

Ante Primorac

💻 📖

Mykal Machon

💻

Jamie Davenport

💻 🚧

GaneshMani

💻

reymon359

💻

gvasquez11

💻

José Miguel Ochoa

💻

Oscar Sirvent

💻 📖

Daniel Molnar

📖 💻

Kevin Wu Won

📖

John Duong

💻

Noah Fleischmann

💻

Matsumoto Toshi

💻 📖

Simon Edelmann

💻

Shaun Church

📖 💻

Steven

📖

Sigurd Moland Wahl

💻

Brian Andrews

📖

Garrison Snelling

📖

Ty Lange-Smith

💻

Rubén Moya

💻 ⚠️

robertgrzonka

💻 🚇

Alex Orr

💻

Chris Tse

💻

Netto Farah

💻

Rohan Julka

🚇

Ivan Santos

💻

Soumyajit Pathak

💻

Sebastian Kurpiel

📖

Steffan

💻 📖 💵

Kristóf Poduszló

💻

Weilbyte

💻 📖

Ricardo Trejos

💻 📖

George Karagkiaouris

💻 📖

Brady Pascoe

💻

Jirka Svoboda

💻

Alan Alickovic

💻 📖

Yngve Høiseth

📖

Bruno Crosier

📖

Johan Schepmans

💻

Dillon Raphael

💻

Cody G

💻 ⚠️

madflow

📖

Satoshi Nitawaki

💻 🚧 💬 📖

sirmyron

📖 💻

engelkes-finstreet

📖 💻 🚧

Denis Radin

👀 💻 📖

Michael Li

💻

yuta0801

💻

Obadja Ris

📖

Jose Felix

💻

John Cantrell

💻

Kwuang Tang

💻

John Letey

💻

Juan Di Toro

💻

Taylor Johnson

💻 📖

Sriram Thiagarajan

📖

Sergio Xalambrí

📖

Patrick G

💻

अभिनाश (Avinash)

💻

Enrico Schaaf

💻

Kitze

🤔

Mohamed Shaban

💻

Joris

💻

Valentin Funk

📖

Luke Bennett

💻

Haseeb Majid

💻

Phillipp Schmedt

💻

Piotr Monwid-Olechnowicz

💻

Kotaro Chikuba

💻 ⚠️

Konrad Kalemba

💻

Alucard17

💻

Domantas Mauruča

⚠️ 💻

Stratulat Alexandru

💻 🚧

André Ericson

💻 📖

Carlos Fernández

📖

Kevin Østerkilde

📖 💻

aaronfulkerson

💻 💬

Alexandru Naiman

💻

David Ezekiel Lutta

💻

wanjuntham

💻

Victor Nahuel Chaves

💻

Peter Shih

💻

Seweryn Kalemba

💻

Nikhil Saraf

💻 📖

Zane

📖

Dulce Hernández

💻

Mark Hähnel

💻

Viktor Nemes

💻

Gabe O'Leary

📖

Lucas Machado

💻

maciek_grzybek

💻

Michael Weibel

💻

Hiroki Isogai

💻

matamatanot

📖

Eric Sakmar

📖

Simon Legg

📖

Robert Soriano

💻

Benedikt Schnatterbeck

💻

Talor Anderson

💻

Akira Baruah

💻

Christopher Wray

💻

Piotrek Tomczewski

💻

Raphaël Huchet

📖 ⚠️ 💻

Alex Johansson

💻

David Mazza

💻

Ray Andrew

💻 📖

Abdullah Mzaien

💻 📖

William Kwao

📖

Lukas Strassel

💻

Thibaut Patel

💻

Jon Stuebe

💻

Ugo Onali

📖

SaintMalik

📖

Khaled Garbaya

💻

tundera

💻

markylaing

💻 📖

Akifumi Sato

💻

Beep LIN

💻

Matt Wood

💻

Joaquin Bravo Contreras

💻

Arjun Dubey

💻

chanand

💻

phillipkregg

📖

Tim Reynolds

📖

Linbudu

📖

C Reimers

📖

Tsuyoshi Osawa

💻

Rembrandt Reyes

💻 📖 ⚠️

Toshiya Doi

📖

t.kuriyama

💻

Robert Malko

💻

Ranjan Purbey

💻

tarunama

💻

David Kramer

💻

Michael Esteban

📖

marina

📖 💻

Jonas Thiesen

📖

Yash Thakkar

💻

Kazuma Suzuki

🎨 💻

Yuji Matsumoto

📖

Gimel Dick

💻

Andreas Bollig

💻

AJ Markow

⚠️ 💻

TagawaHirotaka

💻 ⚠️

Amr A.Mohammed

💻

Lucas Willems

📖 💻

Alistair Smith

💻

Rodrigo Ehlers

💻

Michael Ford

💻

Brian Liu

💻

Aleksandra Sikora

💻

JuanM04

💻 📖

Arend de Boer

📖

Felipe Milani

📖

Joe Edelman

💻

Gary

📖

Oliver Lopez

??

Andreas Zaralis

📖

David Torbeck

📖

Gustavo Gard

📖

Immortalin

💻

Cristian Granda

💻

Denise Yu

💻

Andrea Della Corte

📖

Adit Sachde

📖

Hiren Chauhan

💻

Mark Jackson

📖

Lewis Blackburn

📖

Vytenis

💻

Matthieu

💻 ⚠️

Mitchell Johnson

💻

Roshan Manuel

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Issues
  • Custom useParams hook

    Custom useParams hook

    What do you want and why?

    As mentioned in the slack, current way of getting route params isn't really as nice as it could be

    const router = useRouter()
    const id = parseInt(router?.query.id as string)
    

    Better API (similar to prisma client)

    // returns ID as number
    const {id} = useParams({id: true}); // Or maybe have 'number'?
    // returns ID as string
    const {id} = useParams({id: 'string'});
    // Custom parser for hex strings
    const {id} = useParams({id: (raw: string) => parseInt(raw, 16)});
    
    // Multiple params
    const {projectId, slug} = useParams({projectId: true, slug: 'string'});
    
    // Maybe have a shorthand syntax with an array
    const {id} = useParams(['id']); // id is number by default
    

    Also if we have an object we can go overboard with TS definitions (keyof stuff) and have a lot nicer API for getting this stuff

    I'd like to build this, but before I'd like to discuss maybe there's some other ideas on how to improve this

    Insipiration

    In a CRA project of mine

    // useParamsInt.ts
    import { useParams } from 'react-router-dom';
    
    const useParamsInt = (key = 'id') => {
      const params = useParams();
      return params[key] ? parseInt(params[key]) : null;
    };
    
    export default useParamsInt;
    
    // component.tsx
    const id = useParamsInt();
    const chapter_id = useParamsInt('chapter_id');
    const page_id = useParamsInt('page_id');
    
    kind/feature-change scope/core kind/bad-experience status/done 
    opened by Zeko369 33
  • `blitz dev` get's stuck on _manifest.json

    `blitz dev` get's stuck on _manifest.json

    What is the problem?

    Unable to run blitz dev after upgrading to v0.12

    Steps to Reproduce

    1. Install [email protected]
    2. Run blitz dev

    Versions

    debug: local
    debug: pkgPath: /Users/--proj--/node_modules/@blitzjs/cli 
    
    macOS Catalina | darwin-x64 | Node: v12.13.0
    
    blitz: 0.8.0 (global)
    blitz: 0.12.0 (local)
    

    Other

    I've tried removing .next and .blitz

    ➜  yarn dev           
    yarn run v1.21.1
    $ blitz start
    You are using alpha software - if you have any problems, please open an issue here:
      https://github.com/blitz-js/blitz/issues/new/choose
    
    ✔ Prepped for launch
    ready - started server on http://localhost:3000
    warn  - You have enabled experimental feature(s).
    warn  - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use them at your own risk.
    
    Error: > Couldn't find a `pages` directory. Please create one under the project root
        at findPagesDir (/Users/--proj--/node_modules/next/dist/lib/find-pages-dir.js:3:170)
        at new DevServer (/Users/--proj--/node_modules/next/dist/server/next-dev-server.js:1:4325)
        at createServer (/Users/--proj--/node_modules/next/dist/server/next.js:2:300)
        at start (/Users/--proj--t/node_modules/next/dist/server/lib/start-server.js:1:323)
        at nextDev (/Users/--proj--/node_modules/next/dist/cli/next-dev.js:21:279)
        at /Users/--proj--/node_modules/next/dist/bin/next:28:341
    'next dev' failed with status code: 1
    
    kind/bug scope/server priority/high status/done 
    opened by andreasasprou 31
  • `blitz db seed` error: Cannot find module

    `blitz db seed` error: Cannot find module

    What is the problem?

    When running ~~blitz seed~~ blitz db seed the module db/seeds.ts cannot be found.

    Steps to Reproduce

    1. Create new blitz app ~~on latest canary~~.
    2. Run ~~blitz seed~~ blitz db seed
    3. See error:
    Error: Cannot find module '/Users/simon/Code/myapp/db/seeds'
    

    Versions

    ~~0.23.2-canary.3~~ 0.24.1 (Node 14)

    Edit: I've updated the issue to reflect the renamed command blitz seed -> blitz db seed, see more information in comment below.

    kind/bug priority/high status/done 
    opened by simonedelmann 30
  • [RFC] Blitz App Architecture

    [RFC] Blitz App Architecture

    The purpose of this RFC (Request For Comments) is to gather as much feedback as possible before building everything outlined in it.

    We welcome all feedback, whether good or bad! This is your chance to ensure Blitz meets the needs for your company or project.

    👉 View the Rendered RFC 👈

    Also, there are now two other open issues for defining more details on Blitz queries and mutations:

    1. Query & Mutation Usage: https://github.com/blitz-js/blitz/issues/89
    2. Query & Mutation Error Handling: https://github.com/blitz-js/blitz/issues/87

    Please also check those out and provide any feedback!

    kind/rfc 
    opened by flybayer 28
  • Refactor synchronizer

    Refactor synchronizer

    Pull Request Type

    • [ ] Feature
    • [ ] Bug fix
    • [x] Refactoring (no functional changes, no api changes)
    • [ ] Build related changes
    • [ ] Tests related changes
    • [ ] Other (please describe): Dependency updates

    Checklist

    • [x] Tests added for changes (or N/A)
    • [x] Any added terminal logging uses packages/server/src/log.ts (or N/A)
    • [x] Code Coverage stayed the same or increased

    What's the reason for the change? :question:

    Synchronizer was not structured in an extensible way that allows us to move forward quickly.

    What are the changes and their implications? :gear:

    • [x] Agnostic input file watcher / glob = no watcher in unit tests
    • [x] Define stream error rendering
    • [x] Related logic needs to live together
    • [x] Everything is a stream
    • [x] More efficiency potential
    • [x] Parallel processing
    • [x] Cleaner Architecture
    • [x] Prepare for dirty restart functionality
    • [x] Migrate existing functionality over to streams
      • [x] Incorporate zeit now build logic
      • [x] Incorporate duplicate page detection logic
      • [x] Add app/foo/api/bar -> pages/api/bar to paths rule
    • [x] Simplify tests
    • [x] Docs
    • [x] Move deps to root
    • [x] Support VERCEL_BUILDER
    • [x] "stuck" on the last file progress indicator
    • [x] ~~Cross package loader animation~~ (probably best done in the cli package)

    Does this introduce a breaking change? :warning:

    • [ ] Yes
    • [x] No

    Closes #107

    Synchronizer Refactor

    Rendered docs

    Design goals

    • [x] Rules: Related logic needs to live together
    • [x] Everything is a rule
    • [x] Efficiency
    • [x] Parallel processing via streams
    • [x] Cleaner Architecture to allow for future Dirty restart functionality
    • [x] Agnostic input file watcher / glob
    • [x] Define error decoration pattern

    Tasks

    Fuzzy / Concerns

    • How do we handle calls to process.exit()? Currently I handle exit in a try catch for upfront stuff that prevents execution but that is wrong as it doesn't take into account what happens after the promise has resolved and the watcher

    Things to look at still possibly later PR

    • Use in memory fs for tests
    opened by ryardley 27
  • Add autogenerated `Routes` manifest for use with `<Link>` components

    Add autogenerated `Routes` manifest for use with `` components

    Closes: #2023

    What are the changes and their implications?

    Give users a Route manifest as described in #2023.

    ToDo:

    • [x] Generate manifest
    • [x] Decide on where the manifest should be generated into
    • [x] Do TypeScript shenanigans to allow importing from blitz

    Checklist

    • [x] Changes covered by tests (tests added if needed)
    • [x] PR submitted to blitzjs.com for any user facing changes
    status/done 
    opened by Skn0tt 26
  • Failed to find request token in session when twitter login and using Nginx proxy

    Failed to find request token in session when twitter login and using Nginx proxy

    What is the problem?

    I use Blitz in production mode on Nginx proxied server. When I try to use Twitter auth I get an error "Failed to find request token in session". Most likely the cookie is not set for the session.

    Steps to Reproduce

    1. Enable Nginx proxy with SSL
    2. Run Blitz in production
    3. Follow auth tutorial and implement Twitter login
    4. Try to login with Twitter
    5. Expected result - it logs in
    6. Actual result - it does not log, only anonymous session cookies are set

    Versions

    Linux 5.4 | linux-x64 | Node: v12.18.3
    
    blitz: 0.18.0 (global)
    blitz: 0.19.0 (local)
    
      Package manager: yarn
      System:
        OS: Linux 5.4 Ubuntu 20.04 LTS (Focal Fossa)
        CPU: (8) x64 Intel Core Processor (Haswell, no TSX)
        Memory: 4.78 GB / 15.27 GB
        Shell: 5.0.16 - /bin/bash
      Binaries:
        Node: 12.18.3 - /usr/local/bin/node
        Yarn: 1.22.4 - /usr/local/bin/yarn
        npm: 6.14.6 - /usr/local/bin/npm
        Watchman: Not Found
      npmPackages:
        @prisma/cli: 2.0.0-beta.3 => 2.0.0-beta.3
        @prisma/client: 2.0.0-beta.3 => 2.0.0-beta.3
        blitz: 0.19.0 => 0.19.0
        react: 0.0.0-experimental-33c3af284 => 0.0.0-experimental-33c3af284
        react-dom: 0.0.0-experimental-33c3af284 => 0.0.0-experimental-33c3af284
        typescript: 3.9.6 => 3.9.6`
    

    Other

    Please include applicable logs and screenshots that show your problem.

    kind/bug status/done 
    opened by PixelsCommander 25
  • mutate works selectively unless I disable suspense

    mutate works selectively unless I disable suspense

    What is the problem?

    Mutate works selectively on arrays unless I disable suspense. Works fine on single objects.

    Steps to Reproduce

    1. Call mutate with suspense enabled (default).

    Versions

    debug: blitzPkgPath: /Volumes/Samsung Portable SSD T3 Media/amweb-blitz/node_modules/blitz/dist/index.js
    debug: cliPkgPath: /Volumes/Samsung Portable SSD T3 Media/amweb-blitz/node_modules/blitz/node_modules/@blitzjs/cli/lib/src/index.js 
    
    macOS Catalina | darwin-x64 | Node: v14.13.0
    
    blitz: 0.24.1 (global)
    blitz: 0.24.1 (local)
    
      Package manager: npm 
      System:
        OS: macOS 10.15.7
        CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz
        Memory: 226.90 MB / 16.00 GB
        Shell: 5.7.1 - /bin/zsh
      Binaries:
        Node: 14.13.0 - ~/.nvm/versions/node/v14.13.0/bin/node
        Yarn: Not Found
        npm: 6.14.8 - ~/.nvm/versions/node/v14.13.0/bin/npm
        Watchman: Not Found
      npmPackages:
        @prisma/cli: 2.8.1 => 2.8.1 
        @prisma/client: 2.8.1 => 2.8.1 
        blitz: 0.24.1 => 0.24.1 
        react: 0.0.0-experimental-7f28234f8 => 0.0.0-experimental-7f28234f8 
        react-dom: 0.0.0-experimental-7f28234f8 => 0.0.0-experimental-7f28234f8 
        typescript: 4.0.3 => 4.0.3
    

    Other

    Let's say I have an array of users with a company and I call console.log right after the line that contains useQuery. console.log should fire whenever the contents of the users array changes. It's curious to me that after calling mutate I'm seeing console.log fire but it still contains the contents of the old array. If I disable suspense I see console.log fire twice. The first time it contains the new user and the second time it's the old data plus the new user.

    This behavior seems selective but I can't figure out when it works and when it doesn't. In my companies page, mutate works as expected but other pages require suspense to be disabled before mutate functions as expected.

    This started after I upgraded to 0.24.1 and replaced my calls to mutations with useMutation.

    kind/bug scope/core priority/high status/done 
    opened by aaronfulkerson 24
  • `blitz new` stuck on 'Retrieving the freshest of dependencies'

    `blitz new` stuck on 'Retrieving the freshest of dependencies'

    What is the problem?

    running blitz new hangs on Retrieving the freshest of dependencies after creating file structure.

    Steps to Reproduce

    1. run npm install -g blitz
    2. run blitz new app-name
    3. select either React Final Form (recommended) or React Hook Form
    4. cli now hangs on Retrieving the freshest of dependencies indefinitely. a. after aborting: b. cd into the project directory (cd app-name) and run blitz start the error appears: Error: Cannot find module '@blitzjs/server'

    Versions

    output of blitz --version --verbose

    debug: blitzPkgPath: /Users/adam.sisk/.asdf/installs/nodejs/14.4.0/.npm/lib/node_modules/blitz/dist/index.js
    debug: cliPkgPath: /Users/adam.sisk/.asdf/installs/nodejs/14.4.0/.npm/lib/node_modules/blitz/node_modules/@blitzjs/cli/lib/src/index.js
    
    macOS Catalina | darwin-x64 | Node: v14.4.0
    
    blitz: 0.21.0 (global)
    
      Package manager: npm
      System:
        OS: macOS 10.15.5
        CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
        Memory: 700.02 MB / 16.00 GB
        Shell: 5.7.1 - /bin/zsh
      Binaries:
        Node: 14.4.0 - ~/.asdf/installs/nodejs/14.4.0/bin/node
        Yarn: 1.22.4 - /usr/local/bin/yarn
        npm: 6.14.5 - ~/.asdf/installs/nodejs/14.4.0/bin/npm
        Watchman: Not Found
      npmPackages:
        @prisma/cli: Not Found
        @prisma/client: Not Found
        blitz: Not Found
        react: Not Found
        react-dom: Not Found
        typescript: Not Found
    

    Other

    screenshot Screen Shot 2020-09-01 at 9 15 32 PM

    kind/bug status/done 
    opened by CalamityAdam 23
  • Triggering logging out on a page that uses queries that require authentication leads to an unhandled failed authentication exception

    Triggering logging out on a page that uses queries that require authentication leads to an unhandled failed authentication exception

    What is the problem?

    Triggering logging out on a page that uses queries that require authentication leads to an unhandled failed authentication exception. This is using Page.authenticate = {redirectTo: "/login"} on the page.

    Steps to Reproduce

    1. Use Page.authenticate = {redirectTo: "/login"} on a BlitzPage.
    2. Use useQuery with any query that checks for an authenticated user. I am using resolver.authorize() to force this in my query.
    3. Add a logout button. I use an onClick handler of async () => { await logoutMutation() } where the logout mutation is the one that comes with Blitz.
    4. Login, visit the page, refresh the page (as this error does not occur if you are redirected to that page using ?next= from login page which is also strange), click logout. You will be correctly redirected to the /login page once you click the logout button, but also see "Unhandled Runtime Error - AuthenticationError: You must be logged in to access this" error flash up as when you click the Logout button, the useQuery tries to refetch the data, and it does so faster than the page can navigate away from the page.

    Versions

    0.30.0-canary.13

    Linux 4.19 | linux-x64 | Node: v14.15.1
    
    blitz: 0.30.0-canary.5 (global)
    blitz: 0.30.0-canary.13 (local)
    
      Package manager: npm
      System:
        OS: Linux 4.19 Ubuntu 20.04.1 LTS (Focal Fossa)
        CPU: (8) x64 Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
        Memory: 10.50 GB / 12.37 GB
        Shell: 5.8 - /usr/bin/zsh
      Binaries:
        Node: 14.15.1 - ~/.nvm/versions/node/v14.15.1/bin/node
        Yarn: Not Found
        npm: 6.14.8 - ~/.nvm/versions/node/v14.15.1/bin/npm
        Watchman: Not Found
      npmPackages:
        @prisma/client: ~2.16 => 2.16.0
        blitz: 0.30.0-canary.13 => 0.30.0-canary.13
        prisma: ~2.16 => 2.16.0
        react: 0.0.0-experimental-3310209d0 => 0.0.0-experimental-3310209d0
        react-dom: 0.0.0-experimental-3310209d0 => 0.0.0-experimental-3310209d0
        typescript: 4.1.3 => 4.1.3
    

    Other

    As you can see in the XHR requests, after the logout mutation is called, the 2 queries still fire, when they should not. In some way we need to ensure the login mutation finishes, and the Page.authenticate code navigates to the specified page before the queries on the page have a chance to refetch.

    image

    kind/bug priority/high status/done 
    opened by AndriusBartulis 23
  • More internal refactoring in effort to move all blitz code into nextjs/ directory

    More internal refactoring in effort to move all blitz code into nextjs/ directory

    What are the changes and their implications?

    We are working towards making our repo structure exactly match upstream nextjs. This is a two step process:

    1. Move all code into nextjs/ directory
    2. Move all code in nextjs/ up to top level

    Once that is accomplished, we can merge upstream nextjs changes directly into this repo for a much better merge experience than the current intermediate repo we are using.

    status/in-progress 
    opened by flybayer 0
  • fix material ui Recipe bug and Migration version from v4 to v5

    fix material ui Recipe bug and Migration version from v4 to v5

    fix: https://github.com/blitz-js/blitz/issues/2832

    What are the changes and their implications?

    Fixed a bug in the recipe of material ui so that version 5 of material ui will be installed.

    Bug Checklist

    • [ ] Integration test added (see test docs if needed)

    Feature Checklist

    status/in-review 
    opened by mochi-sann 0
  • Added bulma recipe

    Added bulma recipe

    Closes: #2835

    What are the changes and their implications?

    Bug Checklist

    • [ ] Integration test added (see test docs if needed)

    Feature Checklist

    status/in-review 
    opened by vivek7405 1
  • Update new apps dependencies, format files, improve readmes

    Update new apps dependencies, format files, improve readmes

    What are the changes and their implications?

    • Updated new apps dependencies
      • Removed prettier-plugin-prisma from minimal app (@beerose)
      • ESLint was not upgraded to v8 because it is not compatible with Next.js:
        • https://github.com/vercel/next.js/issues/29829
        • https://github.com/vercel/next.js/pull/29865
    • Fixed formatting of some files
    • Updated .prettierignore to ignore .blitz.config.compiled.js
    • Updated README including more links to blitzjs.com
      • There might seem like there are a lot of changes in the file trees, but I just replaced everything for common spaces and added a few files
    status/in-review 
    opened by JuanM04 0
  • file storage abstraction layer and transform API

    file storage abstraction layer and transform API

    What do you want and why?

    A file storage abstraction layer and transform API. Similar to https://edgeguides.rubyonrails.org/active_storage_overview.html

    Possible implementation(s)

    My current setup in a blitz app:

    The storage driver is based on @slynova/flydrive. This allows for the same API for s3 (and by extension most competing object storage services), Google Cloud Storage, and local (mostly for development/testing)

    It's a "proxy based architecture" meaning request for an original image or transformed image comes to blitz and then blitz proxies the request from the service to the users browser. This greatly simplifies a couple of aspects of file handling:

    • blob storage services generally don't recommend publicly accessible URLs, this results in having to sign temporary urls to access the file (this was a pain point in the original Active record setup...).
    • proxying simplifies CDN caching of files

    The setup I currently have is built around API routes:

    │  *   │ app/api/files/create.ts                               │ /api/files/create                               │ API  │
    │  *   │ app/api/files/[key]/[filename].ts                     │ /api/files/[key]/[filename]                     │ API  │
    │  *   │ app/api/files/[key]/variant/[variation]/[filename].ts │ /api/files/[key]/variant/[variation]/[filename] │ API  │
    

    create.ts is based on busboy

    The model of a file is

    model File {
      id          Int      @id @default(autoincrement())
      key         String   @unique
      hash        String?  @unique
      name        String
      contentType String
      metadata    Json     @default("{}")
      byteSize    Int
      serviceName String
      createdAt   DateTime @default(now())
      updatedAt   DateTime @updatedAt
    }
    

    In the UI I have a hook with the following API for uploading a file:

    // it's based on react dropzone, localURL is for when a user wants to display a preview of the image while it's uploading.
    const { localURL, getRootProps, fileInput, getInputProps, filename, file, progress, done } =
      useFileUpload()
    

    for consuming the file:

    // The second argument is an optional transform.
    <img src={urlFor(image, "rotate")} />
    

    transforms would be defined something like this:

    export const transformFunctions = {
      rotate: (file: NodeJS.ReadableStream) => file.pipe(sharp().rotate(90)),
    }
    

    Transforms are lazy. The first time a transform is requested the original is loaded from the service, the transform is applied and the result is stored in the service so we don't have to re-apply the transform for subsequent requests.

    Additional context

    Active Storage is one of my favorite features from rails and having something similar in blitz would be great. What would be the best way to go about integrating a file storage/access/transform API into blitz? I'd be happy to work on a PR if the core team is looking to add this kind of functionality to blitz.

    status/triage 
    opened by fleck 0
  • `createMuiTheme` deprecation update

    `createMuiTheme` deprecation update

    The createMuiTheme has been deprecated and a simple rename of the import is needed to fix that. createTheme is the new name used by Mui.

    What are the changes and their implications?

    No implications, it's a simple rename of the import and a function. There is not much to add. Here is some info related to the change:

    • https://github.com/mui-org/material-ui/pull/25992
    • https://github.com/mui-org/material-ui/pull/26004
    status/in-review 
    opened by aleksanderbrymora 0
  • Not working with pnpm

    Not working with pnpm

    What is the problem?

    I created a new blitz app with blitz new pnpm (blitz installed globally). Vscode jest extension fails to run tests and I am getting errors after running blitz dev using global module, but if I run the app using locally installed module (pnpm dev) it still logs the errors, now in different format, and runs.

    Paste all your error logs here:

    ~\desktop\pnpm main ≢  1.813s
    ❯ blitz dev
    ready - started server on 0.0.0.0:3000, url: http://localhost:3000
    info  - Loaded env from C:\Users\Nizomidin\desktop\pnpm\.env.local
    info  - Loaded env from C:\Users\Nizomidin\desktop\pnpm\.env
    Error: Cannot find module '.blitz'
    Require stack:
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\core\dist\blitzjs-core.cjs.dev.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\core\dist\blitzjs-core.cjs.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\[email protected]_36c5d53d03be96726e49ef745d3805fc\node_modules\blitz\dist\blitz.cjs.dev.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\[email protected]_36c5d53d03be96726e49ef745d3805fc\node_modules\blitz\dist\blitz.cjs.js
    - C:\Users\Nizomidin\desktop\pnpm\.blitz.config.compiled.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\server\config.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\server\next.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\server\lib\start-server.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\cli\next-dev.js
    - C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\bin\next
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
        at Function.mod._resolveFilename (C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\next\dist\build\webpack\require-hook.js:96:28)
        at Function.Module._load (internal/modules/cjs/loader.js:746:27)
        at Module.require (internal/modules/cjs/loader.js:974:19)
        at require (internal/modules/cjs/helpers.js:93:18)
        at Object.<anonymous> (C:\Users\Nizomidin\desktop\pnpm\node_modules\.pnpm\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\node_modules\@blitzjs\core\dist\blitzjs-core.cjs.dev.js:18:14)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
        at Module.load (internal/modules/cjs/loader.js:950:32)
        at Function.Module._load (internal/modules/cjs/loader.js:790:12) {
      code: 'MODULE_NOT_FOUND',
      requireStack: [
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\core\\dist\\blitzjs-core.cjs.dev.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\core\\dist\\blitzjs-core.cjs.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\[email protected]_36c5d53d03be96726e49ef745d3805fc\\node_modules\\blitz\\dist\\blitz.cjs.dev.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\[email protected]_36c5d53d03be96726e49ef745d3805fc\\node_modules\\blitz\\dist\\blitz.cjs.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\.blitz.config.compiled.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\next\\dist\\server\\config.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\next\\dist\\server\\next.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\next\\dist\\server\\lib\\start-server.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\next\\dist\\cli\\next-dev.js',
        'C:\\Users\\Nizomidin\\desktop\\pnpm\\node_modules\\.pnpm\\@[email protected]_4833af42bc1bc66e9c1c1c773f6c88ca\\node_modules\\@blitzjs\\next\\dist\\bin\\next'
      ]
    }
    

    Paste all relevant code snippets here:

    Nothing changed.

    What are detailed steps to reproduce this?

    1. pnpm add -g blitz
    2. blitz new pnpm (pnpm is the project name)
    3. select pnpm as package manager
    4. select react final form
    5. cd pnpm
    6. blitz dev or pnpm dev

    Run blitz -v and paste the output here:

    Windows 10 | win32-x64 | Node: v14.18.1
    
    blitz: 0.41.1 (global)
    blitz: 0.41.1 (local)
    
      Package manager: npm
      System:
        OS: Windows 10 10.0.19043
        CPU: (4) x64 AMD Ryzen 3 2200G with Radeon Vega Graphics
        Memory: 864.86 MB / 5.93 GB
      Binaries:
        Node: 14.18.1 - C:\TEMP\fnm_multishells\11980_1634302005923\node.EXE
        Yarn: 1.22.15 - C:\TEMP\fnm_multishells\11980_1634302005923\yarn.CMD
        npm: 6.14.15 - C:\TEMP\fnm_multishells\11980_1634302005923\npm.CMD
        Watchman: Not Found
      npmPackages:
        @prisma/client: 3.2.1 => 3.2.1
        blitz: 0.41.1 => 0.41.1
        prisma: 3.2.1 => 3.2.1
        react: alpha => 18.0.0-alpha-c3a19e5af-20211014
        react-dom: alpha => 18.0.0-alpha-c3a19e5af-20211014
        typescript: ~4.3 => 4.3.5
    

    Please include below any other applicable logs and screenshots that show your problem:

    21_10_15_52_obkb14VRiL_WindowsTerminal with blitz dev

    image with pnpm dev

    kind/bug status/triage 
    opened by LemonJuicer96 2
  • Environment Variable Loading

    Environment Variable Loading

    Discussed in https://github.com/blitz-js/blitz/discussions/2444

    Originally posted by flybayer June 3, 2021

    Problem

    Blitz/Next use basically dotenv-flow to load env var files like .env, .env.test, .env.development.local, etc.

    That behavior relies on setting NODE_ENV to the appropriate value before invoking a CLI command.

    Problems:

    1. Nextjs internals don't allow changing NODE_ENV. The build command must use NODE_ENV=production and dev must use NODE_ENV=development.
    2. There's a new Nextjs bug that breaks previous usage of NODE_ENV=test blitz build
    3. Now it's impossible to use NODE_ENV inside your app code to conditionally do things based on different environments.

    Proposed Solution

    Use APP_ENV to determine app environment instead of NODE_ENV. NODE_ENV will only be used for blitz dev vs blitz build.

    The value of APP_ENV will determine which .env.[ENV].* files will be loaded.

    1. Defaults:
      1. APP_ENV=development for blitz dev
      2. APP_ENV=production for blitz build and blitz start
      3. APP_ENV=test for Jest tests
    2. Ways to manually specify APP_ENV:
      1. Set it before invoking the CLI like APP_ENV=test blitz start
      2. Set it with a new -e flag like blitz start -e test

    With this solution, you can set APP_ENV to any string. Example: APP_ENV=staging which would load .env.staging


    Any and all feedback is welcome!

    kind/feature-change status/ready-to-work-on 
    opened by beerose 0
  • Infinite query requests when Blitz app loaded inside an iframe

    Infinite query requests when Blitz app loaded inside an iframe

    What is the problem?

    Running a blitz app inside an iFrame leads to infinitely loading queries.

    The queries keep repeating themselves and error logged from onSettled method shows a CancelledError.

    We have our application running in various environments eg. as a browser app, as an iframed app inside another application. Once we upgraded the app from 0.38.2 to 0.38.3, we notice the app never finishes when loaded in an iframe. The issue still exists in version 0.41.0.

    Reverting the changes done in 0.38.3 for https://github.com/blitz-js/blitz/issues/2207 in rpc-client.ts seemed to fix the issue but the files have since been changed and moved so I haven't even been able to find out what still causes the issue.

    I have tried loading the app in codesandbox.io to test if the parent application could have caused the issue, but the issue still exists. The issue can also be seen by creating a new app using the quick start steps, running it in dev mode and opening it in codesandbox.io

    Please let me know if I can provide any more details that might be helpful.

    Paste all your error logs here:

    No error logs in particular apart from the CancelledError
    

    Paste all relevant code snippets here:

    What are detailed steps to reproduce this?

    Create a new blitz app from scratch following the Quick start steps

    1. blitz new myAppName
    2. cd myAppName
    3. blitz dev View your brand new app in an iFramed page like codesandbox.io using - http://localhost:3000

    Run blitz -v and paste the output here:

    % blitz -v
    macOS Big Sur | darwin-x64 | Node: v14.18.0
    
    blitz: 0.41.0 (global)
    blitz: 0.41.0 (local)
    
      Package manager: yarn 
      System:
        OS: macOS 11.6
        CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
        Memory: 1.14 GB / 16.00 GB
        Shell: 5.8 - /bin/zsh
      Binaries:
        Node: 14.18.0 - ~/.nvm/versions/node/v14.18.0/bin/node
        Yarn: 1.22.5 - ~/.volta/bin/yarn
        npm: 6.14.15 - ~/.nvm/versions/node/v14.18.0/bin/npm
        Watchman: Not Found
      npmPackages:
        @prisma/client: Not Found
        blitz: 0.41.0 => 0.41.0 
        prisma: Not Found
        react: 18.0.0-alpha-6ecad79cc-20211006 => 18.0.0-alpha-6ecad79cc-20211006 
        react-dom: 18.0.0-alpha-6ecad79cc-20211006 => 18.0.0-alpha-6ecad79cc-20211006 
        typescript: 4.4.3 => 4.4.3 
    
    

    Please include below any other applicable logs and screenshots that show your problem:

    Screen Shot 2021-10-13 at 4 23 53 pm Screen Shot 2021-10-13 at 4 30 40 pm kind/bug status/ready-to-work-on 
    opened by divpreet 4
  • Feature Request: Bulma Recipe

    Feature Request: Bulma Recipe

    What do you want and why?

    I want to add the Bulma CSS framework to the project using Blitz recipe because I am not a CSS expert and Bulma provides a rich set of components which are customisable. Again, Bulma is a popular CSS framework and it is also being used in the Hactoberfest app.

    Possible implementation(s)

    Need to integrate Bulma in the bare Blitz app and see what files are added/changed and come up with a Blitz recipe for making the appropriate changes to the project.

    Additional context

    Here's the link to the Bulma website: https://bulma.io

    status/ready-to-work-on kind/recipe 
    opened by vivek7405 6
Releases(v0.41.1)
  • v0.41.1(Oct 13, 2021)

    🐞 Patches

    • Make blitz codegen generate prisma client if prisma is installed: #2830
    • Fix blitz new next steps message: #2818
    • Show an error if a reserved word is used for blitz generate's model name: #2813
    • Show an error if invalid model name is passed to blitz generate: #2802

    Recipes

    • Prevent duplicated ComponentPropsWithoutRef import when installing chakra-ui: #2817

    Internal Meta Changes

    • updated @Vandivier contributions: e45822407ff870917d15f7aacba1ea25a086b36e
    • added @namirsab as contributor: 9e9c63d8966853b2f417e3d3975bf6fa802d87f1
    • added @scttcper as contributor: c4f6f78dde95beaab01cf898a40cebe358f44f0d
    • Add missing information to stitches recipe README: #2812
    • updated @beerose contributions: baeefff47a6aaecff32cbf68ddf92d36d22b0680
    • updated @namirsab contributions: 350a98da5fae5788b2a07f0210c903dec2ad3419
    • added @Abduttayyeb as contributor: 9e405aa8b8e841856480a29771e119b633c4cc82
    • Add tsdoc comments for withRouter and useRouter functions: #2784
    • added @maybebored as contributor: f3f85b683128fe5e80bd4c8231471b4984803f2b
    • added @MuckHub as contributor: fa7ac116f7d89c005ef5cd02ad77ae2114e7484f

    Credits

    Huge thanks to @piotrski, @namirsab, @martinsaxa, @mzaien, and @maybebored for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.41.0(Oct 6, 2021)

    🚀 New Features

    • Add support for uuid field type in blitz generate: #2808

    🐞 Patches

    • Display an error if loading a module fails in blitz console: #2792
    • Fix blitz install not working: #2799
    • Add a spinner during the blitz new version check: #2791

    Internal Meta Changes

    • added @g3offrey as contributor: 99b5876c36a2f172a7cff65e86b93883b3f84962
    • Add README for styled-components recipe: #2776
    • added @keevan as contributor: aa560d229eaf05945e1908eeb29bc4e8974f29ff
    • Add README for tailwind recipe: #2777
    • added @kimngan-bui as contributor: ef362299c6fcd5312a03a2fbf2887deb3fa8424a
    • Add README for secureheaders recipe: #2780
    • Add README for render recipe: #2779
    • Add README for reflexjs recipe: #2778
    • Add README for theme-ui recipe: #2803
    • updated @piotrski contributions: 17853ee542206b38498378bf38c2f5ee615a8355
    • updated @g3offrey contributions: 39e089bac2fe84014892bab0a7c3412d7dcca535
    • added @9j as contributor: 25cdbbbf53e609c3ba7e0965710908b5edae75ee
    • added @Vandivier as contributor: 6056ed85d9187e30605e2d7bec0da319d087ee85
    • updated @g3offrey contributions: ea566b2c3aa2b7f5ed053453ac9db26524a18bbb

    Credits

    Huge thanks to @Vandivier, @g3offrey, @9j, @keevan, @kimngan-bui, and @piotrski for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0(Oct 2, 2021)

    🚀 Big Update

    • 🎉 Remove custom blitz compiler - all custom features now in core framework!: #2662
      • The next-env.d.ts feature now works correctly but as blitz-env.d.ts. This file will be automatically written to disk and updated based on your specific feature usage. You should check blitz-env.d.ts into your repo
      • The intermediate .blitz/build folder is no longer used
      • Fixes all issues caused by .blitz/build step
      • Now works with pnpm
      • Debugger breakpoints should now work
      • Issues with .gitignore files is resolved
      • Overall dev/build perf is improved

    💥 Breaking Changes

    • Auto generated RPC endpoints now use a flat path with shared namespace instead of using the full file path. #2516
      • This is only a breaking change if you are manually invoking the autogenerated endpoints, like from a mobile app.
      • This change is according to this RFC.
      • See the docs
      -/api/auth/mutations/login
      +/api/rpc/login
      -/api/modules/users/queries/getUsers
      +/api/rpc/getUsers
      
    • getBlitzRuntimeData() function removed. It was only used for the blitz install secureheaders recipe. If you previously installed that recipe, update the secureheaders.ts file with the changes in this commit: https://github.com/blitz-js/blitz/commit/8d98843573fbb98773e2845579a0de12d65ca9b7
    • validateZodSchema() is now async by default. You can specify sync/async with a second argument: #2616
      • Read the docs
      • This is only a breaking change if you were using validateZodSchema as a standalone utility. If you are only using it with a form library, then there is no breaking change.

    🚀 New Features

    • Ability to version queries & mutations. This is mainly useful when you have mobile apps. #2516
      FILE:    app/users/mutations/createUser.ts
      API URL: /api/rpc/createUser
      
      FILE:    app/users/mutations/v2/createUser.ts
      API URL: /api/rpc/v2/createUser
      
    • Upgrade next.js to 11.1.0: #2656
    • Add package manager prompt to blitz new: #2715

    🐞 Patches

    • Fix RedirectError incorrectly failing Cypress tests: #2655
    • Fix serialization of RedirectError: #2659
    • Fix No matching version found for eslint-config-next: 18b3f32abbdd39508cae09e2684bf6778a4e93cb
    • Added BLITZ_TELEMETRY_DISABLED env variable: #2664
    • Fix useQuery hooks to not cache data during SSR: #2666
    • Fix &lt;Link&gt; not working correctly with i18n and basepath: #2668
    • Fix usage with pnpm: #2673
    • Upgrade internal Typescript version and potentially improve TS perf: #2669
    • Fix route manifest for mdx pages: #2678
    • Update react-query to 3.21.1 (and fix an infinite loop bug): #2684
    • 🚨 [security] Update tar: 6.1.0 → 6.1.11: #2687
    • Fix missing BLITZ_APP_DIR error when running a custom server: #2699
    • Fix first build of custom server when customServer.hotReload: false: #2698
    • Fix internal middleware to use forwarded header to set protocol: #2705
    • Make jest-preset work in plain js projects: #2740
    • PassportAuth — improve error message if req.query.auth is undefined: #2766
    • Jest-preset: handle static assets for next/image: #2763
    • Fix CSRFTokenMismatchError on logout: #2761
    • Fix CSRFTokenMissmatch error for anonymous sessions after significant time of inactivity: #2762
    • Fix Yarn Berry gitignore for new apps: #2775
    • Fix blitz install to work with pnpm: #2702

    ⚡️ Changes to the New App Template

    • Few improvements to LabeledTextField: #2677
    • Use jest.config.ts for Typescript apps: #2663
    • Remove typescript bits from package.json generated for js projects: #1402
    • Remove tsc step from pre-push and ignore types.ts file in js apps: #2734
    • Update prisma 2.x to prisma 3.x: #2731

    👩‍🍳 Recipes

    • fix secureheaders recipe: 8d98843573fbb98773e2845579a0de12d65ca9b7
    • removed unused htmlescape import in secureheaders recipe: #2675
    • add recipe for ghost cms: #2693
    • Add stitches recipe: #2773

    Internal Meta Changes

    • added @hashimwarren as contributor: a8f5db494db46bced9ef748f6cbfbae9a6839202
    • added @damilolarandolph as contributor: 2b2c9f10407a5459ad812f79b5ee9d254f5a54d3
    • added @mwcampbell as contributor: 5cf84a699b5c2745cd84880a8796e9763033aac5
    • Add Boostry as bronze sponsor: 83bcd441b01e7209e6a469c364bcd71a81977f67
    • added @ratson as contributor: 0f027bd2c8511f2de1cab1eec0dbd3568269b32f
    • added @maciejmyslinski as contributor: 5fe42c12049bb33a6b131f39b1f59fb19a176e30
    • added @andreasasprou as contributor: 927db971b914eb17cf1b6d55cf2166b3e8e90261
    • added @kotx as contributor: 994cba856be7f7f3c1add7580b89b12d523f8635
    • updated @kotx contributions: 89b0f96536628a38c72042701303fcd35a1681da
    • added @isaka1022 as contributor: 29b5b311cb77a908307b83d00c0bcf17dc442ec0
    • Add Aleksandra to core team as Lead Maintainer: e704aca0ed2ccdf1a92acba371e1192ca63af5ff
    • Update "Read the Documentation" link in Readme: #2733
    • added @fuzzthink as contributor: 554a91a2eb8c5e464c120be43c382a6743fdbb98
    • added @bcye as contributor: a4975d10cfdd330b6964c105040dfe413cb397ad
    • Add @beerose as codeowner: #2735
    • updated @s-r-x contributions: 9f835f42f7d5c47f372543f7f17ac17bf910c399
    • added @emilygracekz as contributor: c95e0cc9c3a5666f175343cd6447840947d2fce7
    • added @npverni as contributor: f79dad995a08b3ecc12fa1247da228ccf39e4722
    • Retire @nitaking from L1 Maintainers: #2756
    • added @davyengone as contributor: 41df687a96e7d7b9dce7720df5dd06cce8d0d376
    • added @Fedeorlandau as contributor: be4ac2ceb628e31632cf30ac9a79dd846490afe2
    • added @johnmurphy01 as contributor: 3fb73272fa4bcf8ce4ea3815748aa600950603ac
    • added @martinsaxa as contributor: db611a18888792d1c9a5a692e75de1e04e99f515
    • added @ajwgeek as contributor: f5829db520be4a38c3038b0dd5538dcfb9f336ed
    • updated @johnmurphy01 contributions: c28ecb6187e37152115e1a41dd0c42d41cf834ad
    • Update fauna logo: b6cc8b19044336799c1fb2813eee1432d6f3229d
    • Add sakura-ui recipe README: #2710
    • Add README files to recipes: #2774

    Credits

    Huge thanks to @Roesh, @s-r-x, @akbo, @JuanM04, @andreasasprou, @kotx, @beerose, @martinsaxa, @meehawk, @ratson, @bcye, @emilygracekz, @prisis, @markhughes, @mzaien, @fuzzthink, @isaka1022, and @johnmurphy01 for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.10(Oct 2, 2021)

    🐞 Patches

    • Fix CSRFTokenMismatchError on logout: #2761
    • Fix CSRFTokenMissmatch error for anonymous sessions after significant time of inactivity: #2762
    • Fix suspense/hydration bug (on canary): #2785
    • Fix ssr with auth pages failing on Vercel on canary release: #2787
    • Make jest-preset work in plain js projects: #2740
    • PassportAuth — improve error message if req.query.auth is undefined: #2766
    • Jest-preset: handle static assets for next/image: #2763

    ⚡️ Changes to the New App Template

    • Update prisma 2.x to prisma 3.x: #2731
    • Fix Yarn Berry gitignore for new apps: #2775

    👩‍🍳 Recipes

    • add recipe for ghost cms: #2693
    • Add stitches recipe: #2773

    Internal Meta Changes

    • added @emilygracekz as contributor: c95e0cc9c3a5666f175343cd6447840947d2fce7
    • added @npverni as contributor: f79dad995a08b3ecc12fa1247da228ccf39e4722
    • Retire @nitaking from L1 Maintainers: #2756
    • added @davyengone as contributor: 41df687a96e7d7b9dce7720df5dd06cce8d0d376
    • added @Fedeorlandau as contributor: be4ac2ceb628e31632cf30ac9a79dd846490afe2
    • added @johnmurphy01 as contributor: 3fb73272fa4bcf8ce4ea3815748aa600950603ac
    • added @martinsaxa as contributor: db611a18888792d1c9a5a692e75de1e04e99f515
    • added @ajwgeek as contributor: f5829db520be4a38c3038b0dd5538dcfb9f336ed
    • updated @johnmurphy01 contributions: c28ecb6187e37152115e1a41dd0c42d41cf834ad
    • Add README files to recipes: #2774

    Credits

    Huge thanks to @beerose, @martinsaxa, @JuanM04, @emilygracekz, @markhughes, @mzaien, and @johnmurphy01 for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.9(Sep 23, 2021)

    🚀 New Features

    • Add package manager prompt to blitz new: #2715

    🐞 Patches

    • Fix broken vercel deployments with canary release: #2730
    • Fix blitz generate Internal Blitz Error: process.env.BLITZ_APP_DIR is not set (in canary release): #2736

    ⚡️ Changes to the New App Template

    • Remove typescript bits from package.json generated for js projects: #1402
    • Remove tsc step from pre-push and ignore types.ts file in js apps: #2734

    👩‍🍳 Recipes

    • Add sakura-ui recipe README: #2710

    Internal Meta Changes

    • updated @kotx contributions: 89b0f96536628a38c72042701303fcd35a1681da
    • added @isaka1022 as contributor: 29b5b311cb77a908307b83d00c0bcf17dc442ec0
    • Add Aleksandra to core team as Lead Maintainer: e704aca0ed2ccdf1a92acba371e1192ca63af5ff
    • Update "Read the Documentation" link in Readme: #2733
    • added @fuzzthink as contributor: 554a91a2eb8c5e464c120be43c382a6743fdbb98
    • added @bcye as contributor: a4975d10cfdd330b6964c105040dfe413cb397ad
    • Add @beerose as codeowner: #2735
    • updated @s-r-x contributions: 9f835f42f7d5c47f372543f7f17ac17bf910c399

    Credits

    Huge thanks to @s-r-x, @bcye, @beerose, @isaka1022, and @fuzzthink for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.8(Sep 10, 2021)

    🐞 Patches

    • Update react-query to 3.21.1 (and fix an infinite loop bug): #2684
    • Update tar: 6.1.0 → 6.1.11: #2687
    • Fix missing BLITZ_APP_DIR error when running a custom server: #2699
    • Fix first build of custom server when customServer.hotReload: false: #2698
    • Fix internal middleware to use forwarded header to set protocol: #2705
    • Fix(cli): blitz install to work with pnpm: #2702

    ⚡️ Changes to the New App Template

    • Use jest.config.ts for Typescript apps: #2663

    Internal Meta Changes

    • added @ratson as contributor: 0f027bd2c8511f2de1cab1eec0dbd3568269b32f
    • added @maciejmyslinski as contributor: 5fe42c12049bb33a6b131f39b1f59fb19a176e30
    • added @andreasasprou as contributor: 927db971b914eb17cf1b6d55cf2166b3e8e90261
    • added @kotx as contributor: 994cba856be7f7f3c1add7580b89b12d523f8635

    Credits

    Huge thanks to @andreasasprou, @kotx, @meehawk, and @ratson for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.7(Aug 27, 2021)

  • v0.40.0-canary.6(Aug 27, 2021)

    💥 Potential Breaking Changes

    • validateZodSchema() is now async by default. You can specify sync/async with a second argument: #2616
      • Read the docs
      • This is only a breaking change if you were using validateZodSchema as a standalone utility. If you are only using it with a form library, then there is no breaking change.

    🐞 Patches

    • Fix missing BlitzScript.getInlineScriptSource in canary release: #2676
    • Fix usage with pnpm (requires adding a few lines to .npmrc) #2673
    • Upgrade internal Typescript version and potentially improve TS perf: #2669

    ⚡️ Changes to the New App Template

    • Few improvements to LabeledTextField: #2677

    👩‍🍳 Recipes

    • fix secureheaders recipe: 8d98843573fbb98773e2845579a0de12d65ca9b7
    • removed unused htmlescape import in secureheaders recipe: #2675

    Internal Meta Changes

    • Add Boostry as bronze sponsor: 83bcd441b01e7209e6a469c364bcd71a81977f67

    Credits

    Huge thanks to @Roesh and @prisis for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.5(Aug 24, 2021)

    💥 Breaking Changes

    • getBlitzRuntimeData() function removed. It was only used for the blitz install secureheaders recipe. If you previously installed that recipe, update the secureheaders.ts file with the changes in this commit: https://github.com/blitz-js/blitz/commit/8d98843573fbb98773e2845579a0de12d65ca9b7

    🚀 Big Update

    • 🎉 Remove custom blitz compiler - all custom features now in core framework!: #2662
      • The next-env.d.ts feature now works correctly but as blitz-env.d.ts. This file will be automatically written to disk and updated based on your specific feature usage. You should check blitz-env.d.ts into your repo
      • The intermediate .blitz/build folder is no longer used
      • Fixes all issues caused by .blitz/build step
      • Should now work with pnpm
      • Debugger breakpoints should now work
      • Issues with .gitignore files is resolved
      • Overall dev/build perf is somewhat improved

    🐞 Patches

    • Added BLITZ_TELEMETRY_DISABLED env variable: #2664
    • Fix useQuery hooks to not cache data during SSR: #2666
    • Fix <Link> not working correctly with i18n and basepath: #2668

    Internal Meta Changes

    • added @mwcampbell as contributor: 5cf84a699b5c2745cd84880a8796e9763033aac5

    Credits

    Huge thanks to @JuanM04 and @s-r-x for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.4(Aug 20, 2021)

    🐞 Patches

    • Fix serialization of RedirectError: #2659
    • Fix No matching version found for eslint-config-next: 18b3f32abbdd39508cae09e2684bf6778a4e93cb

    Internal Meta Changes

    • added @hashimwarren as contributor: a8f5db494db46bced9ef748f6cbfbae9a6839202
    • added @damilolarandolph as contributor: 2b2c9f10407a5459ad812f79b5ee9d254f5a54d3

    Credits

    Huge thanks to @akbo for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.3(Aug 19, 2021)

    🚀 New Features

    • Upgrade next.js to 11.1.0: #2656

    🐞 Patches

    • Fix RedirectError incorrectly failing Cypress tests: #2655

    Credits

    Huge thanks to @akbo for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0-canary.1(Aug 17, 2021)

  • v0.40.0-canary.0(Aug 16, 2021)

    💥 Breaking Changes

    • Auto generated RPC endpoints now use a flat path with shared namespace instead of using the full file path. #2516
      • This is only a breaking change if you are manually invoking the autogenerated endpoints, like from a mobile app.
      • This change is according to this RFC.
      • See the docs
      -/api/auth/mutations/login
      +/api/rpc/login
      -/api/modules/users/queries/getUsers
      +/api/rpc/getUsers
      

    🚀 New Features

    • Ability to version queries & mutations. This is mainly useful when you have mobile apps. #2516
      FILE:    app/users/mutations/createUser.ts
      API URL: /api/rpc/createUser
      
      FILE:    app/users/mutations/v2/createUser.ts
      API URL: /api/rpc/v2/createUser
      
    Source code(tar.gz)
    Source code(zip)
  • v0.39.0(Aug 13, 2021)

    💥 Breaking Changes

    • Add ability to access req and res objects in the Passport adapter: #2576 Breaking change only if using the callback version:
      -export default passportAuth((ctx) => ({
      +export default passportAuth(({ctx, req, res}) => ({
      

    🚀 New Features

    • Add support for BLITZ_PUBLIC_ environment variables (NEXT_PUBLIC_ will continue to work): #2611
    • Add support for Page.redirectAuthenticatedTo to be a function with access to session: #2634

    🐞 Patches

    • Fix duplicate image types: #2597
      • Requires adding /// <reference types="next/image-types/global" /> to global.d.ts
    • Fix bug when no dependencies are defined in app package.json: #2607
    • Fix a bug when just 1 level deep inside yarn workspace: #2599
    • Fix case where blitz new prints an error but continues creating app: #2637
    • Fix occasional ENOENT error during blitz recipe install: #2638
    • Throw error if two pages have the same name (important for Routes to be accurate): #2606
    • Fix dehydrateState does not apply server side props: #2617
    • Fix indentation of json on blitz generate edit pages: #2652

    ⚡️ Changes to the New App Template

    • Fix image warning in index page: #2593
    • Update favicon for new apps to be orange version of the blitz logo: #2602

    Internal Meta Changes

    • added @rabbihossain as contributor: 334a771c867334f76123d9c4c0b9b1f5d39c9eb2
    • Add GraphCMS as sponsor: 6adf7c02d4b7c9d3fd713e3f4f2bfd300e78830d
    • added @bravo-kernel as contributor: c5ea23513d1c8c20da18b00b4c52c4e0f30d6d24
    • added @sam3d as contributor: 8c195a20f6d2e2e164fcced216e714a539f2c545
    • added @doncicuto as contributor: d1b7e2b151aa9c08dd1e1348fe3e92f87520ba1e
    • updated @doncicuto contributions: ae608412b133b71ac4b2f7137a71e9b57a247af9
    • added @zenhob as contributor: 355caccb8453d21a0b30754302f1283eecf00658
    • updated @beerose contributions: 4376a25a818fa8c03ffe687f419fbed32fd6bcb3
    • updated @Talor-A contributions: 9d9e2e698d0a581d68efb6ea3aea5c491d142baf
    • added @m5r as contributor: 4527cfc0e43972e33ae8d3679aef2f561ee97bcf
    • added @kenkuan as contributor: d898b1f7940067a1f678d6ed1b460a66ccaab19c
    • added @meehawk as contributor: de8dd85ea16330fd8c7e6fa822a767e7e6e668cc
    • added @ravindranrahul as contributor: 4c33580a9e7bd2282ad7be1e7d4828f425f95cea
    • updated @prisis contributions: 4b9b6743c8ee9a8cf5e5a837ca79486671be60d6
    • added @s-r-x as contributor: 0e62c1a5cc2f307630c38089a06e1478783810be
    • updated @s-r-x contributions: a6c83905ccb2760b29584b605d682f0de6b78033

    Credits

    Huge thanks to @doncicuto, @Roesh, @s-r-x, @sam3d, @zenhob, @kenkuan, @meehawk, @ravindranrahul, @clgeoio, and @bravo-kernel for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.39.0-canary.0(Jul 31, 2021)

    💥 Breaking Changes

    • Add ability to access req and res objects in the Passport adapter: #2576 Breaking change only if using the callback version:
      -export default passportAuth((ctx) => ({
      +export default passportAuth(({ctx, req, res}) => ({
      

    🚀 New Features

    • Add support for BLITZ_PUBLIC_ environment variables (NEXT_PUBLIC_ will continue to work): #2611

    🐞 Patches

    • Fix duplicate image types (requires adding line to global.d.ts): #2597
    • Fix bug when no dependencies are defined in app package.json: #2607

    ⚡️ Changes to the New App Template

    • Fix image warning in index page: #2593
    • Update favicon for new apps to be orange version of the blitz logo: #2602

    Internal Meta Changes

    • added @rabbihossain as contributor: 334a771c867334f76123d9c4c0b9b1f5d39c9eb2
    • Add GraphCMS as sponsor: 6adf7c02d4b7c9d3fd713e3f4f2bfd300e78830d
    • added @bravo-kernel as contributor: c5ea23513d1c8c20da18b00b4c52c4e0f30d6d24
    • added @sam3d as contributor: 8c195a20f6d2e2e164fcced216e714a539f2c545
    • added @doncicuto as contributor: d1b7e2b151aa9c08dd1e1348fe3e92f87520ba1e
    • updated @doncicuto contributions: ae608412b133b71ac4b2f7137a71e9b57a247af9
    • added @zenhob as contributor: 355caccb8453d21a0b30754302f1283eecf00658
    • updated @beerose contributions: 4376a25a818fa8c03ffe687f419fbed32fd6bcb3

    Credits

    Huge thanks to @doncicuto, @Roesh, @sam3d, @zenhob, and @bravo-kernel for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.6(Jul 21, 2021)

    🐞 Patches

    • Fix validateZodSchema bug: undefined is not an object (evaluating 'e[n]._errors[0]'): #2572
    • Fix useQuery types to support "select" prop: #2581
    • Set x-powered-by header to Blitz.js: #2586

    👩‍🍳 Recipes

    • Chakra-UI recipe updates the LabeledTextField with Chakra's native components: #2564

    Internal Meta Changes

    • added @anothernode as contributor: 83ce0bdee0e253b69075b6a6e4cc34348efd9b65
    • added @msichterman as contributor: 5e354c7ce1a33ec75ba229bf3d314e49aa92c602
    • Retire @malkomalko from L1 Maintainers: #2571
    • added @medihack as contributor: 0a3b71c4c19fdae32a5b8daa7430678331a9fee5
    • added @muyiwaolu as contributor: e799b088477a693f8555bc8ee16ce4127978e019
    • Removed React Bricks from the sponsors list: fee52d26c74dd0d3d9818bbb3aa65524e7a7c626

    Credits

    Huge thanks to @nimashoghi, @Roesh, @muyiwaolu, and @abuuzayr for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.5(Jul 8, 2021)

  • v0.38.4(Jul 7, 2021)

    🐞 Patches

    • Fix blitz dev not working on Windows and add more Windows CI tests: #2554
    • Fix false "Found a change in blitz.config.js" message: #2559

    Internal Meta Changes

    • Add @abuuzayr as L1 maintainer: #2549
    • added @ricardo-rp as contributor: 43f9cc2fc88ff6d3b4ea0026c4ac4db18699373a
    • Remove @robdrosenberg from L2 Maintainers: #2553

    Credits

    Huge thanks to @abuuzayr for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.3(Jul 5, 2021)

    🐞 Patches

    • Fix CSRF error when using session.$setPublicData: #2541
    • Route manifest replace nbsp with normal space: #2482
    • Fix broken api routes in 0.38.3-canary.0 release: #2545
    • Next.js Fork Migration: Move multiple pages folders support plus pages+api sibling into nextjs core: #2502
    • Next.js Fork Migration: Move blitz.config.(js|ts) support into nextjs core: #2532

    ⚡️ Changes to the New App Template

    • Remove <Suspense> from _app.js because it causes buggy redirect behavior: #2548
    • Add .blitz.config.compiled.js to .gitignore

    Internal Meta Changes

    • added @esemeniuc as contributor: 9240d86ed643e98bae1ed683c22df8c6389ddc1c
    • Add test for Page.redirectAuthenticatedTo: #2531

    Credits

    Huge thanks to @esemeniuc for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.3-canary.1(Jun 25, 2021)

  • v0.38.3-canary.0(Jun 24, 2021)

  • v0.38.2(Jun 24, 2021)

    🐞 Patches

    • Upgrade to Next.js 11.0.1: #2526
      • Main fix is support for svgr
    • Fix prefetched dehydrated state to support Dates, Maps, etc: #2512
    • Fix blitz db seed to print stack traces for any errors: #2528
    • Fix built in errors like RedirectError and AuthenticationError to not log as "uncaught" in browser console: #2522

    Internal Meta Changes

    • Update userTrack logo (sponsor): #2517
    • updated @Cristy94 contributions: bdec5cffbf26ec636bf2e521574140252e83e686

    Credits

    Huge thanks to @Skn0tt, @koolii, and @Cristy94 for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.1(Jun 19, 2021)

    🐞 Patches

    • Fix blitz generate /new page does not use Routes: #2501
    • Fix validateZodSchema() to pass if schema undefined: #2511
    • Fix blitz generate to regenerate the Routes manifest: #2504
    • Add support for custom messages and icons in recipes: #2510
    • Fix so that npm scripts don't run on blitz install recipes: #2498
    • Fix lint warning, unused path in generated api routes: #2513
    • Fix browser error when using prisma.$use(): #2514

    Internal Meta Changes

    • added @igeligel as contributor: 1e39604ae10366c1fc741a7badd5a06a798cbe70
    • updated @ntgussoni contributions: a2c6c9ce2318ed8d203dd72b66ad339aa74c1511
    • added @prisis as contributor: 6198025ce536cd239ad75c64f6afd08e2e166d45
    • added @benjakugler96 as contributor: b6fcba1c014302f0f3a48d8b0a9875f9e4a36112

    Credits

    Huge thanks to @dbachrach, @ntgussoni, @prisis, and @benjakugler96 for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.38.0(Jun 17, 2021)

    💥 Breaking Changes

    • Blitz now provides an optimized <ErrorBoundary> component : #2480
      1. Remove react-error-boundary from your package.json
      2. Update all imports of as shown here:
        -import {ErrorBoundary} from "react-error-boundary"
        +import {ErrorBoundary} from "blitz"
        
      3. You can optionally remove the resetKeys={[router.asPath]} prop because we now automatically reset on route change

    🚀 New Features

    • Upgrade to Next.js 11: #2489
      • Adds <Script> Read the docs
      • Adds automatic size detection for local images (don't have to set width/height props on
      • Webpack 5 now used by default
      • blitz build will now fail if eslint errors are detected (can be disabled)
    • Change blitz eslint config to use the new eslint-config-next package from Next.js 11
    • Add <ErrorBoundary> component into core: #2480
    • Add validateZodSchema() API for better form errors: #2441
    • Add formatZodError() utility: #2494
    • Add setPublicDataForUser() — useful for updating the role of another user: #2473
    • Add RedirectError: #2483

    🐞 Patches

    • Fix BlitzConfig type to allow extra fields: #2471
    • Fix pages to never render if Page.authenticate=true and logged out: #2476
    • Rename DISABLE_CSRF_PROTECTION to DANGEROUSLY_DISABLE_CSRF_PROTECTION: 768562945e0d2f5d0a2d2e6bd8bd583e75a51185
    • Fix broken vercel deployments: #2479
    • Fix Page.authenticate = {redirect: '/login';} not working correctly on logout AND add RedirectError: #2483
    • Fix edit page generated by blitz generate to not have buggy behavior: #2487
    • Fix bug with <Image> and SSR for configured domains: #2474
    • Change all user facing references of next.js to blitz.js: #2438

    ⚡️ Changes to the New App Template

    • Use validateZodSchema() in <Form> #2441
    • Move dev dependencies to devDependencies in package.json (better for Docker): #2475
    • Upgrade [email protected] [email protected]: 1c256c9c11b0fea122c27018751181e615ca8332

    Internal Meta Changes

    • added @kivi as contributor: be9f70850c9e0cd598b342f4e31f7993a21d87a9
    • added @dangreaves as contributor: 2fa862ebf827f6fe955eb2f70f9a4cf9b767f5c9
    • Fix GH actions to cancel existing actions on new push: 3138fc5f6e151d3e0b8c13f28687cb5f65a176cd
    • updated @swinner2 contributions: f20d7cf8ec765dbd75b54c8288800583a1129914
    • updated @swinner2 contributions: b3f1598212e2e0fc14cd8f90d6076c0864f8a6cc
    • added @lksnmnn as contributor: 5d0998ab8480a2e297141d16de20a277b856e3e4
    • updated @lksnmnn contributions: 2c3afcf40745d8fa94f24f75bee44c284f602190
    • added @dbachrach as contributor: fc66d61f0cb69eb194040d57375a2f2e3c93d39d
    • updated @dbachrach contributions: 6e7111397f1e5aa18aac3bbe4b19eca363a1f8c1
    • added @ashikka as contributor: 5f2bf3ae55e58405f20fe2c910dcde04b45a2860
    • added @deini as contributor: b80cf675b6dc5b214b88e580d683925d47c29d6f
    • Remove all nextjs/examples: e4e3e757bccea5361c6d986ad09a085e5bed0cf3

    Credits

    Huge thanks to @swinner2, @lksnmnn, @dangreaves, @dbachrach, @mabadir, @ashikka, and @kivi for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.37.0(Jun 8, 2021)

    🚀 New Features

    • Add ability to disable custom server hot reloading: #2447

    🐞 Patches

    • Fix webpack 5 support (Webpack 5 now used by default): #2453
    • Fix Prisma @@map in Enums break the model generator: #2445
    • Remove unneeded cd message during blitz install in some cases: #2451
    • Fix CSRF 401 errors for HEAD requests: #2443
    • Fix Routes manifest for pages with parent & child relationships: #2424
    • Fix auth & middleware not working on Vercel (No longer need the path.resolve workaround): #2463
    • Fix to not build custom server during blitz start: #2408
    • Fix one part of pnp issues: #2464

    ⚡️ Changes to the New App Template

    • Update Prisma and React dependencies: #2462

    Internal Meta Changes

    • added @max-programming as contributor: 9c54361cd66fef04cb02fbf0417beadd9275a313
    • added @sebastianhoitz as contributor: f8ce548f4a119cc0b3b458f7b283e66c63742168
    • updated @markhughes contributions: f2d41eff35d7d74ca0df294e37369480f75247e9
    • updated @frankiesardo contributions: 577206a404399d36de6d65930533da25ef0ee2b7
    • added @garnerp as contributor: 22a845e13a5695780f9358a388f39c8bca5a3757
    • updated @mabadir contributions: ff85cf1c17e968c17324a1d775969e204ca11d10

    Credits

    Huge thanks to @markhughes, @MrLeebo, @max-programming, @sebastianhoitz, @frankiesardo, and @mabadir for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.36.4(Jun 2, 2021)

    🐞 Patches

    • Fix so blitz new always generates valid cookiePrefix: #2427
    • Add couple missing dependencies to @blitzjs/cli package: #2439
    • Add helpful error when trying blitz export with blitz auth: #2435
    • Add debug to blitz package: #2426

    Internal Meta Changes

    • added @ormarek as contributor: cb432b627606208d7cc1372b67a47ccbfbf9bb8d
    • Remove CI from canary branch: d4dc932bc3b4054a986c3f319b760344511b76b4
    • added @AntoineGuestin as contributor: 6b463fcdd168a12b4bd1c0d01ad6eaf0104b5217
    • added @swinner2 as contributor: a00f162bca8fe184925aab5c3a9cc26b2a192ded

    Credits

    Huge thanks to @swinner2 and @AntoineGuestin for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.36.3(May 29, 2021)

    🐞 Patches

    • Fix broken Vercel deployments from version 0.35+: #2419
      • For using session inside getServerSideProps, you'll need to update the workaround as noted here: https://github.com/blitz-js/blitz/issues/794#issuecomment-850909662
    • Fix caught authentication errors showing as uncaught in Firefox: #2417
    • Fix third-party recipes not working: #2418

    ⚡️ Changes to the New App Template

    • Fix zod bug on /reset-password page closes: #2414: 8fb8608e49436718717d93c8c5fdabd9908aa05f
    Source code(tar.gz)
    Source code(zip)
  • v0.36.2(May 28, 2021)

    💥 Breaking Changes

    • blitz install now requires this version or later because of a bug fix for npm users: #2404

    🚀 New Features

    • Add support for nonce and crossOrigin in BlitzScript: #2377
    • Upgrade templates to work with Zod v3: #2375
    • Add BlitzConfig type and add it to newapp template: #2411

    🐞 Patches

    • Upgrade nextjs to 10.2.3: #2409
    • Fix bug: cannot find module next/constants: #2402
    • Upgrade react-query and Fix CancelledError when clicking Logout: #2406
    • Fix queries & mutations to work with trailing slash config: #2392

    Internal Meta Changes

    • Add contributor over time graph to CONTRIBUTOR_STATS: #2397
    • added @guoqqqi as contributor: 3dcc885186c199bfd2b4ac63abc50677ce459a10
    • added @timbooker as contributor: 65405b6f4341fa448627fa50862cb9b0710eb587

    Credits

    Huge thanks to @markhughes, @JuanM04, @timbooker, and @guoqqqi for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.35.2(May 26, 2021)

    🐞 Patches

    • Remove debug log from cli: 719d867eea6a2a3df1c5ddbeb5b6b77bffe7bb54

    ⚡️ Changes to the New App Template

    • Fix typescript issue in forgotPassword.test.ts: 7fdd07e5985b178fc27ce2c3b44827879f84f887

    Internal Meta Changes

    • Add Mina as L1 maintainer: #2391
    • updated @mabadir contributions: a328b6c19ca088fd7111e2c2fb6ad1bc7c2a3ddf

    Credits

    Huge thanks to @mabadir for helping!

    Source code(tar.gz)
    Source code(zip)
  • v0.35.1(May 26, 2021)

    🐞 Patches

    • Only build blitz config when needed and Fix blitz.config.js not found error: #2389
    • Fixed blitz compile bug when noPropertyAccessFromIndexSignature is true: #2385
    • Allow passing Route Manifest result to Page.authenticate.redirectTo: #2359
    • Fix HEAD requests 'Cannot read property '$authorize' of undefined': #2364

    👩‍🍳 Recipes

    • Fix Regression on Tailwind Recipe purging in production: #2383

    Internal Meta Changes

    • added @frankiesardo as contributor: 2e05dec219cf23a5346f92f180772e086c919ab2
    • added @enemycnt as contributor: e22a44ba7798659376fc8c3757a0f606337dde16
    • added @Dipeshwagle as contributor: 059e75ae08c151dfebdac6c51a3f8d4c981423f8
    • added @benbender as contributor: ac67dc05e46177fbbf7f6b99abca390e86eb877b
    • added @nimashoghi as contributor: 1e29525ef00377ae05acec860afd7385eb53e640
    • added @chronark as contributor: 2302786e6080135e467c1f0250644e045e9cf95d

    Credits

    Huge thanks to @Skn0tt, @Dipeshwagle, @nimashoghi, and @benbender for helping!

    Source code(tar.gz)
    Source code(zip)
The React Framework

Next.js Getting Started Visit https://nextjs.org/learn to get started with Next.js. Documentation Visit https://nextjs.org/docs to view the full docum

Vercel 74.6k Oct 17, 2021
On layered architecture

On layered architecture

Osman Cea 49 Oct 15, 2021
A frontend Framework for building B2B applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design

react-admin A frontend Framework for building data-driven applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Materi

marmelab 18k Oct 13, 2021
A realistic approach to implement clean architecture on react codebases

A realistic approach to implement clean architecture on react codebases

Eduardo Moroni 1k Oct 18, 2021
A front-end framework that you can understand at a glance, simplicity does not mean simple.

A front-end framework that you can understand at a glance, simplicity does not mean simple.

makajs 200 Sep 19, 2021
The Full-stack Framework for React and other in Deno.

The Full-stack Framework for React and other in Deno.

Aleph.js 3.3k Oct 14, 2021
Build blazing fast, modern apps and websites with React

Gatsby v2 ⚛️ ?? ?? Fast in every way that matters Gatsby is a free and open source framework based on React that helps developers build blazing fast w

Gatsby 51.5k Oct 15, 2021
A most advanced ssr framework support React/Vue2/Vue3 on Earth that implemented serverless-side render specification.

A most advanced ssr framework support React/Vue2/Vue3 on Earth that implemented serverless-side render specification.

ykfe 1.4k Oct 20, 2021
:rocket: Blazing fast page load and seamless navigation.

React Server is now defunct Consider Next.js instead. React Server React framework with server render for blazing fast page load and seamless transiti

Redfin 3.9k Oct 4, 2021
web3-react🧰 A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

?? A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

Noah Zinsmeister 1.8k Oct 13, 2021
🧰 A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

?? A simple, maximally extensible, dependency minimized framework for building modern Ethereum dApps

Noah Zinsmeister 1.8k Oct 12, 2021
🗺 Universal router for web applications.

Expressive router for nodejs and the browser. Rill brings cascading middleware to the browser and enables a familiar routing solution for web applicat

Rill 557 Oct 12, 2021
React + TypeScript app built using clean architecture principles.

React + TypeScript app built using clean architecture principles.

Alex 1.1k Oct 18, 2021
Tokopedia React Development Kits - Yet another React framework

Tokopedia React Development Kits (Treats) Learn more on our documentation. Getting Started To get started with Treats, you can simply do the following

Tokopedia 152 Oct 12, 2021
🛡️ ⚛️ A simple, scalable, and powerful architecture for building production ready React applications.

??️ ⚛️ A simple, scalable, and powerful architecture for building production ready React applications.

Alan Alickovic 5.2k Oct 13, 2021
A declarative, efficient, and flexible JavaScript library for building user interfaces.

React · React is a JavaScript library for building user interfaces. Declarative: React makes it painless to create interactive UIs. Design simple view

Facebook 176.3k Oct 17, 2021
Create beautfiful custom applications using 100ms' React SDK.

Create beautfiful custom applications using 100ms' React SDK.

100ms 14 Oct 8, 2021
React tic-tac-toe example implemented in TypeScript

React Tutorial TS implementation What React's official Tic Tac Toe tutorial in TypeScript fashion. DIY step npm install npm start to start dev server

null 4 Jul 1, 2021