Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cms Frontend Laravel Package

typo3/cms-frontend

TYPO3 CMS Frontend is the system extension that renders TYPO3 websites: it resolves sites and pages, processes TypoScript and content elements, handles routing and frontend caching, and delivers HTML responses. Essential for building and serving frontend pages with TYPO3.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this package actually is. typo3/cms-frontend is a read-only subtree split of typo3/sysext/frontend from the TYPO3 Core monorepo. It is the request-handling and page-rendering layer of TYPO3: page resolution from the page tree, TypoScript parsing, content element rendering, and Fluid template output. It is not an API package, not a headless content-delivery package, and not a Laravel package. The Dependents: 0 signal is the important one: nothing on Packagist consumes this package directly, because it is only ever installed transitively via the typo3/cms metapackage. Installing it alone yields a non-functional set of classes with no bootstrap, no database schema, and no configuration.

Architecture fit — poor for Laravel-native work, viable only as an external service. The central TPM finding is that Laravel and TYPO3 each ship a competing application kernel. TYPO3 boots via SystemEnvironmentBuilder::run() → Bootstrap::init() → Core\Http\Application → request handlers → page resolver → TypoScript → Fluid. Laravel boots via HTTP kernel → global/web middleware → router → controller → Blade. You cannot nest one inside the other without effectively running two applications in one process. Every integration pattern that looks "clean" on a slide (shared middleware, shared auth, shared ORM) degrades into a bridge layer that only one team understands.

What this package does give you, if you already run TYPO3: the content-modelling engine (flexible content types, page tree, workspaces/versioning, media management, multilingual routing with fallback chains, and a mature page cache). Those are genuinely expensive to rebuild and are the real justification for the acquisition cost. The value is backend content operations, not the frontend code itself.

Licensing is a first-order technical risk, not a legal afterthought. GPL-2.0 in a Laravel project — Laravel is MIT, and most commercial Laravel codebases are proprietary — creates a real derivative-work question that no architecture diagram resolves. Any distribution of the combined application, and arguably any tight in-process linking, obliges you to publish under GPL-2.0. The safe pattern is strict process/service separation (TYPO3 runs as its own GPL-licensed service, Laravel talks to it over HTTP). That constraint should be decided by legal before engineering spends a sprint on a proof of concept.

Technical risk register (TPM view):

Risk Severity Why it matters to the roadmap Mitigation
Two application kernels, one product Critical Every feature needs a decision about which stack owns it; roadmap velocity drops Isolate as separate service on a subdomain; never link in-process
GPL-2.0 contamination Critical Can block distribution, licensing, or M&A diligence Legal review up front; keep it behind a network boundary
Dependency/version deadlock High TYPO3 LTS pins PHP ranges and older Symfony majors; Laravel moves yearly Separate Composer projects, separate containers, pin independently
Dual skill requirement High Hiring and on-call coverage both get harder Budget for a TYPO3 specialist (internal or agency retainer)
Cache incoherence Medium–High TYPO3 page cache vs Laravel cache vs CDN; stale or purged-at-wrong-time content Single cache-invalidation owner; tag-based purge contract
Performance/blast radius Medium One slow TYPO3 render can stall a Laravel page if called synchronously Async fetch + queued refresh + fallback content
Maintenance of a read-only mirror Low It is a Core subtree split, so upgrades come with TYPO3 LTS, not from this package Track TYPO3 LTS release notes, not this repo

Key questions to resolve before committing:

  1. Is the goal headless delivery, legacy migration, or reuse of TYPO3 editorial features? Only the first and third justify the cost; if it is a migration, this package is the thing you are migrating away from.
  2. Who owns the frontend contract — Laravel or TYPO3? If Laravel renders, this package's rendering pipeline is dead weight and you only want the content model, which means you need an API surface (custom middleware or a headless extension), not cms-frontend.
  3. What is the legal position on GPL-2.0 given our distribution model?
  4. Is there already TYPO3 in the estate (skills, licences, hosting, editorial team)? If no, the total cost of ownership is a new CMS platform, not a package adoption.
  5. Is there a date by which the frontend must be on a modern stack? That deadline drives whether this is a bridge (acceptable) or a destination (probably wrong).
  6. What is the exit ramp if the editorial team rejects the tooling or the integration stalls?

