Menu

Version 2.x Updates

Good to know

Please check the version field in the package.json file for version number

2.0.0

Optimization

  • More universal landing page boilerplate
  • Built-in complete payment requirements: monthly subscription, annual subscription, one-time payment

2.1.0

Optimization

  • Optimized Supabase database initialization and update methods
    • SQL files originally in the data/ folder have been migrated to supabase/migrations
    • For new initialization and update methods, please see details
  • Optimized styles of some components

2.2.0

New Features

  1. Record user's first visit source, see commit history 1 and commit history 2
  • Execute database file supabase/migrations/20250802164211_users_add_referral.sql, and update types.ts file
  • Execute database file supabase/migrations/20250803113600_update_my_profile_add_referral.sql, and update types.ts file
  • middleware.ts: Record user source in Cookie based on URL parameters
  • components/providers/AuthProvider.tsx: Carry user source to login parameters
  • app/auth/callback/route.ts: Record user source to users table
  1. Simplified existing email boilerplates, email content only retains English, see commit history:
  • emails/invoice-payment-failed.tsx: Delete non-English content
  • emails/newsletter-welcome.tsx: Delete non-English content
  • actions/newsletter/index.ts: Update incoming email parameters
  1. Unified email sending function, see commit history:
  • actions/resend/index.ts: Unified handling of email sending and unsubscription
  • actions/newsletter/index.ts: Call unified email sending method
  • lib/stripe/actions.ts: Call unified email sending method
  1. Configurable welcome email for new users, see commit history
  • .env.example: Added environment variable NEXT_PUBLIC_USER_WELCOME to configure whether to enable welcome emails for new users
  • app/auth/callback/route.ts: Send new user email notification when new user logs in
  • emails/user-welcome.tsx: New user welcome email boilerplate

Optimization

  1. Optimized styles of some components:
  • components/LanguageDetectionAlert.tsx
  • components/ui/rainbow-button.tsx
  1. Optimized dynamic icon handling:
  • components/DynamicIcon.tsx
  1. Optimized login modal closing timing:
  • components/auth/LoginForm.tsx

2.2.1

Optimization

  1. Optimized JSON validation of lang_json field in pricing management form and JSON parsing of preview card
  • app/[locale]/(protected)/dashboard/(admin)/prices/PricePlanForm.tsx
  • app/[locale]/(protected)/dashboard/(admin)/prices/PricingCardPreview.tsx
  • lib/safeJson.ts

2.2.2

Optimization

  1. Optimized language switcher alert styles
  • components/LanguageDetectionAlert.tsx
  • Multilingual package LanguageDetection field:
    • i18n/messages/en/common.json
    • i18n/messages/ja/common.json
    • i18n/messages/zh/common.json

2.3.0

Optimized user benefits acquisition pipeline and implemented a reliable SSG solution.

Optimizations

  1. Moved the useSearchParams call in AuthProvider.tsx down to the login component to maintain layout server-side rendering, see commit history
  • Updated components/providers/AuthProvider.tsx
  • Updated components/auth/LoginForm.tsx
  • Updated app/[locale]/login/page.tsx
  1. The original user benefits acquisition pipeline was complex, not beginner-friendly, and affected SSG. Therefore, we optimized the way benefits are acquired and used, see commit history
  • Installed dependency swr: pnpm i swr
  • Updated app/[locale]/layout.tsx
  • Updated actions/usage/benefits.ts, added client-side user benefits acquisition method getClientUserBenefits
  • Added hooks/useUserBenefits.ts to share user benefits request, update methods and data state
  • Updated components/layout/CurrentUserBenefitsDisplay.tsx, changed from calling @/stores/benefitsStore to calling @/hooks/useUserBenefits. Since both files provide the same method names, no other code changes were needed in this file
  • Updated components/header/UserInfo.tsx
  • Updated app/[locale]/payment/success/page.tsx to use the data refetch method mutate(revalidateBenefits) for immediate benefits update
  • Removed components/layout/BenefitsErrorBoundary.tsx
  • Removed components/providers/BenefitsProvider.tsx

