Changelog
๐Ÿ‘€

Changelog

Updates and improvements to Divjoy. See what's coming up in our roadmap.

October 8th 2023 โ€”

Tailwind templates ๐Ÿƒ

  • Our Tailwind templates are finally live! Weโ€™ve partnered with tailkit.com to offer two Tailwind templates and a nice selection of components to chose from. Tailwind is now the default UI kit on Divjoy.

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.

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 โ€”

Improvements

  • Updated Google Analytics to v4 (guide for existing codebases)
  • Updated Supabase
  • Fixed Supabase โ€No storage option existsโ€ warning

February 10th 2023 โ€”

Improvements

  • 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.

ConvertKit ๐Ÿ’Œ

You can now choose ConvertKit as your newsletter provider if youโ€™d prefer to use it instead of our default Mailchimp option.

Segment ๐Ÿ“ˆ

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).

Other Improvements

  • Added apiRequestExternal function for making a requests to any API endpoint. Itโ€™s a light wrapper around fetch that abstracts away having to set the content type and parsing the response. This is now being used in our ConvertKit and Formspree integrations.
  • The requireAuth function 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 snake_cake to cameCase format for consistency.
  • Added a usePrevious hook 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 โ€”

Tailwind ๐Ÿƒ

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.

image

Other Improvements

  • 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 โ€”

Improvements

  • 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 trial_period_days instead of 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) ๐Ÿง‘โ€๐Ÿ”ฌ

You can get early access to these kits in the private Divjoy Library Github repo. Contact us and include your Github username so we can add you to the repo.

Tailwind

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).

These kits will be making their way to divjoy.com in the near future, but if youโ€™re eager to utilize them now get in touch and weโ€™ll give you access to the Github repo.

January 5th 2022 โ€”

Supabase โšก๏ธ

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.

Other Improvements

  • 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 react-helmet (or 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.

โ€ฃ
Screenshot
All your pages will include a Meta component that you can customize via props
All your pages will include a Meta component that you can customize via props

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 item.featured field.

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.

โ€ฃ
Screenshot
Sample of some of the rules we include
Sample of some of the rules we include

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 โ†ด

  1. 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.
  2. 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.
  3. React Query is extremely popular, well-documented, and actively maintained.
  4. 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.
  5. 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.
โ€ฃ
Screenshot
Turning a Firestore subscription into a React hook with React Query
Turning a Firestore subscription into a React hook with React Query

Privacy Policy and Terms of Service ๐Ÿ“œ

Our templates have been updated to include sample Privacy Policy and Terms of Service pages. Signup and Footer components have also been updated to link out to these pages. Before going live you'll want to talk to a lawyer or use a policy generator like avodocs.com, getterms.io, or termly.io, but it should still save you time having these pages setup and well-formatted out of the box.

โ€ฃ
Screenshot
image

Other Improvements

  • Updated Stripe webhook to listen to invoice.paid instead of 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 .js extension.
  • Minor code improvements to Auth components
  • Minor visual improvements to Footer components
  • Also updated Next.js, Auth0, and React Bootstrap

July 21st, 2021 โ€”

Amplitude ๐Ÿ“ˆ

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.

Other Improvements

  • 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.

Other Improvements

  • Fixed an issue with the Material UI useDarkMode hook 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.

Mixpanel ๐Ÿ“ˆ

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.

Other Improvements

  • Updated the following dependencies: Bulma, Auth0
  • Improved Vercel and Netlify deployment instructions in exported readme file
  • Updated the Stripe integration to long longer require STRIPE_DOMAIN and STRIPE_API_VERSION environment variables.
  • Minor component improvements for Bulma, Bootstrap, and Material UI. For full insight into these changes see the Divjoy Library Github repo (email hello@divjoy.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.

Other Improvements

  • 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 createdAt field.
  • 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.

Roadmap ๐Ÿ—บ

We've added a roadmap so that you can see what Divjoy features are planned and what's coming next.

Changelog ๐Ÿ“š

We've added a changelog, but you know this already because you're reading the changelog at this very moment.

Documentation ๐Ÿ™‹โ€โ™€๏ธ

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 โ€”

Launch ๐Ÿš€

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.

Testimonials โค๏ธ

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.

Other improvements

  • 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 โ€”

Improvements

  • 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.

Other Improvements

  • Updated React to 17.0.1
  • Updated Next.js to 10.0

October 4, 2020 โ€”

Improvements

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.

Other Improvements

August 14, 2020 โ€”

Improvements

July 24, 2020 โ€”

Bigger Project Showcase ๐Ÿ†

Our homepage previously showed off some customer projects, but we now have a dedicated showcase page. Reach out if you've built something with Divjoy and want it added.

Other Improvements

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.

Other Improvements

  • Added a requireAuth Higher 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.

Other Improvements

  • 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.

August 13, 2019 โ€”

Divjoy launches ๐Ÿš€

We've officially launched Divjoy to the public. Follow the discussion on Hacker News and Twitter.