perf: optimize framer-motion bundle size and memoize dictionary fetching

- Wrap getDictionary with React cache to prevent redundant JSON parsing on the server
- Create MotionProvider to globally initialize framer-motion LazyMotion with domAnimation
- Replace standard 'motion' imports with 'm' across all animated client components (HomeClient, Navbar, GaleriClient, SSSClient, card, text-reveal) to drastically reduce First Load JS size
This commit is contained in:
mstfyldz
2026-06-04 12:50:23 +03:00
parent e1d8bae5a4
commit acf01c81fa
9 changed files with 59 additions and 44 deletions
+3 -2
View File
@@ -1,4 +1,5 @@
import 'server-only';
import { cache } from 'react';
const dictionaries = {
en: () => import('../dictionaries/en.json').then((module) => module.default),
@@ -11,6 +12,6 @@ export const i18n = {
locales: ['tr', 'en'],
} as const;
export const getDictionary = async (locale: Locale) => {
export const getDictionary = cache(async (locale: Locale) => {
return dictionaries[locale]?.() ?? dictionaries.tr();
};
});