Integration Approach

Stack fit. The honest framing for stakeholders: this is a coexistence decision, not an integration decision. Three patterns are available, and they are not equally cheap.

Pattern What it means TPM verdict
A. Reverse-proxy coexistence TYPO3 serves /content and /typo3 (editorial backend); Laravel serves everything else; Nginx routes by path Lowest risk, fastest to value, but user-visible seams (two design systems, two session models) and a shared CDN/cache story to design
B. Headless consumption Laravel owns 100% of rendering; fetches content from TYPO3 over a JSON API Best long-term architecture; but this package does not deliver the API — you must build or buy one, which is the real project
C. In-process embedding Load TYPO3 inside Laravel (shared DB, shared routing) Reject. Kernel collision, GPL exposure, and dependency deadlock make this unmaintainable within two upgrade cycles

Recommend A as the pilot, B as the target, with an explicit gate between them. Pattern A is how you get an editorial team and an engineering team to agree on something within a quarter.

Migration path.

  1. Assessment (1–2 weeks). Inventory the existing Laravel estate: PHP version, Symfony component majors, auth model, deploy target. Confirm whether any TYPO3 exists already. composer why-not typo3/cms will confirm the conflict surface immediately. Output: go/no-go with a costed TCO, not a prototype.
  2. Legal and licensing gate. Before engineering. Decide the boundary model (network-separated service) and document it.
  3. Isolation. TYPO3 in its own container/origin with its own database and its own deploy pipeline. No shared vendor/, no shared Composer project, no shared public/. This single decision eliminates most of the failure modes below.
  4. Contract-first content API. Define the JSON schema the Laravel side will consume (pages, content elements, media, navigation, translations). Build it as TYPO3 middleware or a headless extension. Treat it as a versioned public API with a schema test in CI.
  5. Content migration pilot. One non-critical section (news or blog). Measure editorial workflow in TYPO3 and rendering in Laravel. This is where you learn whether the two-team model is actually workable.
  6. Auth decision. Do not attempt fe_users ↔ Laravel users synchronisation as a first step. Start with public content only; use TYPO3's own frontend-user system for gated TYPO3 content, or issue Laravel tokens and pass them to the API. User-table merging is a multi-quarter trap.
  7. Cut over section by section, with the reverse proxy in front so you can flip ownership per path without a rewrite.

Compatibility notes that will bite.

  • PHP range: TYPO3 LTS releases pin a PHP floor and ceiling; Laravel's annual majors raise the floor. Overlap windows exist but narrow. Run them on different containers so a Laravel upgrade is never blocked by a TYPO3 upgrade and vice versa.
  • Symfony components: TYPO3 historically pins older Symfony majors. Composer will resolve this in a shared project by downgrading something you need. Separate projects solve it; replace directives do not, they merely hide it.
  • Database: tt_content, pages, sys_file* schemas are TYPO3-owned. Never point Eloquent at them. Consume via API.
  • Assets: TYPO3's fileadmin/ and generated typo3temp/ assets need a stable public origin. Do not symlink them into Laravel's public/ — it couples deploys and breaks on containerised filesystems. Serve them from the TYPO3 origin or push to object storage.
  • Routing: keep /typo3/ (TYPO3 backend) and /admin (Laravel) on distinct hostnames or paths at the proxy, or you will debug a 404 that is actually a precedence bug for an afternoon.

Sequencing rule of thumb: solve the content contract before the authentication contract, and the deployment boundary before either. Teams that start with auth and shared databases spend the budget on plumbing.


Operational Impact

