This page is the documentation changelog for KilatKoding inside the docs portal. It focuses on changes that matter to boilerplate users, especially changes that affect setup, environment variables, routes, testing, and feature behavior.
How to read this changelog
- This changelog focuses on changes that affect how you run, configure, or customize KilatKoding.
- This page is different from the public
/changelogroute inside the KilatKoding app. The app route is better for end-user product updates, while this docs page is meant for boilerplate buyers, operators, and developers. - If an update also changes the docs, we link directly to the affected docs pages.
March 28, 2026
Fallback notices are now safer for customer-facing screens
Auth and feature fallback states no longer show overly developer-centric setup instructions in customer-facing UI. What changed:- auth notices now use more general copy when login, signup, session, or dashboard access is unavailable
- fallback notices on pages such as Contact, Checkout, and Waitlist no longer expose raw env-variable instructions inside the browser UI
- detailed environment diagnostics still remain available through
npm run env:check, so developers still have a clear troubleshooting path without leaking setup details to end users
- safer when the app is demoed or reviewed by customers before every backend integration is fully configured
- end users now see cleaner feature-status messaging that fits production use better
- setup details remain in the developer workflow and command-line path instead of the customer UI
Docs showcase and demo components are now more hydration-safe
Demo components used in the docs route and dashboard showcase now rely on deterministic mock data. What changed:- demo data is no longer generated from combinations of
Math.random()and timestamps that change on each render - relative-time UI in components such as the activity feed, notification dropdown, and audit log now renders from a stable reference time
- the initial state for the demo calendar is now fixed so SSR and hydration are less likely to drift
- React warnings such as
Hydration failedandText content does not match server-rendered HTMLare less likely to appear - routes such as
/docs/componentsand/dashboard/componentsare safer to reload, cache, and test across devices - demo components are more reliable as a visual reference for boilerplate buyers
Date rendering is now more consistent across timezones
Several dashboard, admin, blog, and chart areas now use more consistent date formatting for the Indonesian timezone. What changed:- date formatting in tables, billing, settings, invoices, webhook events, and blog pages now goes through a shared helper
- chart labels that rely on
YYYY-MM-DDdate strings no longer depend on browser timezone parsing - relative-time rendering in audit and activity components is also more stable against render-time differences
- lower chance of dates shifting by one day between server and browser output
- more consistent rendering when the app is opened from timezones outside Indonesia
- build output and smoke tests for affected routes are now more predictable
March 26, 2026
Auth is now safer when Supabase env is incomplete
The auth area no longer depends only on theNEXT_PUBLIC_ENABLE_AUTH toggle. It now also depends on whether the Supabase public env is actually available.
What changed:
- the server now resolves the Supabase public config before auth forms are rendered
- the login, signup, forgot-password, update-password, and verify-email pages receive that resolved config from the server
- if
NEXT_PUBLIC_SUPABASE_URLorNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYis incomplete, the auth pages show a configuration notice instead of forcing a broken client initialization
- auth fallback is now clearer when setup is incomplete
- auth issues caused by an unready browser Supabase client are easier to diagnose
- auth behavior is more consistent between server and client
npm run env:check now reads .env and .env.local
The env-check script now loads env files from the working directory using the same pattern as Next.js.
What changed:
npm run env:checkno longer depends only on whichever env values happen to exist in the current shell.envand.env.localare now both loaded during readiness checks- the source repo now includes a dedicated test that verifies this behavior
- the output of
npm run env:checkis now closer to the real app behavior undernpm run dev - there is less chance of mismatch between “env check says ready” and “the app is actually reading something else”
- local setup becomes easier to explain for both non-technical and technical users
Restarting the dev server now needs to be called out more clearly
Because the app and env check now make local env-file behavior clearer, the docs now explicitly remind readers to restartnpm run dev after changing .env or .env.local.
Related docs: