vaadin/hilla
vaadin/hilla has 985 GitHub stars and 78 forks. GitHot measured 0 in 7 days. Last checked 2026-11-09 05:33 UTC. Last push 2026-11-04.
Build better business applications, faster. No more juggling REST endpoints or deciphering GraphQL queries. Hilla seamlessly connects Spring Boot and React to accelerate application development.
Measured star growth
- in 24h
- Update delayed
- in 7 days
- 0
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalHilla integrates a Spring Boot Java backend with a reactive TypeScript front end. It helps you build apps faster with type-safe server communication, included UI components, and integrated tooling.
Simple type-safe server communication
Hilla helps you access the backend easily with type-safe endpoints.
index.ts
// Type info is automatically generated based on Java
import Person from 'Frontend/generated/com/vaadin/hilla/demo/entity/Person';
import { PersonService } from 'Frontend/generated/endpoints';
async function getPeopleWithPhoneNumber() {
const people: Person[] = await PersonService.findAll();
// Compile error: The property is 'phone', not 'phoneNumber'
return people.filter((person) => !!person.phoneNumber);
}
console.log('People with phone numbers: ', getPeopleWithPhoneNumber());
PersonService.java
@BrowserCallable
@AnonymousAllowed
public class PersonService {
private PersonRepository repository;
public PersonService(PersonRepository repository) {
this.repository = repository;
}
public @Nonnull List<@Nonnull Person> findAll() {
return repository.findAll();
}
}
Person.java
@Entity
public class Person {
@Id
@GeneratedValue
private Integer id;
@Nonnull private String firstName;
@Nonnull private String lastName;
@Email @Nonnull private String email;
@Nonnull private String phone;
// getters, setters
}
Learn more at vaadin.com/hilla
Get started
Follow the tutorials at https://vaadin.com/docs/latest/getting-started
Contributing
The best way to contribute is to try out Hilla and provide feedback to the development team in our Forum or with GitHub issues. Those marked with the good first issue label are a good starting point.
Development
If you want to develop Hilla, you can clone the repo and run tests using the following commands:
git clone https://github.com/vaadin/hilla.git
npm install
npm run build
mvn clean spotless:apply install -DskipTests
npm test
mvn verify -Pproduction
What npm run build does, and why it touches the package.json files, is in
scripts/README.md.
You need the following versions of SDKs and tools:
- Node.js:
>= 22 LTS, - npm:
>=10(package-lock.jsonis of version 3) - JDK:
>=17 - Maven:
>=3
Testing changes locally
Java modules are located in ./packages/java. If you make changes to Java code and want to test them in a real application, you can set the Vaadin version to SNAPSHOT in the pom.xml of your application. This requires using the Vaadin pre-release repositories. Make sure to add the following to your pom.xml:
<repositories>
<repository>
<id>vaadin-prereleases</id>
<url>https://maven.vaadin.com/vaadin-prereleases</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>Vaadin Directory</id>
<url>https://maven.vaadin.com/vaadin-addons</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>vaadin-prereleases</id>
<url>https://maven.vaadin.com/vaadin-prereleases</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
TypeScript modules are located in ./packages/ts. If you make changes to the TypeScript code, you can package your changes locally by running the following command in the modified package:
npm run build && npm pack
It will create a .tgz file in the package root. Then, in your application, you can install that package using the following command:
npm install <path-to-tgz>
Remember to delete the line that points to the package in package.json when you are done testing. The next run will add back the corresponding default package.
Explore related projects
freeCodeCamp/freeCodeCamp
freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.
458,929 starsdonnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
377,566 starsreact/react
The library for web and native user interfaces.
252,480 starsvuejs/vue
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
212,624 stars