October 12th 2021 —
Page <Meta /> component 🍀
Divjoy now gives you a page
Meta component that makes it easy to specify page title, description, image, and more so that you can ensure your pages are SEO optimized and look great when shared on social networks. This component is a lightweight wrapper around
next/head if using Next.js) that ensures all the correct meta tags are filled in. When you export a template from Divjoy we'll automatically add this component to each of your pages.
Updated to Firebase v9 🔥
Our Firebase and Cloud Firestore integrations have been updated to v9, which includes a new modular API that greatly reduces your app size. You should see about a 30% reduction in JS bundle size by default and you can reduce this even more by removing Firebase functionality you don't need.
Improved Firestore security rules 👮
Firestore security rules you have been updated to ensure that all fields are the correct type and length. For instance we ensure that
user.email is a string that's no more than 500 characters in length and that
item.featured is a boolean.
We've also made it easy to restrict write access to certain fields based on the user's Stripe plan. By default users are required to have the "Pro" plan or higher to update the
These security rules should provide a much better starting point and illustrate some useful security patterns you can follow as you build out your app.
React Query ⚛️
We now use React Query and its
useQuery hook to manage data fetching and caching. Whether you're using Cloud Firestore or integrating a custom database, all your data fetching functions utilize React Query under the hood.
There are a lot of advantages to this ↴
- React Query caches your data so that previously executed queries load instantly as you navigate through your app. Firestore has it's own internal cache, but this is normally cleared on page transition. By using React Query as your caching layer you'll have a persistent cache across your entire app and fine-grained control.
- React Query adds minimal code. In fact, we were able to remove more code than we added with this integration because it replaces a fair amount of the custom logic we gave you previously.
- React Query is extremely popular, well-documented, and actively maintained.
- React Query can fetch data from any source. Whether you're fetching data from your database or a 3rd party API, you'll have the exact same query response structure. Your components can be completely agnostic as to the source of your data.
- React query grows with your app. We give you an integration that works great for 95% of apps, but you still have a selection of advanced React Query options at your disposal. From seamless hydration of data from server to client to optimistically updating data and rolling back on fail, you'll be able to do what you need without adding a bunch of custom code.
- Updated Stripe webhook to listen to
invoice.payment_succeeded. The functionality is the same, except this will also be triggered when an invoice is marked as paid "out-of-band" (paid outside of Stripe).
- Improved formatting of import statements in exported code. External modules now grouped at the top and import path no longer includes the
- Minor code improvements to Auth components
- Minor visual improvements to Footer components
- Also updated Next.js, Auth0, and React Bootstrap
July 21st, 2021 —
You can now choose Amplitude as your analytics provider. Amplitude gives you insight into what features and customer actions lead to outcomes and where to double down. You'll find this option on the homepage under Choose your stack → More options.
- Updated Next.js to v11 (see their blog post for more details)
- Updated Bulma to 0.9.3
- Footer components now dynamically show the current year
- Added search to the Divjoy docs
- Updated the roadmap
- Added onlineornot.com and recollectapp.co to the project showcase
- Various bug fixes
April 16th, 2021 —
Integrate with any database 🌤
The new and improved Other database option is designed to make it as easy as possible to integrate your Divjoy codebase with any database provider. When you export your code you'll get a data fetching abstraction powered by React Query and JSON Server. Your app will be fully functional out of the box, utilizing JSON Server to store data locally while you develop. Before moving to production you just need to update
api/_db.js to make calls to your preferred database instead of JSON Server.
- Fixed an issue with the Material UI
useDarkModehook not getting the correct value in Next.js.
- Fixed bug in the Bootstrap "Light" template where settings page would always ask user to re-authenticate.
- Added cloudstudio.fm and aiworkouts.live to the project showcase.
March 4th, 2021 —
Live Data Dashboard for Bootstrap & Bulma ⚡️
Bootstrap and Bulma templates now include a data-driven dashboard component that can create, read, update, and delete data in your database. You can modify it your needs or simply use it as a handy reference as you work on your app. It even includes a feature that requires a higher-tier subscription so you can see how easy that is to implement. This feature is already included in Material UI templates.
You can now choose Mixpanel as your analytics provider. Mixpanel is powerful, self-serve product analytics to help you convert, engage, and retain more users. You'll find this option on the homepage under Choose your stack → More options.
- Updated the following dependencies: Bulma, Auth0
- Improved Vercel and Netlify deployment instructions in exported readme file
- Updated the Stripe integration to long longer require
- Minor component improvements for Bulma, Bootstrap, and Material UI. For full insight into these changes see the Divjoy Library Github repo (email email@example.com with your Github username to request access).
- Various editor bug fixes
February 5th, 2021 —
Customization Guides 🔨
Added a new section to our docs with guides on how to customize your code to do what you need. Our initial set of guides cover some common requests, such as adding custom fields to your authentication form. If there's a guide that you'd like to see please reach out.
- The Divjoy editor now highlights elements when hovering over them in the left pane.
- Improved the Firebase integration guide
- Fixed some Material UI components causing horizontal scroll on mobile.
- Fixed some Material UI components that were causing eslint warnings.
- Fixed settings tabs not highlighting active tab in Material UI + Next.js codebases.
- Update Firestore
createItemfunction to add a
- Updated the following dependencies and tested across all stack combos: React, Next.js, React Router, Firebase, Material UI, React Hook Form, and Stripe.
January 14th, 2021 —
Divjoy 2.0 🎉
To celebrate everything we're launching today (and everything we've released over the last 6 months) we're slapping a big "2.0" on Divjoy and announcing the new version on Product Hunt. No longer just for simple static sites, thousands of devs are now using Divjoy to build full-features SaaS apps.
Material UI integration 👩🎤
Say hello to our new default UI kit. Material UI is a React UI framework with a large library of components, excellent documentation, and well thought out theming system. We've rebuilt all our templates and components using Material UI and added some nice extras, including full dark-mode support.
Dashboard with live data ⚡️
Divjoy templates now include a data-driven dashboard component that can create, read, update, and delete data in your database. You can modify it your needs or simply use it as a handy reference as you work on your app. It even includes a feature that requires a higher-tier subscription so you can see how easy that is to implement.
Discord Community 👻
We've added a members-only Discord community where you can share your projects, ask questions, and meet other Divjoy members. We've got a lot planned for the community, including AMAs and monthly hackathons so stay tuned.
We've added a roadmap so that you can see what Divjoy features are planned and what's coming next.
We've added a changelog, but you know this already because you're reading the changelog at this very moment.
We finally have a unified documentation page that includes some helpful guides and instructions on setting up the various services we integrate with. We wanted to get something simple up to start, but we'll be focusing a lot on these docs in the coming months. Please let me know if there's anything specific you'd like to see.
December 28, 2020 —
Team Plan 👨👩👧👦
We've added a new team plan that allows you to share your Divjoy account with unlimited team members. For the time being, this simply gives you the okay to share your login link with your team. At a future date we'll be allowing each team member to have their own login.
December 7, 2020 —
Divjoy customers now get a free 1-hour phone call with the founder of Divjoy to discuss your product and figure out a launch plan. Head over to divjoy.com/launch to book a time.
Added some customer testimonials to the homepage. Will be making space for more, so if you have a quote you'd like to include please reach out.
- Updated Firebase rules so that users cannot change their stripeCustomerId
- Updated firebase and firebase-admin libraries
- Fixed bug that was causing readme formatting issues for some stack combinations
- Minor bug fixes related to stack selection on the homepage
November 23, 2020 —
- Updated Bootstrap and Bulma libraries to reduce excessive component nesting
- Added extra error handling in stripe-create-checkout-session.js endpoint
- Updated emojis used on Divjoy homepage to SVGs (thanks twemoji)
- Added skipthepost.com to the project showcase
October 24, 2020 —
Google Sheets & Airtable Integration 📄
You can now have your contact form submissions sent right to Google Sheets or Airtable. You'll find this option when choosing your stack on the homepage.
Email Verification 💌
Our auth integration now automatically sends verification emails when a user signs up. When a user clicks the email link to verify they'll be taken back to your app and shown a confirmation message (or a descriptive error message if something goes wrong).
Analytics Identify 🔎
Our auth integration now calls analytics.identify() to ensure the current Google Analytics session is connected to the authenticated user by their user_id. This will result in analytics that more accurately identifies your users across all devices and browsers.
- Updated React to 17.0.1
- Updated Next.js to 10.0
October 4, 2020 —
September 1, 2020 —
Firebase Email Flows 🔥
Divjoy now handles all Firebase email flows, such as email verification and password resetting. You'll see a /firebase-action route in your exported codebase. Just set this as the action URL in your Firebase settings and you're good to go.
August 14, 2020 —
- Added banger.digital and mightykidspreschool.com to the project showcase
- Updated Stripe integration with optional coupon property
July 24, 2020 —
Bigger Project Showcase 🏆
July 2, 2020 —
Stripe Payments integration 🤑
We've added Stripe subscription payments integration, giving you the ability to generate a fully-functional SaaS app. Your users will be able to signup, choose a plan, and pay via Stripe Checkout. We also include Customer portal integration enabling users to change plans and update their payment method.
- Added a
requireAuthHigher Order Component that makes it easy to restrict certain pages to authenticated users.
- Lots of small code improvements
June 15, 2020 —
Improved useAuth Hook ✨
The Divjoy useAuth hook now auto-fetches and merges custom user data from your database. Previously it would just give you the auth user object (from Firebase or Auth0 depending on your choice) and you had to call useUser to fetch extra user-related data from your database. That's now all handled automatically. That means less fetching and dealing with loading states. One hook gives you all the user data you need.
April 16, 2020 —
Database Integration 🌥
We've added database integration allowing you to choose between Cloud Firestore or "Other", which gives you REST API endpoints where you can connect to your database of choice. We also give you React hooks for data fetching that ensure your components automatically re-render when data changes.
Account Settings ⚙️
Our templates now include an account settings page where authenticated users can update their name, email, and password. Data will be updated in both your auth provider and database.
- Added a social login component that supports Google, Facebook, Twitter, and Github.
- Added a proper environment vars setup so you no longer need to hardcode API keys.
- Auth tokens are now passed in API requests and parsed with middleware so you can easily check the current user in your API logic.
- Lots of small code improvements.
Changelog history between August 13, 2019 - April 16, 2020 is not included yet. We'll be going back and filling in the full history soon.