For secondary development features, whether adding or deducting points, always call mutate(revalidateBenefits) to immediately synchronize database points.

  1. Fixed SSG implementation, see commit history
  • Updated app/[locale]/layout.tsx
  • Updated app/[locale]/blogs/[slug]/page.tsx, extracted locale from params instead of using getLocale()

2.3.1

Fixes

  1. GoogleOneTap checks if environment variables are configured, see commit history 1 and commit history 2
  • components/auth/GoogleOneTap.tsx

2.3.2

Improvements

  1. Login and payment buttons now redirect to the login page with the current page path included in the URL for post-login redirection. See commit history
  • components/home/PricingCTA.tsx
  • components/header/UserInfo.tsx
  • lib/utils.ts

Bug Fixes

  1. Fixed an issue where login would fail when the URL parameter next was an empty string. This bug was introduced in version 2.3.0 when LoginForm.tsx was modified. This update includes a fallback solution. See commit history
  • app/auth/callback/route.ts
  • app/auth/confirm/route.ts

2.4.0

Optimizations

  1. Updated layout, Dashboard uses Shadcn Sidebar component to refactor left-right layout, other pages maintain the original top-middle-bottom layout, see commit history
  • Execute pnpm dlx shadcn@latest add sidebar
  • Created folder app/[locale]/(basic-layout), added file app/[locale]/(basic-layout)/layout.tsx
  • Moved all files and folders under app/[locale] folder, except app/[localte]/layout.tsx and app/[locale]/(protected), into app/[localte]/(basic-layout)
  • Updated app/[locale]/layout.tsx, removed Header and Footer references, removed <main> tag (do not remove children inside <main>)
  • Added app/[locale]/(protected)/dashboard/DashboardSidebar.tsx
  • Added components/header/SidebarInsetHeader.tsx
  • Updated app/[locale]/(protected)/dashboard/layout.tsx, using new Sidebar
  • Added directory icons to UserMenus and AdminMenus in i18n/message/en/common.json, i18n/message/ja/common.json and i18n/message/zh/common.json
  • Removed app/[locale]/(protected)/dashboard/Sidebar.tsx
  • Removed app/[locale]/(protected)/dashboard/MobileSidebar.tsx
  • Component style optimizations:
    • components/header/UserInfo.tsx
    • components/header/UserAvatar.tsx
    • components/header/MobileMenu.tsx
    • components/header/HeaderLinks.tsx
    • components/header/Header.tsx
  1. Optimized copy styles
  • components/mdx/CopyButton.tsx

New Features

  1. Added administrator overview page, see commit history
  • Execute pnpm dlx shadcn@latest add chart
  • Migrated new SQL files: supabase/migrations/20250812143117_create_order_stats_function.sql, supabase/migrations/20250812151308_create_daily_growth_stats_function.sql, see update methods
  • Added Server Actions actions/overview
  • Added page app/[locale]/(protected)/dashboard/(admin)/overview
  • Updated lib/supabase/middleware.ts, added /dashboard/overview to administrator permission pages
  • Updated lib/utils.ts, added number formatting methods
  • Updated multilingual packages
    • Edited directories: i18n/messages/en/common.json, i18n/messages/ja/common.json, i18n/messages/zh/common.json, added new page directory items
    • Added new page language packages: i18n/messages/en/Dashboard/Admin/Overview.json, i18n/messages/ja/Dashboard/Admin/Overview.json, i18n/messages/zh/Dashboard/Admin/Overview.json
    • Edited i18n/request.ts, imported new page language packages
  1. Added administrator orders viewing page, see commit history
  • Added Server Actions actions/orders
  • Added page app/[locale]/(protected)/dashboard/(admin)/orders
  • Updated lib/supabase/middleware.ts, added /dashboard/orders to administrator permission pages
  • Updated multilingual packages
    • Edited directories: i18n/messages/en/common.json, i18n/messages/ja/common.json, i18n/messages/zh/common.json, added new page directory items
    • Added new page language packages: i18n/messages/en/Dashboard/Admin/Orders.json, i18n/messages/ja/Dashboard/Admin/Orders.json, i18n/messages/zh/Dashboard/Admin/Orders.json
    • Edited i18n/request.ts, imported new page language packages