create-better-t-stack 3.2.23 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +1 -1
  3. package/dist/index.d.ts +4 -2
  4. package/dist/index.js +1 -1
  5. package/dist/{src-Cx7HDf0b.js → src-oHcpd_LW.js} +98 -57
  6. package/package.json +1 -1
  7. package/templates/addons/biome/biome.json.hbs +5 -0
  8. package/templates/api/orpc/server/tsconfig.json.hbs +1 -1
  9. package/templates/api/trpc/server/tsconfig.json.hbs +1 -1
  10. package/templates/auth/better-auth/convex/backend/convex/auth.ts.hbs +5 -5
  11. package/templates/auth/better-auth/convex/backend/convex/http.ts.hbs +1 -1
  12. package/templates/auth/better-auth/convex/native/bare/components/sign-in.tsx.hbs +127 -0
  13. package/templates/auth/better-auth/convex/native/bare/components/sign-up.tsx.hbs +138 -0
  14. package/templates/auth/better-auth/convex/native/uniwind/components/sign-in.tsx.hbs +91 -0
  15. package/templates/auth/better-auth/convex/native/uniwind/components/sign-up.tsx.hbs +102 -0
  16. package/templates/auth/better-auth/native/bare/app/(drawer)/index.tsx.hbs +186 -0
  17. package/templates/auth/better-auth/native/bare/components/sign-in.tsx.hbs +131 -0
  18. package/templates/auth/better-auth/native/bare/components/sign-up.tsx.hbs +150 -0
  19. package/templates/auth/better-auth/native/unistyles/app/(drawer)/index.tsx.hbs +9 -1
  20. package/templates/auth/better-auth/native/unistyles/components/sign-in.tsx.hbs +5 -0
  21. package/templates/auth/better-auth/native/unistyles/components/sign-up.tsx.hbs +5 -0
  22. package/templates/auth/better-auth/native/uniwind/app/(drawer)/index.tsx.hbs +123 -0
  23. package/templates/auth/better-auth/native/uniwind/components/sign-in.tsx.hbs +90 -0
  24. package/templates/auth/better-auth/native/uniwind/components/sign-up.tsx.hbs +116 -0
  25. package/templates/auth/better-auth/server/base/src/index.ts.hbs +5 -5
  26. package/templates/auth/better-auth/server/base/tsconfig.json.hbs +1 -1
  27. package/templates/backend/server/base/tsconfig.json.hbs +1 -1
  28. package/templates/db/base/tsconfig.json.hbs +1 -1
  29. package/templates/examples/ai/native/bare/app/(drawer)/ai.tsx.hbs +287 -0
  30. package/templates/examples/ai/native/{nativewind → bare}/polyfills.js +1 -0
  31. package/templates/examples/ai/native/{nativewind → uniwind}/app/(drawer)/ai.tsx.hbs +52 -51
  32. package/templates/examples/ai/native/uniwind/polyfills.js +26 -0
  33. package/templates/examples/todo/native/bare/app/(drawer)/todos.tsx.hbs +521 -0
  34. package/templates/examples/todo/native/uniwind/app/(drawer)/todos.tsx.hbs +295 -0
  35. package/templates/extras/bunfig.toml.hbs +3 -3
  36. package/templates/frontend/native/bare/_gitignore +18 -0
  37. package/templates/frontend/native/{nativewind → bare}/app/(drawer)/(tabs)/_layout.tsx.hbs +7 -12
  38. package/templates/frontend/native/bare/app/(drawer)/(tabs)/index.tsx.hbs +43 -0
  39. package/templates/frontend/native/bare/app/(drawer)/(tabs)/two.tsx.hbs +43 -0
  40. package/templates/frontend/native/{nativewind → bare}/app/(drawer)/_layout.tsx.hbs +24 -1
  41. package/templates/frontend/native/bare/app/(drawer)/index.tsx.hbs +234 -0
  42. package/templates/frontend/native/bare/app/+not-found.tsx.hbs +65 -0
  43. package/templates/frontend/native/bare/app/_layout.tsx.hbs +163 -0
  44. package/templates/frontend/native/bare/app/modal.tsx.hbs +34 -0
  45. package/templates/frontend/native/{nativewind → bare}/app.json.hbs +1 -0
  46. package/templates/frontend/native/bare/components/container.tsx.hbs +25 -0
  47. package/templates/frontend/native/bare/components/header-button.tsx.hbs +47 -0
  48. package/templates/frontend/native/{nativewind → bare}/components/tabbar-icon.tsx.hbs +1 -0
  49. package/templates/frontend/native/{nativewind → bare}/lib/android-navigation-bar.tsx.hbs +1 -0
  50. package/templates/frontend/native/{nativewind → bare}/lib/constants.ts.hbs +1 -0
  51. package/templates/frontend/native/bare/lib/use-color-scheme.ts.hbs +20 -0
  52. package/templates/frontend/native/bare/metro.config.js.hbs +9 -0
  53. package/templates/frontend/native/{nativewind → bare}/package.json.hbs +1 -2
  54. package/templates/frontend/native/bare/tsconfig.json.hbs +11 -0
  55. package/templates/frontend/native/{nativewind → uniwind}/_gitignore +4 -8
  56. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/_layout.tsx.hbs +46 -0
  57. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/index.tsx.hbs +15 -0
  58. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/two.tsx.hbs +15 -0
  59. package/templates/frontend/native/uniwind/app/(drawer)/_layout.tsx.hbs +83 -0
  60. package/templates/frontend/native/uniwind/app/(drawer)/index.tsx.hbs +151 -0
  61. package/templates/frontend/native/uniwind/app/+not-found.tsx.hbs +32 -0
  62. package/templates/frontend/native/uniwind/app/_layout.tsx.hbs +131 -0
  63. package/templates/frontend/native/uniwind/app/modal.tsx.hbs +53 -0
  64. package/templates/frontend/native/uniwind/app.json.hbs +19 -0
  65. package/templates/frontend/native/uniwind/components/container.tsx.hbs +33 -0
  66. package/templates/frontend/native/uniwind/components/theme-toggle.tsx.hbs +35 -0
  67. package/templates/frontend/native/uniwind/contexts/app-theme-context.tsx.hbs +62 -0
  68. package/templates/frontend/native/uniwind/global.css +5 -0
  69. package/templates/frontend/native/uniwind/metro.config.js.hbs +13 -0
  70. package/templates/frontend/native/uniwind/package.json.hbs +54 -0
  71. package/templates/frontend/native/{nativewind → uniwind}/tsconfig.json.hbs +4 -8
  72. package/templates/packages/config/package.json.hbs +5 -0
  73. package/templates/auth/better-auth/convex/native/nativewind/components/sign-in.tsx.hbs +0 -86
  74. package/templates/auth/better-auth/convex/native/nativewind/components/sign-up.tsx.hbs +0 -97
  75. package/templates/auth/better-auth/native/nativewind/app/(drawer)/index.tsx.hbs +0 -95
  76. package/templates/auth/better-auth/native/nativewind/components/sign-in.tsx.hbs +0 -93
  77. package/templates/auth/better-auth/native/nativewind/components/sign-up.tsx.hbs +0 -104
  78. package/templates/base/tsconfig.json.hbs +0 -3
  79. package/templates/examples/todo/native/nativewind/app/(drawer)/todos.tsx.hbs +0 -295
  80. package/templates/frontend/native/nativewind/app/(drawer)/(tabs)/index.tsx.hbs +0 -19
  81. package/templates/frontend/native/nativewind/app/(drawer)/(tabs)/two.tsx.hbs +0 -19
  82. package/templates/frontend/native/nativewind/app/(drawer)/index.tsx.hbs +0 -178
  83. package/templates/frontend/native/nativewind/app/+not-found.tsx.hbs +0 -29
  84. package/templates/frontend/native/nativewind/app/_layout.tsx.hbs +0 -175
  85. package/templates/frontend/native/nativewind/app/modal.tsx.hbs +0 -14
  86. package/templates/frontend/native/nativewind/babel.config.js.hbs +0 -14
  87. package/templates/frontend/native/nativewind/components/container.tsx.hbs +0 -8
  88. package/templates/frontend/native/nativewind/components/header-button.tsx.hbs +0 -26
  89. package/templates/frontend/native/nativewind/global.css +0 -50
  90. package/templates/frontend/native/nativewind/lib/use-color-scheme.ts.hbs +0 -12
  91. package/templates/frontend/native/nativewind/metro.config.js.hbs +0 -12
  92. package/templates/frontend/native/nativewind/tailwind.config.js.hbs +0 -59
  93. /package/templates/auth/clerk/convex/native/base/app/(auth)/{sign-out.tsx.hbs → sign-up.tsx.hbs} +0 -0
  94. /package/templates/{base → packages/config}/tsconfig.base.json.hbs +0 -0
package/README.md CHANGED
@@ -57,7 +57,7 @@ Options:
57
57
  --orm <type> ORM type (none, drizzle, prisma, mongoose)
58
58
  --auth Include authentication
59
59
  --no-auth Exclude authentication
60
- --frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-nativewind, native-unistyles, none)
60
+ --frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-bare, native-uniwind, native-unistyles, none)
61
61
  --addons <types...> Additional addons (pwa, tauri, starlight, biome, husky, turborepo, fumadocs, ultracite, oxlint, none)
62
62
  --examples <types...> Examples to include (todo, ai, none)
63
63
  --git Initialize git repository
@@ -119,7 +119,7 @@ npx create-better-t-stack my-app --backend elysia --runtime node
119
119
  Create a project with multiple frontend options (one web + one native):
120
120
 
121
121
  ```bash
122
- npx create-better-t-stack my-app --frontend tanstack-router native-nativewind
122
+ npx create-better-t-stack my-app --frontend tanstack-router native-bare
123
123
  ```
124
124
 
125
125
  Create a project with examples:
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as createBtsCli } from "./src-Cx7HDf0b.js";
2
+ import { n as createBtsCli } from "./src-oHcpd_LW.js";
3
3
 
4
4
  //#region src/cli.ts
5
5
  createBtsCli().run();
package/dist/index.d.ts CHANGED
@@ -43,7 +43,8 @@ declare const FrontendSchema: z.ZodEnum<{
43
43
  "tanstack-start": "tanstack-start";
44
44
  next: "next";
45
45
  nuxt: "nuxt";
46
- "native-nativewind": "native-nativewind";
46
+ "native-bare": "native-bare";
47
+ "native-uniwind": "native-uniwind";
47
48
  "native-unistyles": "native-unistyles";
48
49
  svelte: "svelte";
49
50
  solid: "solid";
@@ -242,7 +243,8 @@ declare const router: {
242
243
  "tanstack-start": "tanstack-start";
243
244
  next: "next";
244
245
  nuxt: "nuxt";
245
- "native-nativewind": "native-nativewind";
246
+ "native-bare": "native-bare";
247
+ "native-uniwind": "native-uniwind";
246
248
  "native-unistyles": "native-unistyles";
247
249
  svelte: "svelte";
248
250
  solid: "solid";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import { a as router, i as init, n as createBtsCli, o as sponsors, r as docs, t as builder } from "./src-Cx7HDf0b.js";
2
+ import { a as router, i as init, n as createBtsCli, o as sponsors, r as docs, t as builder } from "./src-oHcpd_LW.js";
3
3
 
4
4
  export { builder, createBtsCli, docs, init, router, sponsors };
@@ -146,7 +146,7 @@ const dependencyVersionMap = {
146
146
  "nitro-cloudflare-dev": "^0.2.2",
147
147
  "@sveltejs/adapter-cloudflare": "^7.2.1",
148
148
  "@cloudflare/workers-types": "^4.20250822.0",
149
- alchemy: "^0.75.1",
149
+ alchemy: "^0.77.0",
150
150
  dotenv: "^17.2.2",
151
151
  tsdown: "^0.15.5",
152
152
  zod: "^4.1.11",
@@ -216,7 +216,8 @@ const FrontendSchema = z.enum([
216
216
  "tanstack-start",
217
217
  "next",
218
218
  "nuxt",
219
- "native-nativewind",
219
+ "native-bare",
220
+ "native-uniwind",
220
221
  "native-unistyles",
221
222
  "svelte",
222
223
  "solid",
@@ -337,13 +338,13 @@ function isWebFrontend(value) {
337
338
  function splitFrontends(values = []) {
338
339
  return {
339
340
  web: values.filter((f) => isWebFrontend(f)),
340
- native: values.filter((f) => f === "native-nativewind" || f === "native-unistyles")
341
+ native: values.filter((f) => f === "native-bare" || f === "native-uniwind" || f === "native-unistyles")
341
342
  };
342
343
  }
343
344
  function ensureSingleWebAndNative(frontends) {
344
345
  const { web, native } = splitFrontends(frontends);
345
346
  if (web.length > 1) exitWithError("Cannot select multiple web frameworks. Choose only one of: tanstack-router, tanstack-start, react-router, next, nuxt, svelte, solid");
346
- if (native.length > 1) exitWithError("Cannot select multiple native frameworks. Choose only one of: native-nativewind, native-unistyles");
347
+ if (native.length > 1) exitWithError("Cannot select multiple native frameworks. Choose only one of: native-bare, native-uniwind, native-unistyles");
347
348
  }
348
349
  const FULLSTACK_FRONTENDS$1 = ["next", "tanstack-start"];
349
350
  function validateSelfBackendCompatibility(providedFlags, options, config) {
@@ -352,7 +353,7 @@ function validateSelfBackendCompatibility(providedFlags, options, config) {
352
353
  if (backend === "self") {
353
354
  const { web, native } = splitFrontends(frontends);
354
355
  if (!(web.length === 1 && FULLSTACK_FRONTENDS$1.includes(web[0]))) exitWithError("Backend 'self' (fullstack) currently only supports Next.js and TanStack Start frontends. Please use --frontend next or --frontend tanstack-start. Support for Nuxt and SvelteKit will be added in a future update.");
355
- if (native.length > 1) exitWithError("Cannot select multiple native frameworks. Choose only one of: native-nativewind, native-unistyles");
356
+ if (native.length > 1) exitWithError("Cannot select multiple native frameworks. Choose only one of: native-bare, native-uniwind, native-unistyles");
356
357
  }
357
358
  const hasFullstackFrontend = frontends.some((f) => FULLSTACK_FRONTENDS$1.includes(f));
358
359
  if (providedFlags.has("backend") && !hasFullstackFrontend && backend === "self") exitWithError("Backend 'self' (fullstack) currently only supports Next.js and TanStack Start frontends. Please use --frontend next or --frontend tanstack-start or choose a different backend. Support for Nuxt and SvelteKit will be added in a future update.");
@@ -622,7 +623,8 @@ async function getAuthChoice(auth, backend, frontend) {
622
623
  "tanstack-router",
623
624
  "tanstack-start",
624
625
  "next",
625
- "native-nativewind",
626
+ "native-bare",
627
+ "native-uniwind",
626
628
  "native-unistyles"
627
629
  ].includes(f));
628
630
  const hasClerkCompatibleFrontends = frontend?.some((f) => [
@@ -630,7 +632,8 @@ async function getAuthChoice(auth, backend, frontend) {
630
632
  "tanstack-router",
631
633
  "tanstack-start",
632
634
  "next",
633
- "native-nativewind",
635
+ "native-bare",
636
+ "native-uniwind",
634
637
  "native-unistyles"
635
638
  ].includes(f));
636
639
  const options = [];
@@ -965,16 +968,24 @@ async function getFrontendChoice(frontendOptions, backend, auth) {
965
968
  if (frontendTypes.includes("native")) {
966
969
  const nativeFramework = await select({
967
970
  message: "Choose native",
968
- options: [{
969
- value: "native-nativewind",
970
- label: "NativeWind",
971
- hint: "Use Tailwind CSS for React Native"
972
- }, {
973
- value: "native-unistyles",
974
- label: "Unistyles",
975
- hint: "Consistent styling for React Native"
976
- }],
977
- initialValue: "native-nativewind"
971
+ options: [
972
+ {
973
+ value: "native-bare",
974
+ label: "Bare",
975
+ hint: "Bare Expo without styling library"
976
+ },
977
+ {
978
+ value: "native-uniwind",
979
+ label: "Uniwind",
980
+ hint: "Use Tailwind CSS for React Native"
981
+ },
982
+ {
983
+ value: "native-unistyles",
984
+ label: "Unistyles",
985
+ hint: "Consistent styling for React Native"
986
+ }
987
+ ],
988
+ initialValue: "native-bare"
978
989
  });
979
990
  if (isCancel(nativeFramework)) return exitCancelled("Operation cancelled");
980
991
  result.push(nativeFramework);
@@ -1733,7 +1744,8 @@ function validateConvexConstraints(config, providedFlags) {
1733
1744
  "tanstack-router",
1734
1745
  "tanstack-start",
1735
1746
  "next",
1736
- "native-nativewind",
1747
+ "native-bare",
1748
+ "native-uniwind",
1737
1749
  "native-unistyles"
1738
1750
  ];
1739
1751
  if (!config.frontend?.some((f) => supportedFrontends.includes(f))) exitWithError("Better-Auth with Convex backend requires a supported frontend (TanStack Router, TanStack Start, Next.js, or Native).");
@@ -2306,7 +2318,8 @@ function getFrameworksFromFrontend(frontend) {
2306
2318
  "tanstack-start": "react",
2307
2319
  next: "next",
2308
2320
  nuxt: "vue",
2309
- "native-nativewind": "react",
2321
+ "native-bare": "react",
2322
+ "native-uniwind": "react",
2310
2323
  "native-unistyles": "react",
2311
2324
  svelte: "svelte",
2312
2325
  solid: "solid"
@@ -2759,7 +2772,8 @@ async function setupFrontendTemplates(projectDir, context) {
2759
2772
  const hasNuxtWeb = context.frontend.includes("nuxt");
2760
2773
  const hasSvelteWeb = context.frontend.includes("svelte");
2761
2774
  const hasSolidWeb = context.frontend.includes("solid");
2762
- const hasNativeWind = context.frontend.includes("native-nativewind");
2775
+ const hasNativeBare = context.frontend.includes("native-bare");
2776
+ const hasNativeUniwind = context.frontend.includes("native-uniwind");
2763
2777
  const hasUnistyles = context.frontend.includes("native-unistyles");
2764
2778
  const isConvex = context.backend === "convex";
2765
2779
  if (hasReactWeb || hasNuxtWeb || hasSvelteWeb || hasSolidWeb) {
@@ -2809,13 +2823,14 @@ async function setupFrontendTemplates(projectDir, context) {
2809
2823
  }
2810
2824
  }
2811
2825
  }
2812
- if (hasNativeWind || hasUnistyles) {
2826
+ if (hasNativeBare || hasNativeUniwind || hasUnistyles) {
2813
2827
  const nativeAppDir = path.join(projectDir, "apps/native");
2814
2828
  await fs.ensureDir(nativeAppDir);
2815
2829
  const nativeBaseCommonDir = path.join(PKG_ROOT, "templates/frontend/native/base");
2816
2830
  if (await fs.pathExists(nativeBaseCommonDir)) await processAndCopyFiles("**/*", nativeBaseCommonDir, nativeAppDir, context);
2817
2831
  let nativeFrameworkPath = "";
2818
- if (hasNativeWind) nativeFrameworkPath = "nativewind";
2832
+ if (hasNativeBare) nativeFrameworkPath = "bare";
2833
+ else if (hasNativeUniwind) nativeFrameworkPath = "uniwind";
2819
2834
  else if (hasUnistyles) nativeFrameworkPath = "unistyles";
2820
2835
  const nativeSpecificDir = path.join(PKG_ROOT, `templates/frontend/native/${nativeFrameworkPath}`);
2821
2836
  if (await fs.pathExists(nativeSpecificDir)) await processAndCopyFiles("**/*", nativeSpecificDir, nativeAppDir, context, true);
@@ -2832,6 +2847,12 @@ async function setupApiPackage(projectDir, context) {
2832
2847
  const apiServerDir = path.join(PKG_ROOT, `templates/api/${context.api}/server`);
2833
2848
  if (await fs.pathExists(apiServerDir)) await processAndCopyFiles("**/*", apiServerDir, apiPackageDir, context);
2834
2849
  }
2850
+ async function setupConfigPackage(projectDir, context) {
2851
+ const configPackageDir = path.join(projectDir, "packages/config");
2852
+ await fs.ensureDir(configPackageDir);
2853
+ const configBaseDir = path.join(PKG_ROOT, "templates/packages/config");
2854
+ if (await fs.pathExists(configBaseDir)) await processAndCopyFiles("**/*", configBaseDir, configPackageDir, context);
2855
+ }
2835
2856
  async function setupDbPackage(projectDir, context) {
2836
2857
  if (context.database === "none" || context.orm === "none") return;
2837
2858
  const dbPackageDir = path.join(projectDir, "packages/db");
@@ -2858,6 +2879,7 @@ async function setupServerApp(projectDir, context) {
2858
2879
  if (await fs.pathExists(frameworkSrcDir)) await processAndCopyFiles("**/*", frameworkSrcDir, serverAppDir, context, true);
2859
2880
  }
2860
2881
  async function setupBackendFramework(projectDir, context) {
2882
+ await setupConfigPackage(projectDir, context);
2861
2883
  if (context.backend === "none") return;
2862
2884
  if (context.backend === "convex") {
2863
2885
  await setupConvexBackend(projectDir, context);
@@ -2889,9 +2911,10 @@ async function setupAuthTemplate(projectDir, context) {
2889
2911
  const hasNuxtWeb = context.frontend.includes("nuxt");
2890
2912
  const hasSvelteWeb = context.frontend.includes("svelte");
2891
2913
  const hasSolidWeb = context.frontend.includes("solid");
2892
- const hasNativeWind = context.frontend.includes("native-nativewind");
2914
+ const hasNativeBare = context.frontend.includes("native-bare");
2915
+ const hasUniwind = context.frontend.includes("native-uniwind");
2893
2916
  const hasUnistyles = context.frontend.includes("native-unistyles");
2894
- const hasNative = hasNativeWind || hasUnistyles;
2917
+ const hasNative = hasNativeBare || hasUniwind || hasUnistyles;
2895
2918
  const authProvider = context.auth;
2896
2919
  if (context.backend === "convex" && authProvider === "clerk") {
2897
2920
  const convexBackendDestDir = path.join(projectDir, "packages/backend");
@@ -2915,11 +2938,10 @@ async function setupAuthTemplate(projectDir, context) {
2915
2938
  if (nativeAppDirExists) {
2916
2939
  const convexClerkNativeBaseSrc = path.join(PKG_ROOT, "templates/auth/clerk/convex/native/base");
2917
2940
  if (await fs.pathExists(convexClerkNativeBaseSrc)) await processAndCopyFiles("**/*", convexClerkNativeBaseSrc, nativeAppDir, context);
2918
- const hasNativeWind$1 = context.frontend.includes("native-nativewind");
2919
- const hasUnistyles$1 = context.frontend.includes("native-unistyles");
2920
2941
  let nativeFrameworkPath = "";
2921
- if (hasNativeWind$1) nativeFrameworkPath = "nativewind";
2922
- else if (hasUnistyles$1) nativeFrameworkPath = "unistyles";
2942
+ if (hasNativeBare) nativeFrameworkPath = "bare";
2943
+ else if (hasUniwind) nativeFrameworkPath = "uniwind";
2944
+ else if (hasUnistyles) nativeFrameworkPath = "unistyles";
2923
2945
  if (nativeFrameworkPath) {
2924
2946
  const convexClerkNativeFrameworkSrc = path.join(PKG_ROOT, `templates/auth/clerk/convex/native/${nativeFrameworkPath}`);
2925
2947
  if (await fs.pathExists(convexClerkNativeFrameworkSrc)) await processAndCopyFiles("**/*", convexClerkNativeFrameworkSrc, nativeAppDir, context);
@@ -2952,7 +2974,8 @@ async function setupAuthTemplate(projectDir, context) {
2952
2974
  const convexBetterAuthNativeBaseSrc = path.join(PKG_ROOT, "templates/auth/better-auth/convex/native/base");
2953
2975
  if (await fs.pathExists(convexBetterAuthNativeBaseSrc)) await processAndCopyFiles("**/*", convexBetterAuthNativeBaseSrc, nativeAppDir, context);
2954
2976
  let nativeFrameworkPath = "";
2955
- if (hasNativeWind) nativeFrameworkPath = "nativewind";
2977
+ if (hasNativeBare) nativeFrameworkPath = "bare";
2978
+ else if (hasUniwind) nativeFrameworkPath = "uniwind";
2956
2979
  else if (hasUnistyles) nativeFrameworkPath = "unistyles";
2957
2980
  if (nativeFrameworkPath) {
2958
2981
  const convexBetterAuthNativeFrameworkSrc = path.join(PKG_ROOT, `templates/auth/better-auth/convex/native/${nativeFrameworkPath}`);
@@ -3011,7 +3034,8 @@ async function setupAuthTemplate(projectDir, context) {
3011
3034
  const authNativeBaseSrc = path.join(PKG_ROOT, `templates/auth/${authProvider}/native/base`);
3012
3035
  if (await fs.pathExists(authNativeBaseSrc)) await processAndCopyFiles("**/*", authNativeBaseSrc, nativeAppDir, context);
3013
3036
  let nativeFrameworkAuthPath = "";
3014
- if (hasNativeWind) nativeFrameworkAuthPath = "nativewind";
3037
+ if (hasNativeBare) nativeFrameworkAuthPath = "bare";
3038
+ else if (hasUniwind) nativeFrameworkAuthPath = "uniwind";
3015
3039
  else if (hasUnistyles) nativeFrameworkAuthPath = "unistyles";
3016
3040
  if (nativeFrameworkAuthPath) {
3017
3041
  const authNativeFrameworkSrc = path.join(PKG_ROOT, `templates/auth/${authProvider}/native/${nativeFrameworkAuthPath}`);
@@ -3155,11 +3179,13 @@ async function setupExamplesTemplate(projectDir, context) {
3155
3179
  }
3156
3180
  }
3157
3181
  if (nativeAppDirExists) {
3158
- const hasNativeWind = context.frontend.includes("native-nativewind");
3182
+ const hasNativeBare = context.frontend.includes("native-bare");
3183
+ const hasUniwind = context.frontend.includes("native-uniwind");
3159
3184
  const hasUnistyles = context.frontend.includes("native-unistyles");
3160
- if (hasNativeWind || hasUnistyles) {
3185
+ if (hasNativeBare || hasUniwind || hasUnistyles) {
3161
3186
  let nativeFramework = "";
3162
- if (hasNativeWind) nativeFramework = "nativewind";
3187
+ if (hasNativeBare) nativeFramework = "bare";
3188
+ else if (hasUniwind) nativeFramework = "uniwind";
3163
3189
  else if (hasUnistyles) nativeFramework = "unistyles";
3164
3190
  const exampleNativeSrc = path.join(exampleBaseDir, `native/${nativeFramework}`);
3165
3191
  if (await fs.pathExists(exampleNativeSrc)) await processAndCopyFiles("**/*", exampleNativeSrc, nativeAppDir, context, false);
@@ -3169,9 +3195,10 @@ async function setupExamplesTemplate(projectDir, context) {
3169
3195
  }
3170
3196
  async function handleExtras(projectDir, context) {
3171
3197
  const extrasDir = path.join(PKG_ROOT, "templates/extras");
3172
- const hasNativeWind = context.frontend.includes("native-nativewind");
3198
+ const hasNativeBare = context.frontend.includes("native-bare");
3199
+ const hasUniwind = context.frontend.includes("native-uniwind");
3173
3200
  const hasUnistyles = context.frontend.includes("native-unistyles");
3174
- const hasNative = hasNativeWind || hasUnistyles;
3201
+ const hasNative = hasNativeBare || hasUniwind || hasUnistyles;
3175
3202
  if (context.packageManager === "pnpm") {
3176
3203
  const pnpmWorkspaceSrc = path.join(extrasDir, "pnpm-workspace.yaml");
3177
3204
  const pnpmWorkspaceDest = path.join(projectDir, "pnpm-workspace.yaml");
@@ -4162,7 +4189,7 @@ async function setupExamples(config) {
4162
4189
  const hasSvelte = frontend.includes("svelte");
4163
4190
  const hasReactWeb = frontend.includes("react-router") || frontend.includes("tanstack-router") || frontend.includes("next") || frontend.includes("tanstack-start");
4164
4191
  const hasNext = frontend.includes("next");
4165
- const hasReactNative = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
4192
+ const hasReactNative = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
4166
4193
  if (webClientDirExists) {
4167
4194
  const dependencies = ["ai"];
4168
4195
  if (hasNuxt) dependencies.push("@ai-sdk/vue");
@@ -4207,7 +4234,11 @@ function getFrontendType(frontend) {
4207
4234
  "tanstack-start",
4208
4235
  "next"
4209
4236
  ];
4210
- const nativeFrontends = ["native-nativewind", "native-unistyles"];
4237
+ const nativeFrontends = [
4238
+ "native-bare",
4239
+ "native-uniwind",
4240
+ "native-unistyles"
4241
+ ];
4211
4242
  return {
4212
4243
  hasReactWeb: frontend.some((f) => reactBasedFrontends.includes(f)),
4213
4244
  hasNuxtWeb: frontend.includes("nuxt"),
@@ -4282,13 +4313,14 @@ function getQueryDependencies(frontend) {
4282
4313
  "tanstack-router",
4283
4314
  "tanstack-start",
4284
4315
  "next",
4285
- "native-nativewind",
4316
+ "native-bare",
4317
+ "native-uniwind",
4286
4318
  "native-unistyles"
4287
4319
  ];
4288
4320
  const deps = {};
4289
4321
  if (frontend.some((f) => reactBasedFrontends.includes(f))) {
4290
- const hasReactWeb = frontend.some((f) => f !== "native-nativewind" && f !== "native-unistyles" && reactBasedFrontends.includes(f));
4291
- const hasNative = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
4322
+ const hasReactWeb = frontend.some((f) => f !== "native-bare" && f !== "native-uniwind" && f !== "native-unistyles" && reactBasedFrontends.includes(f));
4323
+ const hasNative = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
4292
4324
  if (hasReactWeb) deps.web = {
4293
4325
  dependencies: ["@tanstack/react-query"],
4294
4326
  devDependencies: ["@tanstack/react-query-devtools"]
@@ -4440,7 +4472,7 @@ async function setupBetterAuthPlugins(projectDir, config) {
4440
4472
  pluginsToAdd.push("nextCookies()");
4441
4473
  importsToAdd.push("import { nextCookies } from \"better-auth/next-js\";");
4442
4474
  }
4443
- if (config.frontend?.includes("native-nativewind") || config.frontend?.includes("native-unistyles")) {
4475
+ if (config.frontend?.includes("native-bare") || config.frontend?.includes("native-uniwind") || config.frontend?.includes("native-unistyles")) {
4444
4476
  pluginsToAdd.push("expo()");
4445
4477
  importsToAdd.push("import { expo } from \"@better-auth/expo\";");
4446
4478
  }
@@ -4497,7 +4529,7 @@ async function setupAuth(config) {
4497
4529
  if (auth === "better-auth") {
4498
4530
  const convexBackendDir = path.join(projectDir, "packages/backend");
4499
4531
  const convexBackendDirExists = await fs.pathExists(convexBackendDir);
4500
- const hasNativeForBA = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
4532
+ const hasNativeForBA = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
4501
4533
  if (convexBackendDirExists) {
4502
4534
  await addPackageDependency({
4503
4535
  dependencies: ["better-auth", "@convex-dev/better-auth"],
@@ -4530,9 +4562,10 @@ async function setupAuth(config) {
4530
4562
  projectDir: clientDir
4531
4563
  });
4532
4564
  }
4533
- const hasNativeWind$1 = frontend.includes("native-nativewind");
4565
+ const hasNativeBare$1 = frontend.includes("native-bare");
4566
+ const hasNativeUniwind$1 = frontend.includes("native-uniwind");
4534
4567
  const hasUnistyles$1 = frontend.includes("native-unistyles");
4535
- if (nativeDirExists && (hasNativeWind$1 || hasUnistyles$1)) await addPackageDependency({
4568
+ if (nativeDirExists && (hasNativeBare$1 || hasNativeUniwind$1 || hasUnistyles$1)) await addPackageDependency({
4536
4569
  dependencies: [
4537
4570
  "better-auth",
4538
4571
  "@better-auth/expo",
@@ -4545,9 +4578,10 @@ async function setupAuth(config) {
4545
4578
  projectDir: nativeDir
4546
4579
  });
4547
4580
  }
4548
- const hasNativeWind = frontend.includes("native-nativewind");
4581
+ const hasNativeBare = frontend.includes("native-bare");
4582
+ const hasNativeUniwind = frontend.includes("native-uniwind");
4549
4583
  const hasUnistyles = frontend.includes("native-unistyles");
4550
- if (auth === "clerk" && nativeDirExists && (hasNativeWind || hasUnistyles)) await addPackageDependency({
4584
+ if (auth === "clerk" && nativeDirExists && (hasNativeBare || hasNativeUniwind || hasUnistyles)) await addPackageDependency({
4551
4585
  dependencies: ["@clerk/clerk-expo"],
4552
4586
  projectDir: nativeDir
4553
4587
  });
@@ -4573,7 +4607,7 @@ async function setupAuth(config) {
4573
4607
  projectDir: clientDir
4574
4608
  });
4575
4609
  }
4576
- if ((frontend.includes("native-nativewind") || frontend.includes("native-unistyles")) && nativeDirExists) {
4610
+ if ((frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles")) && nativeDirExists) {
4577
4611
  if (auth === "better-auth") {
4578
4612
  await addPackageDependency({
4579
4613
  dependencies: ["better-auth", "@better-auth/expo"],
@@ -4740,7 +4774,7 @@ async function setupEnvironmentVariables(config) {
4740
4774
  await addEnvVariablesToFile(path.join(clientDir, ".env"), clientVars);
4741
4775
  }
4742
4776
  }
4743
- if (frontend.includes("native-nativewind") || frontend.includes("native-unistyles")) {
4777
+ if (frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles")) {
4744
4778
  const nativeDir = path.join(projectDir, "apps/native");
4745
4779
  if (await fs.pathExists(nativeDir)) {
4746
4780
  let envVarName = "EXPO_PUBLIC_SERVER_URL";
@@ -4773,7 +4807,7 @@ async function setupEnvironmentVariables(config) {
4773
4807
  const convexBackendDir = path.join(projectDir, "packages/backend");
4774
4808
  if (await fs.pathExists(convexBackendDir)) {
4775
4809
  const envLocalPath = path.join(convexBackendDir, ".env.local");
4776
- const hasNative = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
4810
+ const hasNative = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
4777
4811
  const hasWeb = hasWebFrontend$1;
4778
4812
  if (!await fs.pathExists(envLocalPath) || !(await fs.readFile(envLocalPath, "utf8")).includes("npx convex env set")) {
4779
4813
  const convexCommands = `# Set Convex environment variables
@@ -6082,7 +6116,7 @@ function generateReadmeContent(options) {
6082
6116
  const { projectName, packageManager, database, auth, addons = [], orm = "drizzle", runtime = "bun", frontend = ["tanstack-router"], backend = "hono", api = "trpc", webDeploy, serverDeploy } = options;
6083
6117
  const isConvex = backend === "convex";
6084
6118
  const hasReactRouter = frontend.includes("react-router");
6085
- const hasNative = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
6119
+ const hasNative = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
6086
6120
  const hasSvelte = frontend.includes("svelte");
6087
6121
  const packageManagerRunCmd = `${packageManager} run`;
6088
6122
  let webPort = "3001";
@@ -6208,7 +6242,7 @@ function generateProjectStructure(projectName, frontend, backend, addons, isConv
6208
6242
  else structure.push(`│ ├── web/ # Frontend application (${frontendType})`);
6209
6243
  }
6210
6244
  }
6211
- if (frontend.includes("native-nativewind") || frontend.includes("native-unistyles")) if (isBackendSelf) structure.push("│ ├── native/ # Mobile application (React Native, Expo)");
6245
+ if (frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles")) if (isBackendSelf) structure.push("│ ├── native/ # Mobile application (React Native, Expo)");
6212
6246
  else structure.push("│ ├── native/ # Mobile application (React Native, Expo)");
6213
6247
  if (addons.includes("starlight")) if (isBackendSelf) structure.push("│ ├── docs/ # Documentation site (Astro Starlight)");
6214
6248
  else structure.push("│ ├── docs/ # Documentation site (Astro Starlight)");
@@ -6237,7 +6271,7 @@ function generateFeaturesList(database, auth, addons, orm, runtime, frontend, ba
6237
6271
  const isBackendNone = backend === "none";
6238
6272
  const hasTanstackRouter = frontend.includes("tanstack-router");
6239
6273
  const hasReactRouter = frontend.includes("react-router");
6240
- const hasNative = frontend.includes("native-nativewind") || frontend.includes("native-unistyles");
6274
+ const hasNative = frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
6241
6275
  const hasNext = frontend.includes("next");
6242
6276
  const hasTanstackStart = frontend.includes("tanstack-start");
6243
6277
  const hasSvelte = frontend.includes("svelte");
@@ -6516,7 +6550,7 @@ async function displayPostInstallInstructions(config) {
6516
6550
  const databaseInstructions = !isConvex && database !== "none" ? await getDatabaseInstructions(database, orm, runCmd, runtime, dbSetup, serverDeploy, backend) : "";
6517
6551
  const tauriInstructions = addons?.includes("tauri") ? getTauriInstructions(runCmd) : "";
6518
6552
  const lintingInstructions = hasHuskyOrBiome ? getLintingInstructions(runCmd) : "";
6519
- const nativeInstructions = frontend?.includes("native-nativewind") || frontend?.includes("native-unistyles") ? getNativeInstructions(isConvex, isBackendSelf, frontend || []) : "";
6553
+ const nativeInstructions = frontend?.includes("native-bare") || frontend?.includes("native-uniwind") || frontend?.includes("native-unistyles") ? getNativeInstructions(isConvex, isBackendSelf, frontend || []) : "";
6520
6554
  const pwaInstructions = addons?.includes("pwa") && frontend?.includes("react-router") ? getPwaInstructions() : "";
6521
6555
  const starlightInstructions = addons?.includes("starlight") ? getStarlightInstructions(runCmd) : "";
6522
6556
  const clerkInstructions = isConvex && config.auth === "clerk" ? getClerkInstructions() : "";
@@ -6532,13 +6566,12 @@ async function displayPostInstallInstructions(config) {
6532
6566
  "svelte",
6533
6567
  "solid"
6534
6568
  ].includes(f));
6535
- const hasNative = frontend?.includes("native-nativewind") || frontend?.includes("native-unistyles");
6569
+ const hasNative = frontend?.includes("native-bare") || frontend?.includes("native-uniwind") || frontend?.includes("native-unistyles");
6536
6570
  const bunWebNativeWarning = packageManager === "bun" && hasNative && hasWeb ? getBunWebNativeWarning() : "";
6537
6571
  const noOrmWarning = !isConvex && database !== "none" && orm === "none" ? getNoOrmWarning() : "";
6538
6572
  const hasReactRouter = frontend?.includes("react-router");
6539
6573
  const hasSvelte = frontend?.includes("svelte");
6540
6574
  const webPort = hasReactRouter || hasSvelte ? "5173" : "3001";
6541
- const tazeCommand = getPackageExecutionCommand(packageManager, "taze -r");
6542
6575
  let output = `${pc.bold("Next steps")}\n${pc.cyan("1.")} ${cdCmd}\n`;
6543
6576
  let stepCounter = 2;
6544
6577
  if (!depsInstalled) output += `${pc.cyan(`${stepCounter++}.`)} ${packageManager} install\n`;
@@ -6578,8 +6611,7 @@ async function displayPostInstallInstructions(config) {
6578
6611
  if (polarInstructions) output += `\n${polarInstructions.trim()}\n`;
6579
6612
  if (noOrmWarning) output += `\n${noOrmWarning.trim()}\n`;
6580
6613
  if (bunWebNativeWarning) output += `\n${bunWebNativeWarning.trim()}\n`;
6581
- output += `\n${pc.bold("Update all dependencies:\n")}${pc.cyan(tazeCommand)}\n\n`;
6582
- output += `${pc.bold("Like Better-T-Stack?")} Please consider giving us a star\n on GitHub:\n`;
6614
+ output += `\n${pc.bold("Like Better-T-Stack?")} Please consider giving us a star\n on GitHub:\n`;
6583
6615
  output += pc.cyan("https://github.com/AmanVarshney01/create-better-t-stack");
6584
6616
  consola$1.box(output);
6585
6617
  }
@@ -6687,10 +6719,14 @@ async function setupWorkspaceDependencies(projectDir, options) {
6687
6719
  const workspaceVersion = options.packageManager === "npm" ? "*" : "workspace:*";
6688
6720
  const commonDeps = ["dotenv", "zod"];
6689
6721
  const commonDevDeps = ["tsdown"];
6722
+ const configPackageDir = path.join(projectDir, "packages/config");
6723
+ const configDep = {};
6724
+ if (await fs.pathExists(configPackageDir)) configDep[`@${projectName}/config`] = workspaceVersion;
6690
6725
  const dbPackageDir = path.join(projectDir, "packages/db");
6691
6726
  if (await fs.pathExists(dbPackageDir)) await addPackageDependency({
6692
6727
  dependencies: commonDeps,
6693
6728
  devDependencies: commonDevDeps,
6729
+ customDevDependencies: configDep,
6694
6730
  projectDir: dbPackageDir
6695
6731
  });
6696
6732
  const authPackageDir = path.join(projectDir, "packages/auth");
@@ -6701,6 +6737,7 @@ async function setupWorkspaceDependencies(projectDir, options) {
6701
6737
  dependencies: commonDeps,
6702
6738
  devDependencies: commonDevDeps,
6703
6739
  customDependencies: authDeps,
6740
+ customDevDependencies: configDep,
6704
6741
  projectDir: authPackageDir
6705
6742
  });
6706
6743
  }
@@ -6713,6 +6750,7 @@ async function setupWorkspaceDependencies(projectDir, options) {
6713
6750
  dependencies: commonDeps,
6714
6751
  devDependencies: commonDevDeps,
6715
6752
  customDependencies: apiDeps,
6753
+ customDevDependencies: configDep,
6716
6754
  projectDir: apiPackageDir
6717
6755
  });
6718
6756
  }
@@ -6726,6 +6764,7 @@ async function setupWorkspaceDependencies(projectDir, options) {
6726
6764
  dependencies: commonDeps,
6727
6765
  devDependencies: commonDevDeps,
6728
6766
  customDependencies: serverDeps,
6767
+ customDevDependencies: configDep,
6729
6768
  projectDir: serverPackageDir
6730
6769
  });
6731
6770
  }
@@ -6736,6 +6775,7 @@ async function setupWorkspaceDependencies(projectDir, options) {
6736
6775
  if (options.auth !== "none" && await fs.pathExists(authPackageDir)) webDeps[`@${projectName}/auth`] = workspaceVersion;
6737
6776
  if (Object.keys(webDeps).length > 0) await addPackageDependency({
6738
6777
  customDependencies: webDeps,
6778
+ customDevDependencies: configDep,
6739
6779
  projectDir: webPackageDir
6740
6780
  });
6741
6781
  }
@@ -6745,6 +6785,7 @@ async function setupWorkspaceDependencies(projectDir, options) {
6745
6785
  if (options.api !== "none" && await fs.pathExists(apiPackageDir)) nativeDeps[`@${projectName}/api`] = workspaceVersion;
6746
6786
  if (Object.keys(nativeDeps).length > 0) await addPackageDependency({
6747
6787
  customDependencies: nativeDeps,
6788
+ customDevDependencies: configDep,
6748
6789
  projectDir: nativePackageDir
6749
6790
  });
6750
6791
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-better-t-stack",
3
- "version": "3.2.23",
3
+ "version": "3.4.0",
4
4
  "description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -66,6 +66,11 @@
66
66
  "formatter": {
67
67
  "quoteStyle": "double"
68
68
  }
69
+ },
70
+ "css": {
71
+ "parser": {
72
+ "tailwindDirectives": true
73
+ }
69
74
  }
70
75
  {{#if (or (includes frontend "svelte") (includes frontend "nuxt"))}}
71
76
  ,
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "../../tsconfig.base.json",
2
+ "extends": "@{{projectName}}/config/tsconfig.base.json",
3
3
  "compilerOptions": {
4
4
  "declaration": true,
5
5
  "declarationMap": true,
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": "../../tsconfig.base.json",
2
+ "extends": "@{{projectName}}/config/tsconfig.base.json",
3
3
  "compilerOptions": {
4
4
  "declaration": true,
5
5
  "declarationMap": true,
@@ -1,5 +1,5 @@
1
1
  import { createClient, type GenericCtx } from "@convex-dev/better-auth";
2
- {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
2
+ {{#if (or (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles"))}}
3
3
  import { convex } from "@convex-dev/better-auth/plugins";
4
4
  import { expo } from "@better-auth/expo";
5
5
  {{else}}
@@ -17,7 +17,7 @@ import { v } from "convex/values";
17
17
  {{#if (or (includes frontend "tanstack-start") (includes frontend "next") (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid"))}}
18
18
  const siteUrl = process.env.SITE_URL!;
19
19
  {{/if}}
20
- {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
20
+ {{#if (or (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles"))}}
21
21
  const nativeAppUrl = process.env.NATIVE_APP_URL || "mybettertapp://";
22
22
  {{/if}}
23
23
 
@@ -31,10 +31,10 @@ function createAuth(
31
31
  logger: {
32
32
  disabled: optionsOnly,
33
33
  },
34
- {{#if (and (or (includes frontend "native-nativewind") (includes frontend "native-unistyles")) (or (includes frontend "tanstack-start") (includes frontend "next")))}}
34
+ {{#if (and (or (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles")) (or (includes frontend "tanstack-start") (includes frontend "next")))}}
35
35
  baseURL: siteUrl,
36
36
  trustedOrigins: [siteUrl, nativeAppUrl],
37
- {{else if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
37
+ {{else if (or (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles"))}}
38
38
  trustedOrigins: [nativeAppUrl],
39
39
  {{else if (or (includes frontend "tanstack-start") (includes frontend "next"))}}
40
40
  baseURL: siteUrl,
@@ -48,7 +48,7 @@ function createAuth(
48
48
  requireEmailVerification: false,
49
49
  },
50
50
  plugins: [
51
- {{#if (or (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
51
+ {{#if (or (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles"))}}
52
52
  expo(),
53
53
  {{/if}}
54
54
  {{#if (or (includes frontend "tanstack-router") (includes frontend "react-router") (includes frontend "nuxt") (includes frontend "svelte") (includes frontend "solid"))}}
@@ -3,7 +3,7 @@ import { authComponent, createAuth } from "./auth";
3
3
 
4
4
  const http = httpRouter();
5
5
 
6
- {{#if (or (includes frontend "tanstack-start") (includes frontend "next") (includes frontend "native-nativewind") (includes frontend "native-unistyles"))}}
6
+ {{#if (or (includes frontend "tanstack-start") (includes frontend "next") (includes frontend "native-bare") (includes frontend "native-uniwind") (includes frontend "native-unistyles"))}}
7
7
  authComponent.registerRoutes(http, createAuth);
8
8
  {{else}}
9
9
  authComponent.registerRoutes(http, createAuth, { cors: true });