Base44 login not working
Base44 shows invalid login, a blank reset page, or User.login is not a function? Check App Visibility, the /reset-password path, and the SDK call Base44 documents.
Reviewed October 17, 2026
What it means in plain English
Someone opens your Base44 app, enters an email and password that should work, and Base44 still says invalid login. Or the reset email never arrives, the reset link opens a blank page, or the code throws TypeError: User.login is not a function.
New Base44 apps already include login, register, forgot password, and reset password pages. The Authentication page (Dashboard, then Settings, then Authentication) chooses the methods. App Visibility on Overview chooses whether sign-in is required at all.
Likely causes
- The app is Private. Base44 says this is the most common cause of an invalid login error. Only invited people, or people admitted through eligible SSO auto-admit, can log in. Everyone else sees invalid login even with a valid email and password.
- The email or password is wrong, the email was never verified after sign-up, or the login session expired.
- The reset email is missing. Base44's checklist is spam, a wait of a few minutes, and an allowlist entry for
no-reply@base44-apps.comor your custom sending address. - Custom login pages exist, and the reset link is blank or errors because the page is not exactly at
/reset-password. That path is hardcoded. Renaming/forgot-passwordor/reset-passwordbreaks the flow. Reset links are single-use. Using one again shows invalid or expired. - The code calls
User.login(). The Base44 SDK does not support that method. On apps without custom login pages, the documented call isbase44.auth.redirectToLogin(nextUrl). - Facebook login fails because that Facebook account is not verified. Base44 says Facebook controls this, and you cannot bypass it in Base44.
- Custom Google OAuth is on, and Google has not approved the app yet. Base44 says approval can take up to 5 days. Custom Google OAuth needs the Builder plan or higher, a payment method on the Google Cloud project, and a connected custom domain. Authorized JavaScript origins is your app domain. Authorized redirect URIs is
https://app.base44.com/api/apps/auth/callback. The scopes areopenidandhttps://www.googleapis.com/auth/userinfo.email. The privacy policy and terms have to be public, not behind login. Default Google login uses Base44's credentials and shows base44.com. - You tested only the preview. Base44 says the full sign-up and login test is on the published live URL.
If the app opens for you and the link fails for everyone else, that is visibility or publish, covered in Base44 app works for me but not for other users. A reset link that uses a custom domain needs that domain connected. See Base44 custom domain or SSL stuck pending.
How to fix it, step by step
- Click Dashboard, then Overview. Under App Visibility, read the current setting. If it is Private, invite that person, or check auto-admit when SSO is the only sign-in method. If anyone should be able to sign up, set it to Public. SSO itself is an Enterprise plan (Business or Enterprise). Workspaces created before October 1, 2026 keep the earlier requirement, Elite or higher.
- Ask them to sign in again with the email in lowercase. If the session expired, a new attempt is what Base44 tells them to do.
- If the verification or reset email never arrives, have them check spam, wait a few minutes, and allowlist
no-reply@base44-apps.comor your custom sending address. Then use the resend link. If that still fails, remove their record from the Users list and have them sign up again with the same email. If several people hit this at once, Base44 says to contact support with the app URL and the addresses. - On custom login pages, confirm the reset page path is exactly
/reset-passwordand that/forgot-passwordwas not renamed. A used reset link needs a new email from/forgot-password. With a custom domain connected, Base44 puts that domain in the reset link with no extra setup. - If the error is
TypeError: User.login is not a function, replaceUser.login(nextUrl)withbase44.auth.redirectToLogin(nextUrl)on apps that do not use custom login pages. - For Facebook, the person completes Facebook's own identity confirmation: Settings and privacy, Accounts Center, Verification, Identity confirmation. Then they try the app again.
- For custom Google OAuth, connect the custom domain first, then in Google Cloud set Authorized JavaScript origins to the app domain and Authorized redirect URIs to
https://app.base44.com/api/apps/auth/callback. Add the scopesopenidandhttps://www.googleapis.com/auth/userinfo.email. Publish a landing page whose privacy policy and terms are public. In Base44: Dashboard, Settings, Authentication, Google toggle, Use a custom OAuth from Google Console. Wait for Google's verification, up to 5 days. The default option is Use the default Base44 OAuth, which shows base44.com. - On an existing app that still has Base44's built-in login, custom login pages were released to everyone on June 2, 2026. Dashboard, Overview, App Visibility, select Public (no login), then Enable custom auth. Publish so the new pages go live.
- Publish the app and run the sign-up on the live URL, not only in the preview.
- Paste this to the Base44 chat:
Login fails with invalid login, a blank reset page, or TypeError: User.login is not a function. Do not rename /forgot-password or /reset-password. On an app without custom login pages, replace User.login(nextUrl) with base44.auth.redirectToLogin(nextUrl). I will check Dashboard → Overview → App Visibility and invite the person if the app is Private.
How to check it worked
- A person who is allowed in can sign in on the published URL.
- A Private app still rejects someone who was never invited. That is the documented behavior.
- Forgot password sends a link that opens
/reset-passwordon the app domain, and a second click on the same link shows invalid or expired. - The browser console no longer shows
TypeError: User.login is not a function.
A checkout that returns to a page the person cannot open is the payments setup. See Base44 Stripe payments not working.
Sources
Related fixes
More Base44 fixes
Keep going on your own.
The guides stay free. A deep leak report is $15. Fix packs are $24, or $49 for all three. There is no done-for-you repair.