diff --git a/apps/web/src/features/homepage/design.tsx b/apps/web/src/features/homepage/design.tsx index 6f0b797ed..7a65b46fb 100644 --- a/apps/web/src/features/homepage/design.tsx +++ b/apps/web/src/features/homepage/design.tsx @@ -91,7 +91,7 @@ const pageLabel = "font-martian font-medium text-[calc(var(--pw)*.045)] leading- /** * 02 Design. The word "Design." changes its type as five templates wipe across the page in turn, then the scene - * zooms out to a contact sheet of all fifteen. The template tabs jump to each wipe. + * zooms out to a contact sheet of illustrative thumbnails. The template tabs jump to each wipe. * * Everything that moves with the scroll sits on its own layer (will-change), and the wipes slide clipped layers * rather than animating clip-path. Otherwise every scrolled frame repaints the whole sticky stage, which Android diff --git a/apps/web/src/features/homepage/sections.tsx b/apps/web/src/features/homepage/sections.tsx index 5b0674d4c..da949372c 100644 --- a/apps/web/src/features/homepage/sections.tsx +++ b/apps/web/src/features/homepage/sections.tsx @@ -5,6 +5,7 @@ import { useLingui } from "@lingui/react"; import { Trans } from "@lingui/react/macro"; import { useQuery } from "@tanstack/react-query"; import { useEffect, useState } from "react"; +import { templateSchema } from "@reactive-resume/schema/templates"; import { Icon } from "@reactive-resume/ui/components/icon"; import { localeSchema } from "@reactive-resume/utils/locale"; import { cn } from "@reactive-resume/utils/style"; @@ -216,7 +217,7 @@ export function Support() { // oxlint-disable-next-line react/purity -- The receipt shows the current calendar date on each render, including after midnight. const receiptDate = new Date(); const nothing = i18n.number(0, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); - const templates = i18n.number(15); + const templates = i18n.number(templateSchema.options.length); const none = t({ message: "none", comment: "Receipt line amount for something Reactive Resume doesn't have, e.g. ads.", diff --git a/docs/changelog/index.mdx b/docs/changelog/index.mdx index 2a8d27958..190f77d52 100644 --- a/docs/changelog/index.mdx +++ b/docs/changelog/index.mdx @@ -4,7 +4,7 @@ description: "Release notes for Reactive Resume covering new features, resume bu rss: true --- - + + + [Read the guide](/guides/creating-an-account) · [Watch on YouTube](https://www.youtube.com/shorts/O3n6_a5N2IA) + + + + + Start from a sample, replace its details, choose a template and download a PDF. + + + + [Read the guide](/getting-started/quickstart) · [Watch on YouTube](https://www.youtube.com/shorts/ufQ_ofhlU8k) + + + + + Bring in a PDF, LinkedIn export or JSON file, then review the imported sections. + + + + [Read the guide](/guides/importing-resumes) · [Watch on YouTube](https://www.youtube.com/shorts/4LoWWE3_Ujc) + + + + + Add an Experience section and fill in your positions, companies and dates. + + + + [Read the guide](/guides/editing-entries) · [Watch on YouTube](https://www.youtube.com/shorts/bYh32r69x3k) + + + + + +## Improve your resume + + + + + See where your resume overflows and use Fit to one page to adjust the design. + + + + [Read the guide](/guides/fitting-content-on-a-page) · [Watch on YouTube](https://www.youtube.com/shorts/yxzyhE5xOhU) + + + + + Find issues on the page and apply fixes to help hiring software read your resume. + + + + [Read the guide](/guides/checking-your-resume) · [Watch on YouTube](https://www.youtube.com/shorts/XUVKGe0UUFY) + + + + + Use the standalone ATS checker to inspect a PDF and see the text software reads. + + + + [Read the guide](/guides/using-the-ats-checker) · [Watch on YouTube](https://www.youtube.com/shorts/AFiIi9w3hO4) + + + + + Connect your own AI provider, ask for a change and review each proposed edit. + + + + [Read the guide](/guides/using-the-assistant) · [Watch on YouTube](https://www.youtube.com/shorts/TN1x7Gb_kxw) + + + + + +## Apply and share + + + + + Copy your resume for a saved job and compare it with the posting in Job match. + + + + [Read the guide](/guides/tailoring-a-resume-for-a-job) · [Watch on YouTube](https://www.youtube.com/shorts/wsVo4ZMxEcE) + + + + + Create a letter, link an application and match the design to your resume. + + + + [Read the guide](/guides/writing-a-cover-letter) · [Watch on YouTube](https://www.youtube.com/shorts/r_rXHZcoTGA) + + + + + Publish a resume link, add a password if needed and see views and downloads. + + + + [Read the guide](/guides/sharing-your-resume-publicly) · [Watch on YouTube](https://www.youtube.com/shorts/zM0gvZJHd34) + + + + + Save a job posting, mark it as applied and keep the version of the resume you sent. + + + + [Read the guide](/guides/tracking-job-applications) · [Watch on YouTube](https://www.youtube.com/shorts/TdbN-oSQ5Ks) + + + + diff --git a/docs/research/reactive-resume-v6-launch-media-2026-10-02.md b/docs/research/reactive-resume-v6-launch-media-2026-10-02.md new file mode 100644 index 000000000..5027af87d --- /dev/null +++ b/docs/research/reactive-resume-v6-launch-media-2026-10-02.md @@ -0,0 +1,93 @@ +# Reactive Resume v6 launch media research + +Research date: 2026-10-02. Question: which media should accompany a founder's organic launch announcement on LinkedIn, X, and Show HN? + +Recommended launch package: **single product image or short PDF document carousel on LinkedIn; product image on the first X post and native demo video as a follow-up; working app/demo link on Show HN, with optional media on the destination.** These are editorial recommendations informed by the evidence, not guaranteed reach rankings. Most observations are from 2025 or early 2026. + +## LinkedIn: evidence and recommendation + +**For a personal founder account, a strong product image or document carousel is the better supported reach default. Native video remains useful for demonstrating the product; there is no reliable evidence here that GIFs win reach.** This is a judgment from the studies below, not a guaranteed algorithm rule. + +### Metricool: personal profiles, with actual impression data + +Released April 14, 2026; 673,658 posts from 63,108 accounts worldwide, comparing January–February 2025 with January–February 2026. First edition including both personal profiles and company pages. [Metricool release and sample](https://metricool.com/press-release-linkedin-study-2026/). + +The personal-profile table on printed page 28 gives these **averages per post**, visually checked against the PDF chart: + +| Format | Impressions | Interactions | Engagement rate | +| ----------------- | ----------: | -----------: | --------------: | +| Document carousel | 1,451.19 | 20.86 | 1.44% | +| Single image | 1,186.74 | 21.51 | 1.81% | +| Text | 1,045.15 | 12.20 | 1.06% | +| Poll | 717.71 | 2.82 | 0.39% | +| Video | 605.57 | 10.87 | 1.80% | +| Multi-image | 338.42 | 12.56 | 3.71% | + +Carousel/image impressions were approximately 2.40×/1.96× video. Multi-image's highest engagement rate coincided with the lowest impressions: engagement does not equal distribution. Impressions count displays, including repeats. Outliers stayed in; zero-impression/zero-interaction posts were excluded. Personal-profile engagement excludes clicks. Means do not isolate format from audience, content, or creator differences. The methodology does not clearly document exclusion of all promoted content. [Metricool study, pp. 28 and 41](https://metricool.com/wp-content/uploads/Linkedin-Study-2026-EN.pdf). + +Personal analytics are restricted to posts published through Metricool, creating selection bias. [Metricool analytics scope](https://help.metricool.com/linkedin-personal-profile-metrics-h3usk). + +### Buffer: engagement evidence, not a LinkedIn reach comparison + +March 2026 report, 52M+ Buffer posts; latest data December 3, 2025. LinkedIn median engagement: carousel **21.77%**, video **7.35%**, image **6.52%**. No LinkedIn format reach table; video-for-reach is explicitly speculation. Profile/page split undisclosed; metrics differ from Metricool. [Buffer report](https://buffer.com/resources/state-of-social-media-engagement-2026/). Companion methodology inconsistently specifies followers as denominator. [Companion page](https://buffer.com/social-media-benchmarks/state-of-social-media-engagement-2026). + +### Socialinsider: company pages only + +Published March 16, 2026, with quarterly updates. Sample: **1.3M posts, 16,645 business pages, January 2024–December 2025**. Main “2026” benchmarks are actually 2025 observations; Q2 2026 engagement is a separate update. + +2025 average engagement by impressions: document **7.00%**, multi-image **6.45%**, video **6.00%**, image **5.30%**. Average impressions for pages with 1–5K followers: document **525**, multi-image **490**, video **355**, image **315**; 5–10K: **550 / 1,210 / 590 / 430** respectively. These support documents or images as plausible alternatives, but cannot establish founder-profile behavior. The prose says multi-image wins for all pages below 50K; its own 1–5K table instead puts documents first. Claimed 36% decline concerns video views, not every format's reach. [Socialinsider original benchmarks and methodology](https://www.socialinsider.io/social-media-benchmarks/linkedin). + +### AuthoredUp: corroborating profile data, with weaker methodological disclosure + +Updated September 2, 2026; **3M+ personal-profile posts, March 2025–February 2026**. Reported reach multipliers relative to each profile's median: document **1.39×**, image **1.20×**, video **0.86×**; engagement multipliers **1.30× / 1.33× / 0.93×**. Images lead below 5K followers; documents lead at 20K–50K and 50K+. This makes a single image especially reasonable for a smaller founder audience. + +Caveats: no account count, uncertainty intervals, fully reproducible aggregation method, or clear reach-field definition. Some prose contradicts tables: polls have higher reach than documents; image engagement multiplier exceeds document. Use reported tables as corroboration, not its universal algorithm explanations. [AuthoredUp format analysis](https://authoredup.com/blog/best-performing-content-on-linkedin). + +The **36,946-video** duration subset reports >3-minute videos at **1.21×** typical video reach, versus 30–60 seconds at **0.95×**. However, its video guide dates the sample March 2025–February 2026, while its format article dates it October 2025–March 2026. This is insufficient justification to lengthen a launch trailer. Length also covaries with topic and creator. [AuthoredUp video analysis](https://authoredup.com/blog/linkedin-video-posts), [conflicting sample window](https://authoredup.com/blog/best-performing-content-on-linkedin). + +### What official LinkedIn guidance establishes + +LinkedIn reported **36% year-over-year growth in video watching** in February 2025. Platform-wide growth does not establish greater reach per launch post. [LinkedIn product announcement](https://www.linkedin.com/pulse/up-36-over-last-year-video-linkedin-booming-time-now-somasundaram-yqbzc/). + +Its March 12, 2026 engineering article describes ranking using professional relevance and historical reading, skips, dwell, likes, comments, and shares. It does not publish a universal media-format multiplier. [LinkedIn feed engineering](https://www.linkedin.com/blog/engineering/feed/engineering-the-next-generation-of-linkedins-feed). + +GIF uploads are supported, but none of the studies above isolates GIF performance. Support is not evidence of superior reach. [LinkedIn supported media](https://www.linkedin.com/help/linkedin/answer/a564109). + +### Practical LinkedIn choice for this launch + +- **Main anniversary post:** use a sharp image showing the actual v6 editor and finished resume. If a carousel is easy to reuse, make a short PDF with a launch cover, editor, templates, and two or three substantial features. Keep the personal six-year story in the caption. Single image is the simplest defensible option; carousel helps readers explore multiple changes. +- **Follow-up demonstration:** upload the existing showreel natively, with a readable cover, captions/on-screen explanation, and useful product action immediately. A suggested 30–60-second cut is an editorial choice for this launch, not a proven LinkedIn optimum. Do not pad it to match a duration benchmark. +- **GIF:** use only if one brief loop explains a feature more clearly. No evidence warrants choosing it for a reach boost. +- **Measure:** impressions/reach, outbound visits, and new signups. Engagement and video views are supporting metrics. A sequential launch and follow-up cannot isolate format effects because timing and audience fatigue differ. + +All quantitative format studies here are observational. They describe their own user samples and dates; none randomly assigns the same Reactive Resume post to video, GIF, and image. + +## X: evidence and recommendation + +Buffer's March 5, 2026 report gives median engagement rates of **3.56% text, 3.40% images, 2.96% video, 2.25% links**. Its primary windows cover 2025, with latest observations through December 3. These are Buffer users' posts and engagement rates, not format-specific reach rankings. The evidence supports images as an engagement default, without proving greater distribution. [Original Buffer report](https://buffer.com/resources/state-of-social-media-engagement-2026/). + +Metricool's 2026 cross-platform study covers **1,123,528 X posts from 15,116 accounts** in 2025. Video average interactions rose from **81.15 to 110.01**. Its X section does not supply a comparable video/image/GIF impression table. Absolute interaction averages cannot settle the reach question or contradict a median engagement-rate comparison by themselves. [Metricool report, pp. 4 and 58–59](https://metricool.com/wp-content/uploads/Social-Media-Study-2026-EN.pdf). + +An older official X Business article reports **55% more engagements for GIF posts versus posts without GIFs**, from an internal study of 3.7M users. It uses 2019 examples, lacks a study window and detailed methodology, and does not compare GIFs against images or videos or measure reach. Treat it as historical marketing evidence, not a 2026 format ranking. [Original X Business article](https://business.x.com/de/blog/6-ways-gifs-twitter-strategy). + +Official X Help says native videos and GIFs both autoplay, subject to viewers' settings; autoplay is not a GIF-only advantage. [X Help](https://help.x.com/en/using-x/x-videos). + +**Practical choice:** attach a readable screenshot or product launch image to the first post. Use a native MP4 demonstration in a follow-up or thread reply. A 15–30-second cut, showing a useful action immediately and understandable without sound, is an editorial suggestion, not a proven optimal duration. GIF is reasonable for one short repeating action; no current primary comparison found establishes it as the reach winner. + +## Show HN: product access matters more than attachment format + +The standard Show HN listing displays titles and links, without native image/video/GIF feed attachments. This is a direct observation of the current first-party interface, not an engagement study. A thumbnail on the destination does not create a thumbnail in this list. [Current Show HN listing](https://news.ycombinator.com/show). + +Show HN's official guidance prioritizes something readers can actually try, preferably without signup/email barriers, and rejects landing-page-only submissions. Major overhauls can qualify; small version updates generally do not. [Show HN guidelines](https://news.ycombinator.com/showhn.html). + +**Practical choice:** submit the working app or accessible demo. Show a clear screenshot and optional short demo video on that destination. Keep the real product easy to reach. No credible controlled media-format reach comparison found for Show HN. + +If the submission links directly to a video, HN asks for **[video]** in the title. Current general guidelines also prohibit generated or AI-edited submissions/comments, so the previous AI-written HN draft should be treated as planning notes; the author should write the final HN text themselves. [HN guidelines](https://news.ycombinator.com/newsguidelines.html). + +## Creative and measurement choices for this launch + +- Make the static asset useful by itself: readable v6 editor and finished resume, product name/version, and a short free/open-source message. These are creative recommendations, not measured guarantees. +- For LinkedIn, distinguish a PDF document carousel from a post containing several separate images; the studies report materially different impression results. +- If using video, upload the file natively on LinkedIn/X, add a cover and captions/on-screen text, and start with the product's useful behavior. Do not require watching a long intro before seeing the app. LinkedIn supports custom thumbnails and captions. [LinkedIn video help](https://www.linkedin.com/help/linkedin/answer/a7174587). +- Compare post impressions, visits to the app, and useful downstream actions such as starting/exporting a resume. Do not treat autoplay video views as equivalent to visitors or unique people reached. +- An image announcement followed by a video demo is a distribution plan, not an A/B experiment: content, time, exposure, and audience differ. diff --git a/packages/pdf/vitest.config.ts b/packages/pdf/vitest.config.ts index f31cc694a..0c702050e 100644 --- a/packages/pdf/vitest.config.ts +++ b/packages/pdf/vitest.config.ts @@ -10,7 +10,7 @@ const config = createVitestProjectConfig({ export default { ...config, // Rendering and rasterizing real PDFs is far slower than Vitest's 5s default: the all-template - // date characterization renders 15 templates in one test, and the picture-fit override case + // date characterization renders every template in one test, and the picture-fit override case // rasterizes twice. Both land within a second or two of the default on a CI runner. test: { ...config.test, testTimeout: 30_000 }, oxc: { jsx: { runtime: "automatic" as const } },