September 10th 2023 —
Note: These updates aren’t available on divjoy.com quite yet, but you can access the code in the private Divjoy Library Github repo. Contact us and include your Github username so we can add you to the repo. The main website will be updated later this month.
Improved Tailwind templates (early access) 🥰
We’ve partnered with tailkit.com to offer you a much nicer looking Tailwind template and selection of components.
Updated dependencies (early access) 🥳
All frameworks, UI kits, and other dependencies have been updated to their latest versions.
July 1st 2023 —
- Updated Google Analytics to v4 (guide for existing codebases)
- Updated Supabase
- Fixed Supabase ”No storage option exists” warning
February 10th 2023 —
- Updated Supabase to v2
- Minor bug fixes
September 5th 2022 —
Live Chat (Crisp and Intercom) 💬
You can now get Crisp or Intercom live chat integration in your app. This makes it easy for users to message you with questions or feedback. I personally use Crisp on Divjoy and it’s been an absolutely crucial channel, both for offering support and driving new sales. Our integration automatically populates the chat service with the user’s name and email and clears the chat on logout for extra privacy.
You can now choose ConvertKit as your newsletter provider if you’d prefer to use it instead of our default Mailchimp option.
You can now choose Segment as your analytics provider. Segment is a popular service that allows you to collect user data through a single API and then push it out to other services (such as multiple other analytics tools).
apiRequestExternalfunction for making a requests to any API endpoint. It’s a light wrapper around
fetchthat abstracts away having to set the content type and parsing the response. This is now being used in our ConvertKit and Formspree integrations.
requireAuthfunction no longer breaks Fast Refresh during local development. It was causing a full page reload after code changes instead of instantly updating.
- Supabase table names renamed from
cameCaseformat for consistency.
- Added a
usePrevioushook for getting the previous value of state. Used by our live chat integrations, but useful in many situations.
- Update Next.js to latest version (12.2.5)
July 20th 2022 —
Divjoy now supports Tailwind under UI kit options. For this first version, the focus has been building a minimal Tailwind template that integrates with all your app logic (authentication, payments, data-fetching, forms, etc), as well as provides some examples of dropdowns/modals using Headless UI (the official solution from Tailwind). You'll want to spiff up the components we give you or drop in nicer looking ones from Tailwind UI, using our code as a guide on how to hook into auth, etc.
App types 🌟
We now let you pick the type of app that you'd like. You can choose between a SaaS app, Landing Page, and Ecommerce (soon). This ensures you only get the UI and integrations you need for what you're building.
- Integrations are no longer excluded when not used by the template. This allows you to delete some (or all) of your template in the Divjoy editor and still get the integration logic you want in your exported code.
June 10th 2022 —
- Made it much easier to deploy to any host that supports Node.js when using our “Other” hosting option. Previously you had to run the Node server for your API endpoints separately from serving up your web app front-end. Depending on your host this wasn’t always easy. Now you just run a single Node server that handles everything. Details can be found in the deployment section of your project readme file.
- Updated Stripe integration to set trial period using
trail_from_plan(deprecated). The length of the trial period is now specified in your code instead of the Stripe UI when creating your plans.
June 1st 2022 —
Tailwind and Material UI v5 (early access) 🧑🔬
This is an early version of our Tailwind kit and we recommend using it in conjunction with Tailwind UI or another professionally designed Tailwind kit. Our focus has been building simple Tailwind components for any UI that integrates with app logic (authentication, payments, data-fetching, forms, etc), as well as provide some examples of dropdowns/modals using Headless UI (the official solution from Tailwind). You can spiff up these components or just use them as a guide when integrating the much nicer looking Tailwind UI. In the coming months Divjoy will have its own professionally designed Tailwind kit, but we didn't want to wait on that before this release, particularly because a lot of you have mentioned you plan to use Tailwind UI anyway.
Material UI v5
We’ve updated the existing Material UI kit from v4 to v5. Styling is much easier now that v5 allows you to apply styles directly to any component using the
sx prop. We’ve also taken this opportunity to improve the theming logic so you can can easily change the default for light/dark and add any number of other themes you want. If you’re updating an existing Divjoy project from v4 → v5 then you’ll probably want to see this complete diff of all changes (or for Next.js see this diff).
January 5th 2022 —
Divjoy now supports Supabase as your authentication and database provider. Supabase is an open-source Firebase alternative that’s powered by Postgres. If you’re looking for the ease-of-use of Firebase coupled with Postgres under the hood then it’s worth checking out.
- Updated Next.js to v12
- Lots of small code and commenting improvement
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.