Changelog
๐Ÿ‘€

Changelog

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

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.