Maintenance. You are signing up for two release cadences, two dependency graphs, and two security-patch streams. TYPO3 LTS ships roughly every 18 months with a defined support window; Laravel ships a major annually with ~2 years of fixes. Neither aligns. Practically, this means a standing quarterly line item: align PHP versions, verify the content API contract still holds, re-run the cross-stack smoke tests. Budget it explicitly — teams consistently under-forecast this and it becomes the reason the integration is quietly abandoned in year two.

Support and staffing. The scarcest resource is a person who is comfortable in both TypoScript/Extbase and Laravel/Eloquent. That person is rare and expensive, and if they leave, you have an orphaned integration. Mitigations: (a) contract a TYPO3 agency for the TYPO3 side so Laravel staff never need deep TYPO3 knowledge; (b) keep the content API thin and schema-tested so the boundary is the only thing anyone needs to understand; (c) write the runbook for the boundary, not for TYPO3 internals. Also note: TYPO3's community support channel is Forge and Slack, not the Laravel ecosystem — your normal escalation path does not exist for half the stack.

Scaling. The two halves scale differently and must be scaled independently. TYPO3's page cache is fast but invalidation-driven (content edits purge pages), so it wants a warm cache and a generous memory footprint. Laravel wants horizontal replicas behind a load balancer. Design the content API to be cacheable by URL and taggable by content ID, so a TYPO3 edit can purge the right Laravel/CDN keys. Without a tag-based purge contract you get either stale content (bad) or a 5-minute TTL (worse for large sites). Watch the synchronous call path — any Laravel request that renders by calling TYPO3 inline inherits TYPO3's tail latency; prefetch and queue instead.

Failure modes to design against, in likelihood order:

  1. Version deadlock. Laravel 12 requires PHP ≥8.3; the TYPO3 LTS you run caps at 8.1. Deployment freezes. Avoid by: separate containers, pinned independently, upgrade plan reviewed at each LTS.
  2. Cache incoherence. Editor publishes, frontend still serves the old page for an hour. This is the #1 user-visible failure in hybrid CMS deployments. Avoid by: explicit purge contract, monitored cache-hit-ratio and staleness dashboards.
  3. Asset path breakage after a TYPO3 upgrade or storage change. Images 404 across the whole site. Avoid by: asset origin treated as an external dependency with its own health check.
  4. Auth drift. Laravel sessions and TYPO3 fe_users diverge; users see content they should not, or lose it. Avoid by: never merging user tables; single identity issuer.
  5. Route shadowing at the proxy. A new Laravel route collides with a TYPO3 path. Avoid by: proxy config in version control with a route-ownership manifest and a test that asserts each path resolves to the intended origin.
  6. GPL compliance discovered late. Legal halts a launch or blocks a distribution deal. Avoid by: the gate in step 2.
  7. Bus-factor collapse. The one dual-stack engineer leaves. Avoid by: contract-only boundary, agency retainer for TYPO3.

Ramp-up. A Laravel developer needs roughly 2–4 weeks to be productive against the content API boundary (fine), and 2–4 months to be productive in TypoScript/Fluid/Extbase (expensive). Plan the team shape accordingly — the goal is that most engineers only ever touch the boundary. For the pilot, assume 1 TYPO3 specialist + 2 Laravel engineers for a quarter, and treat the second quarter as the real cost once edge cases (translations, workspaces/drafts, media variants, gated content) surface. If the pilot's first section takes more than six weeks end-to-end, that is a signal the boundary is too fat and should be re-cut before scaling to more sections.

Bottom line for the decision record: treat typo3/cms-frontend as a signal that "TYPO3 is in scope", not as an adoptable package. Its value is the TYPO3 content model and editorial tooling; its cost is a second runtime, a GPL boundary, a dual skill set, and a permanent integration tax. Approve it only if TYPO3 already exists in the estate or the editorial requirements genuinely demand its feature set — and only with a network-separated, API-contracted architecture, a named owner for the boundary, and a documented exit ramp (content exported to JSON, frontend rendering already 100% Laravel) so that replacing TYPO3 later is a backend swap rather than a rebuild.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel