Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Remove font loading from the library; let apps load their own fonts

Aperta
#855 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
74/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
css, next.js, react, vite

Direzione di ricerca

Inizia da packages/raystack/styles/typography.css e verifica le variabili --rs-font-* che devono rimanere. Individua poi i punti di ingresso della README o della documentazione del progetto e del Changelog/Release Notes menzionati nell’issue, quindi controlla le indicazioni esistenti del package per Vite e Next.js. Il lavoro è completato quando gli import dei font sono stati rimossi, le indicazioni sull’utilizzo coprono entrambi i tipi di app, vengono indicati i font opzionali in stile tradizionale e la migrazione relativa al breaking change è documentata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

BREAKING CHANGE enhancement global

Summary

The library loads fonts itself. packages/raystack/styles/typography.css starts with four Google Fonts @import calls:

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Lora:wght@400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital@0;1&display=swap");

A component library should not decide how or where fonts load. That belongs to the app. We should remove these imports and keep only the --rs-font-* variables (the font-family names), then let each app load the fonts it needs.

Why this is a problem

  • Consumers download fonts they never use. Any app that pulls in Apsara fetches Inter, Lora, Josefin Sans, and JetBrains Mono — even if it only uses Inter. Lora and Josefin Sans only apply under [data-style="traditional"], so most apps pay for them for nothing.
  • @import blocks render. Fonts inside a CSS @import are found late by the browser, which delays paint and causes a flash of unstyled text (FOUT).
  • Extra connections. Each @import needs DNS + TLS to Google's domains before the font even downloads.
  • No control for the app. The app can't preload the font, can't set font-display, and can't self-host. All of that is decided inside the library.
  • Blocks other improvements. We can't cleanly add a 600 weight or use Inter's optical-sizing (opsz) axis, because the library pins the exact Google Fonts URL and weights.

Proposal

  1. Remove the four @import lines from packages/raystack/styles/typography.css.
  2. Keep the --rs-font-* variables (Inter, Lora, Josefin Sans, JetBrains Mono, Menlo) so component styles stay unchanged.
  3. Document how consuming apps load the fonts, for example:
    • Self-host with Fontsource — @fontsource-variable/inter (variable font, all weights from one file).
    • next/font for Next.js apps.
    • A plain @font-face or Google Fonts <link> for apps that want it.
  4. Note the optional families (Lora, Josefin Sans) are only needed for the traditional style.

Breaking change

This is a breaking change. Apps that rely on Apsara loading fonts will render in a fallback font until they load the fonts themselves. The migration is small — install the fonts and import them once at the app entry — but it must be called out in release notes with a clear before/after.

Acceptance criteria

  • No @import of font files in the library CSS.
  • --rs-font-* variables still present; components render identically once the app loads Inter.
  • Docs / README show how to load fonts in a plain Vite app and a Next.js app.
  • Migration note added to the changelog / release notes.
Lingua principale
TypeScript
Stelle
70
Fork
13
Merge medio
4g 6h
PR unite (30g)
10

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di raystack/apsara

Tutte le issue di raystack/apsara

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.