Version 2.x Updates
Good to know
Please check the
version
field in thepackage.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 tosupabase/migrations
- For new initialization and update methods, please see details
- SQL files originally in the
- Optimized styles of some components
2.2.0
New Features
- 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 updatetypes.ts
file - Execute database file
supabase/migrations/20250803113600_update_my_profile_add_referral.sql
, and updatetypes.ts
file middleware.ts
: Record user source in Cookie based on URL parameterscomponents/providers/AuthProvider.tsx
: Carry user source to login parametersapp/auth/callback/route.ts
: Record user source to users table
- Simplified existing email boilerplates, email content only retains English, see commit history:
emails/invoice-payment-failed.tsx
: Delete non-English contentemails/newsletter-welcome.tsx
: Delete non-English contentactions/newsletter/index.ts
: Update incoming email parameters
- Unified email sending function, see commit history:
actions/resend/index.ts
: Unified handling of email sending and unsubscriptionactions/newsletter/index.ts
: Call unified email sending methodlib/stripe/actions.ts
: Call unified email sending method
- Configurable welcome email for new users, see commit history
.env.example
: Added environment variableNEXT_PUBLIC_USER_WELCOME
to configure whether to enable welcome emails for new usersapp/auth/callback/route.ts
: Send new user email notification when new user logs inemails/user-welcome.tsx
: New user welcome email boilerplate
Optimization
- Optimized styles of some components:
components/LanguageDetectionAlert.tsx
components/ui/rainbow-button.tsx
- Optimized dynamic icon handling:
components/DynamicIcon.tsx
- Optimized login modal closing timing:
components/auth/LoginForm.tsx
2.2.1
Optimization
- 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
- 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
- Moved the
useSearchParams
call inAuthProvider.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
- 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 methodgetClientUserBenefits
- 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 methodmutate(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.
- Fixed SSG implementation, see commit history
- Updated
app/[locale]/layout.tsx
- Updated
app/[locale]/blogs/[slug]/page.tsx
, extractedlocale
fromparams
instead of usinggetLocale()
2.3.1
Fixes
GoogleOneTap
checks if environment variables are configured, see commit history 1 and commit history 2
components/auth/GoogleOneTap.tsx
2.3.2
Improvements
- 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
- 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 whenLoginForm.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
- 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 fileapp/[locale]/(basic-layout)/layout.tsx
- Moved all files and folders under
app/[locale]
folder, exceptapp/[localte]/layout.tsx
andapp/[locale]/(protected)
, intoapp/[localte]/(basic-layout)
- Updated
app/[locale]/layout.tsx
, removedHeader
andFooter
references, removed<main>
tag (do not removechildren
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
andAdminMenus
ini18n/message/en/common.json
,i18n/message/ja/common.json
andi18n/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
- Optimized copy styles
components/mdx/CopyButton.tsx
New Features
- 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
- Edited directories:
- 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
- Edited directories: